(FR) Introdution au Format de fichier SLA pour Scribus 1.4: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
(Lien)
No edit summary
Line 3: Line 3:
Le format XML de Scribus est assez clair à comprendre et cette étude s'est faite assez simplement par 'rétro engineering'. Les balises XML ont des noms parfois opaques, mais les attributs ont des dénominations plus intuitives, même s'il y a quelques faux amis, et même s'ils sont parfois en anglais et parfois en allemand.  
Le format XML de Scribus est assez clair à comprendre et cette étude s'est faite assez simplement par 'rétro engineering'. Les balises XML ont des noms parfois opaques, mais les attributs ont des dénominations plus intuitives, même s'il y a quelques faux amis, et même s'ils sont parfois en anglais et parfois en allemand.  


Voyez aussi File_Format_Specification_for_Scribus_1.4 pour un descriptif peut être complet des balises et attributs et de leurs valeurs possibles.
Voyez aussi   [[File_Format_Specification_for_Scribus_1.4]] pour un descriptif peut être complet des balises et attributs et de leurs valeurs possibles.


A partir d'un fichier modèle fait avec SCRIBUS il est possible de voir les parties intéressantes, d'y faire des modifs et de vérifier le résultat dans Scribus.
A partir d'un fichier modèle fait avec SCRIBUS il est possible de voir les parties intéressantes, d'y faire des modifs et de vérifier le résultat dans Scribus.

Revision as of 12:01, 28 December 2012

Afin de générer des fichiers SLA dans un programme PHP, j'ai étudié le format SLA de Scribus. Voici les notes qui m'ont permis d'aboutir au résultat voulu. Elles ne portent que sur les éléments qui m'ont été utiles pour ce projet, et ne prétend aucunement à l'exhaustivité.

Le format XML de Scribus est assez clair à comprendre et cette étude s'est faite assez simplement par 'rétro engineering'. Les balises XML ont des noms parfois opaques, mais les attributs ont des dénominations plus intuitives, même s'il y a quelques faux amis, et même s'ils sont parfois en anglais et parfois en allemand.

Voyez aussi File_Format_Specification_for_Scribus_1.4 pour un descriptif peut être complet des balises et attributs et de leurs valeurs possibles.

A partir d'un fichier modèle fait avec SCRIBUS il est possible de voir les parties intéressantes, d'y faire des modifs et de vérifier le résultat dans Scribus.

Après une entête <?xml version="1.0" encoding="UTF-8"?>, un fichier SLA se compose d'une balise DOCUMENT qui comprend

  • la définition de l'environnement (préférences, styles et autres éléments)
  • le contenu lui même.

Attention : les noms des tags et des attribus sont sensibles à la casse. Parfois ils sont en majuscule, parfois ils sont en CamelCase, donc soyez vigilant.

Balise DOCUMENT

Dans le cas d'un format A5, ça donne : <DOCUMENT ANZPAGES="5" PAGEWIDTH="419.527559055118" PAGEHEIGHT="595.275590551181" BORDERLEFT="28.3464566929134" BORDERRIGHT="28.3464566929134" BORDERTOP="34.0157480314961" BORDERBOTTOM="42.5196850393701" PRESET="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" ORIENTATION="0" PAGESIZE="A5" FIRSTNUM="1" BOOK="1" AUTOSPALTEN="1" ABSTSPALTEN="11" UNITS="4" DFONT="Arial Regular" DSIZE="12" DCOL="1" DGAP="0" TabFill="" TabWidth="36" AUTHOR="" COMMENTS="" KEYWORDS="" PUBLISHER="" DOCDATE="" DOCTYPE="" DOCFORMAT="" DOCIDENT="" DOCSOURCE="" DOCLANGINFO="" DOCRELATION="" DOCCOVER="" DOCRIGHTS="" DOCCONTRIB="" TITLE="" SUBJECT="" VHOCH="33" VHOCHSC="66" VTIEF="33" VTIEFSC="66" VKAPIT="75" BASEGRID="14.4" BASEO="0" AUTOL="20" UnderlinePos="-1" UnderlineWidth="-1" StrikeThruPos="-1" StrikeThruWidth="-1" GROUPC="1" HCMS="0" DPSo="0" DPSFo="0" DPuse="0" DPgam="0" DPbla="1" DPMo="sRGB IEC61966-2.1" DPPr="Fogra27L CMYK Coated Press" DPIn="sRGB IEC61966-2.1" DPInCMYK="Fogra27L CMYK Coated Press" DPIn2="sRGB IEC61966-2.1" DPIn3="Fogra27L CMYK Coated Press" DISc="1" DIIm="0" ALAYER="0" LANGUAGE="French" MINWORDLEN="3" HYCOUNT="2" AUTOMATIC="1" AUTOCHECK="0" GUIDELOCK="0" SnapToGuides="0" SnapToGrid="0" MINGRID="20.0012598425197" MAJGRID="100.00062992126" SHOWGRID="0" SHOWGUIDES="1" showcolborders="1" SHOWFRAME="1" SHOWLAYERM="0" SHOWMARGIN="1" SHOWBASE="0" SHOWPICT="1" SHOWControl="0" SHOWLINK="1" rulerMode="1" showrulers="1" showBleed="1" rulerXoffset="0" rulerYoffset="0" GuideRad="10" GRAB="4" POLYC="4" POLYF="0.707106781186548" POLYR="0" POLYCUR="0" POLYFD="0" POLYS="0" AutoSave="1" AutoSaveTime="600000" ScratchBottom="20.0012598425197" ScratchLeft="100.00062992126" ScratchRight="100.00062992126" ScratchTop="20.0012598425197" GapHorizontal="0" GapVertical="39.9996850393701" StartArrow="0" EndArrow="0" PEN="Black" BRUSH="None" PENLINE="Black" PENTEXT="Black" StrokeText="Black" TextBackGround="None" TextLineColor="None" TextBackGroundShade="100" TextLineShade="100" TextPenShade="100" TextStrokeShade="100" STIL="1" STILLINE="1" WIDTH="1" WIDTHLINE="1" PENSHADE="100" LINESHADE="100" BRUSHSHADE="100" MAGMIN="10" MAGMAX="3200" MAGSTEP="200" CPICT="None" PICTSHADE="100" PICTSCX="1" PICTSCY="1" PSCALE="1" PASPECT="1" EmbeddedPath="0" HalfRes="1" dispX="0.0124" dispY="0.0124" constrain="15" MINORC="#00ff00" MAJORC="#00ff00" GuideC="#000080" BaseC="#c0c0c0" GuideZ="10" BACKG="1" PAGEC="#ffffff" MARGC="#0000ff" RANDF="0" currentProfile="PostScript">

C'est effrayant mais en fait il n'y a à comprendre que ce dont on a besoin, qu'il est facile de trouver et d'adapter aux besoins. Par exemple, pour un document d'un autre format que le A5, les dimensions PAGEWIDTH et PAGEHEIGHT seront différentes.

SHOWLINK="1" pour montrer les liens entre linked frames (0 sinon) (très pratique pour élaborer la structure du document) LANGUAGE="French" sert probablement pour les césures et pour le correcteur orthographique si il voulait bien marcher

Environnement

L'environnement comporte les valeurs des préférences :

Je n'ai travaillé que sur les styles et les couleurs. Le reste peut être recopié telquel à partir d'un fichier modèle.

Définition des styles

Ici : définition du style de paragraphe par défaut, d'un style de paragraphe "ParMonstyle" et d'un style de caractère "ChaMonstyle".

<STYLE NAME="Default Paragraph Style" DefaultStyle="1" ALIGN="0" LINESPMode="0" LINESP="9" INDENT="0" RMARGIN="0" FIRST="0" VOR="0" NACH="0" DROP="0" DROPLIN="2" DROPDIST="0"/> <STYLE NAME="ParMonstyle" ALIGN="3" LINESP="8.5" INDENT="11.3385826771654" FIRST="0" VOR="0" CPARENT="ChaMonstyle"/> <CHARSTYLE CNAME="Default Character Style" DefaultStyle="1" FONT="Arial Regular" FONTSIZE="12" FEATURES="inherit" FCOLOR="Black" FSHADE="100" SCOLOR="Black" SSHADE="100" TXTSHX="5" TXTSHY="-5" TXTOUT="1" TXTULP="-0.1" TXTULW="-0.1" TXTSTP="-0.1" TXTSTW="-0.1" SCALEH="100" SCALEV="100" BASEO="0" KERN="0" LANGUAGE="French"/> <CHARSTYLE CNAME="ChaMonstyle" FONT="DejaVu Serif Condensed" FONTSIZE="8" wordTrack="0.9" LANGUAGE="French"/>

ANAME c'est le nom du style.

Pour les styles de paragraphes

CPARENT indique le style de caractère sur lequel est basé le style de paragraphe. Le champ ALIGN vaut : 0 pour un alignement à gauche, 1 pour centré 2 pour aligné à droite 3 pour justifié 4 pour justification totale (yc dernière ligne incomplète) Le champ VOR vaut l'espace avant un paragraphe et le champ NACH vaut l'espace après.

Couleurs

Les couleurs peuvent être en RGB ou en CMJN

en RGB <COLOR NAME="Green" RGB="#00ff00" Spot="0" Register="0"/>

en CMJN <COLOR NAME="couldept01" CMYK="#789abc00" Spot="0" Register="0"/>

Autres définitions de l'environnement

Les autres éléments de l'environnement sont

  • la définition des différents profiles PDFS : <CheckProfile Name="PDF 1.3"...>
  • l'imprimante <Printer.../>
  • les paramètres PDF <PDF.../>
  • les paramétrages de césure <HYPHEN .../>
  • les gabarits <MASTERPAGE.../>
  • le bloc des sections <sections/> contenant la définition de chaque section <section.../>

et quelques autres structures.

Contenu

Le contenu c'est ce qui se voit : les pages qui sont le support du contenu, et le contenu lui même : cadres contenant et texte contenu des cadres.

Il y a aussi les calques <LAYERS...> que je n'ai pas étudié.

Les pages PAGE

Les pages sont définies par des objets <PAGE>

<PAGE PAGEXPOS="519.5" PAGEYPOS="18442.9924" PAGEWIDTH="419.527559055118" PAGEHEIGHT="595.275590551181" BORDERLEFT="28.3464566929134" BORDERRIGHT="28.3464566929134" BORDERTOP="34.0157480314961" BORDERBOTTOM="42.5196850393701" NUM="59" NAM="" MNAM="Normal" Size="A5" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/>

La structure <PAGE...> contient : - leur positionnement PAGEXPOS et PAGEYPOS dans un même espace absolu contenant toutes les pages - leurs dimensions PAGEHEIGHT et PAGEWIDTH. - les marges - leur numéro : NUM etc

Dans l'exemple donné, vu la valeur de PAGEXPOS = 519, c'est une page de droite, et vu que c'est la page NUM=59 la valeur de PAGEYPOS=18442 est très grande.

Les pages sont séparées par un espace à l'écran paramétrable qui compte aussi pour PAGEYPOS.

Les cadres (frames) : PAGEOBJECTS

<PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="535" YPOS="54" WIDTH="375.874" HEIGHT="519" RADRECT="0" FRTYPE="0" CLIPEDIT="1" PWIDTH="1" PCOLOR="None" PCOLOR2="None" COLUMNS="2" COLGAP="8.5039" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="frame0" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0.0282114473731099" gWidth="782.276340162126" gHeight="519" LAYER="0" BOOKMARK="0" NEXTITEM="1" BACKITEM="-1">

  • ANNAME contient le nom du frame visible dans la palette
  • OWNPAGE contient le n° de l'item (doit commencer à 0 sinon plantage de scribus)
  • NEXTITEM contient le n° de l'item linké suivant (qui doit exister sinon plantage) ou -1 sinon
  • BACKITEM contient le n° de l'item linké précédent (qui doit exister sinon plantage) ou -1 sinon
  • XPOS, YPOS : coordonnées absolues depuis le haut gauche de l'espace de la 1ère planche (planche 0 de l'item 0)

Cette doc ne présente que les text frames.

L'élément textuel de base : ITEXT

Le texte apparaît à l'intérieur d'un <PAGEOBJECT>.

Basiquement, sans styles, c'est juste ça : <ITEXT CH="Ici votre texte"/>

Cette balise doit ensuite être suivie par une balise de "fin de paragraphe" <PARA/> ou par <trail/> si c'est la fin du cadre.

S'il y a 2 paragraphes c'est donc :

<ITEXT CH="Ici un premier paragraphe"/> <para/> <ITEXT CH="Ici le 2ème paragraphe"/> <trail/>

Le <para/> contient l'indication du style de paragraphe des ITEXTs précédents:

<ITEXT CH="Ce texte en style paragraghe ParMonstyle"/> <para PARENT="ParMonstyle"/>

Un <trail/> est après tout le texte, juste avant le </PAGEOBJECT>, quand il n'y a pas de <para/> à la fin.

Si il y a des styles de caractères localement sur "Mon texte" en plus du style de paragraphe :

<ITEXT CPARENT="ChaMonstylelocal" CH="Un petit texte stylé"/> <ITEXT CH="et on continue par le style normal du paragraphe"/> <para PARENT="ParMonstyle"/>

ou, avec une couleur :

<ITEXT FONT="Webdings Regular" FCOLOR="monrouge" CH="X"/>

Les caractères spéciaux

  • les doubles quotes dans un texte doivent être échappées en & quot ;

<ITEXT CH="Il a dit & quot ;héhé& quot ;"/>

sinon elles se confondent avec les " de définition des valeurs des attributs dans le XML SLA

  • les < et les > sont échappés en & lt ; et & gt ; pour ne pas interférer avec les définition des balises dans le XML
  • s'il y a un saut de ligne dans une valeur de chaine, il est lu et bien compris par Scribus,

mais c'est sauvegardé ensuite comme un saut de paragraphe (nouveau <para/>)

  • S'il y a des caractères genre dingbats, ils sont insérés directement,

sans décodage. Quand on lit le SLA avec un éditeur de code (ou dans ce wiki), c'est affiché dans la fonte par défaut de l'éditeur, qui parfois affiche le même glyphe, mais pas toujours. <ITEXT FONT="Liberation Mono Regular" CH="►●☻"/> ou <ITEXT FONT="Webdings Regular" CH=""/>

  • les espaces sont des caractères unicodes spéciaux, qui existent ou

n'existent pas dans la police utilisée, sauf l'espace insécable, qui est spécifié par un tag dédié :

           <ITEXT CH="espace cadratin"/>
           <ITEXT CH="espace demicadratin"/>
           <ITEXT CH="espace"/>
           <nbspace/>
           <ITEXT CH="insécable"/>
           <ITEXT CH="espace fine"/>
           <ITEXT CH="espace ultrafine"/>

Certaines polices contiennent une bonne définition pour toutes ces espaces, mais pas toutes, loin de là. Il faut tester avant.