19.11.2010 | 20:55
Ups.
Sjetio sam se da je petak pa ako sad ne složim, ništa do ponedjeljka. Dakle...
tell application "Adobe InDesign CS3"
set numMin to 42
set numMax to 100
set numDigits to 4
set numPad to ""
repeat numDigits times
set numPad to numPad & "0"
end repeat
tell document "labels.indd"
set labelsPerPage to (number of text frames of page 1)
set totalPages to (1 + (round ((numMax - numMin) / labelsPerPage) rounding toward zero))
set num to numMin
set currentPage to 1
repeat totalPages times
set currentLabel to 1
repeat labelsPerPage times
set numStr to numPad & num
set numStr to text ((length of numStr) - numDigits + 1) thru (length of numStr) of numStr
set contents of text frame currentLabel of page currentPage to numStr
set currentLabel to currentLabel + 1
set num to num + 1
end repeat
if (currentPage < totalPages) then
duplicate page 1
set currentPage to currentPage + 1
end if
end repeat
end tell
end tell
Prva linija je bitna jer u njoj piše kojem InDesignu se obraćamo (ovdje "CS3" ). Ako koristiš neki drugi, zamijeni "CS3" s tim drugim ("CS4", recimo).
Sljedeće 3 linije su također bitne (i u nekom sretnijem scenariju bi imale svoj GUI
). "numMin" je prvi broj numeracije. U mom slučaju "42", u tvom "1". "numMax" je zadnji broj numeracije. U mom slučaju "100", u tvom "5000". "numDigits" služi za formatiranje, određivanjem broja vodećih nula. Postavljen je na 4 tako da "1" formatira kao "0001".
Linija "tell document..." sadrži ime OTVORENOG dokumenta koji će skripta obraditi. U mom slučaju to je "labels.indd". Ako se tvoj dokument drugačije zove, ovdje treba promijeniti ime (i da, i to bi išlo u GUI
).
Dalje u nastavku je glavna petlja koja prije ulaska prebroji koliko ima "labela" na stranici, potom izračuna koliko ukupno stranica mora kreirati da bi u dokumentu bilo dovoljno mjesta za cijelu numeraciju, postavi par varijabli i krene.
U petlji obrađujemo stranicu po stranicu, tako da u svaku labelu (InDesignov text frame) upišemo uredno formatiranu numeraciju. Kad ispunimo stranicu, dupliciramo prvu stranicu (korisitmo je kao template) na kraj dokumenta i ponavljamo postupak.
Da bi skripta radila, potrebno je PRIJE pokretanja kreirati odgovarajući template dokument (u skripti je to ovaj "labels.indd" ). Kreiramo ga tako da u PRAZNOM dokumentu (kojeg čini samo JEDNA STRANICA) napravimo text frame, upišemo unutra neki dummy tekst i formatiramo taj tekst onako kako želimo da nam izgleda numeracija (font, veličina fonta, boja...). Napominjem da InDesign "naopako" identificira text frameove (zadnji kojeg napravimo tretira kao "prvi", a prvi kojeg smo napravili kao "zadnji" ) pa ako želimo da numeracija raste s vrha prema dnu stranice, potrebno je PRVI text frame kreirati na DNU stranice, a zadnji na VRHU. Dakle, napravimo prvi, smjestimo ga na dno, dupliciramo ih još N, posložimo jedan iznad drugog, alignamo/distribuiramo automatski ili pješke i imamo template za numeraciju. To snimimo (za slučaj da se nešto u procesu zbrlja) i pokrenemo skriptu koja će obaviti gore opisano.
Testirao sam sa stranicom formata A4 na kojoj su samo 3 text framea (pretpostavka da je riječ o kartama veličine 21x10 cm, printanim/tiskanim po 3 na jednom A4 listu). InDesign je kreirao 1.667 stranica s urednom numeracijom za 7 minuta. Konačni PDF je bio velik 1 MB (da nekoga ne prestraši "čak" 1.667 stranica). Ovih 7 minuta je relativno sporo jer se po putu malo "ugušio", s obzirom da je prvu polovicu posla (2.500 numeracija) obavio za 2 minute i 10 sekundi. Manji broj stranica, a veći broj text frameova po stranici bitno ubrza generiranje.