InDesign script om afbeeldingen uit XML te verkleinen

Een inDesign document kun je vullen met XML content. In de XML kunnen verwijzingen naar afbeeldingen staan. Deze worden bij het inladen van de XML automatisch opgehaald. Als deze afbeeldingen groter zijn dan de pagina breedte is de afbeelding niet te zien en valt de tekst die daarna komt weg. Met de script wordt dit probleem opgelost.

Een inDesign document kun je vullen met XML content. In de XML kunnen verwijzingen naar afbeeldingen staan. Deze worden bij het inladen van de XML automatisch opgehaald. Als deze afbeeldingen groter zijn dan de pagina breedte is de afbeelding niet te zien en valt de tekst die daarna komt weg. Met de script wordt dit probleem opgelost.

Demo inDesign script for scaling images

XML voor inDesign

In de XML export uit Publishtool staan vaak verwijzingen naar afbeeldingen. Je kunt de bijbehorende afbeeldingen vanuit Publishtool in een folder downloaden. Op het moment dat de XML in inDesign geïmporteerd wordt worden de afbeeldingen automatisch in de lopende tekst geplaatst. Soms zijn de afbeeldingen te groot en passen ze niet op de pagina. In dat geval zijn de afbeeldingen niet te zien en ook de lopende tekst na de afbeelding is verdwenen.

In de XML kan een verwijzing naar een afbeelding inline (in een paragraaf) of outline (buiten een paragraaf) voorkomen. De XML ziet er als volgt uit:

 <figure aid:pstyle="figure"><img href="file:///images/color-navigation.png" alt="Color navigation" width="310"/> 
<figcaption aid:pstyle="figcaption">Color navigation in a coordinate system </figcaption></figure> 

<p aid:pstyle="p"><fig type="inline" aid:cstyle="fig"><img href="file:///images/dna-plastiek-koe.png" width="310"/> 
<figcaption aid:pstyle="figcaption">Match DNA profile with a cow</figcaption></fig><fig type="inline" aid:pstyle="fig"><img href="file:///images/dna-mondriaan-bloeiende-boom.png" width="310"/> 
<figcaption aid:pstyle="figcaption">Match DNA profile with a painting</figcaption></fig></p>

<p aid:pstyle="p"><img-left aid:cstyle="img-left" type="inline"><img href="file:///images/avatar.png" width="100" height="100"/></img-left>Text</p>

<math aid:pstyle="math"><Table aid:table="table" aid:trows="1" aid:tcols="2" aid5:tablestyle="equation"><Cell aid:table="cell" aid5:cellstyle="eq" aid:crows="1" aid:ccols="1" aid:ccolwidth="460.00"><eq><img href="file:///math/tex-57w2bC.pdf" width="144%"/></eq></Cell><Cell aid:table="cell" aid5:cellstyle="eq_nr" aid:crows="1" aid:ccols="1" aid:ccolwidth="60.00"><p_eq_nr aid:pstyle="p_eq_nr"/></Cell></Table></math>
 
<p aid:pstyle="p">Dit symbool is <symbol aid:cstyle="symbol"><img href="file:///symbol/tex-55pkL7.pdf" width="144%"/></symbol> lambda</p>

Script om breedte van afbeeldingen aan te passen aan pagina breedte

Ik heb een script voor inDesign geschreven die een object style aan de afbeeldingen koppelt en de afbeeldingen verkleind indien de afbeelding te groot is voor de tekst container. Tevens wordt de afbeelding samen met een onderschrift in een textframe geplaatst. Dat maakt het mogelijk om ervoor te zorgen dat alle afbeeldingen samen met het onderschrift een vaste plaats in het document krijgt t.o.v. het anker. Tevens zou je de onderschriften kunnen nummeren, zodat er voor elke onderschrift bijvoorbeeld "Fig. #" komt de staan waarin # wordt vervangen door de automatische nummering.

Beknopte uitleg werking script

Dit script is een uitbreiding van het script FitAnchorToColumn v8 geplaatst door vinny38 op het forum van Adobe. Allereerst wordt een object stijl 'img' aangemaakt met de optie "Fill frame proportionally" zodat als de grote van de afbeelding aangepast wordt het frame mee schaalt. Dit is de default object stijl voor de afbeeldingen.

Daarna maakt het script object stijlen aan op basis van de geïmporteerde XML. Voor deze XMl zijn dat de object stijlen 'figure','fig', 'img-left, 'math' en 'symbol'. Vervolgens wordt een inline textframe geplaatst om de afbeelding voor als de afbeelding een onderschrift heeft. Deze nieuw aangemaakte object stijlen krijgen de optie "Text wrap" op "Wrap around object shape" en "Text frame Auto Size Options" op "Height and Width".

Objectstyle Text wrap jump object
Objectstyle Fill frame proportionally

Daarna worden de afbeeldingen geschaald:

  • Indien de breedte kleiner is dan de kolom breedte krijgt de afbeelding zijn oorspronkelijke breedte
  • Indien in de XML een attribute width heeft wordt de grootte bepaald uit deze breedte.
  • Indien de breedte de kolom breedte overschrijd wordt de afbeelding geschaald.

Doordat elk type afbeelding een afzonderlijke object stijl krijgt en ook in weer in een specifieke paragraaf stijl zit kunnen in inDesign de plaatsing en maten per type afbeelding worden geregeld. De onderschriften kunnen dan ook makkelijk automatisch genummerd worden.

Als de XML ge-update wordt met nieuwe content dan kun je de XML opnieuw inladen. De aanpassingen die je daarvoor in inDesign gemaakt hebt blijven dan intact. Alleen als er nieuwe afbeeldingen bijgekomen zijn moet je nog even het script runnen om de nieuwe afbeeldingen te schalen en om de juiste object stijlen toe te kennen.

Je kunt het script downloaden op Github.