Skriptujeme InDesign (8): Stránky - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



VSE

Skriptujeme InDesign (8): Stránky

Adobe InDesign sazba

20. února 2006, 00.00 | Přidávání, odebírání či přemisťování stránek a také například aplikace stránek
předlohových či vložení souborů různých typů na stránku. Tyto i další postupy probereme
v další části našeho pravidelného seriálu o skriptování InDesignu.

V dnešní části našeho seriálu se podíváme na práci se stránkami v dokumentech InDesignu. Našim cílem zde bude naznačit základní principy manipulace s daným typem objektů, které lze dále použít v různých skriptech, například při automatizovaném sestavování dokumentů, přípravě šablon, archové montáži apod. Hodně důležité je pak použití přístupu ke stránkám při práci s objekty na nich umístěnými (například textovými či obrázkovými rámečky).

Přístup ke stránkám

Stránky jsou objekty InDesignu, které se ukládají v kolekci (poli) Pages a lze k nim přistupovat různým způsobem. Nejobvyklejší je to přes objekt document a to takto:

//Proměnné myPage přiřadí čtvrtou stránku v dokumentu (indexuje se od nuly)
var myPage=app.activeDocument.pages[3];
//Totéž
var myPage=app.activeDocument.pages.item(3);

//Proměnné myPage přiřadí první stránku v dokumentu
var myPage=app.activeDocument.pages.firstItem();

//Proměnné myPage přiřadí poslední stránku v dokumentu
var myPage=app.activeDocument.pages.lastItem();

Geometrie stránek

Základní způsoby nastavení geometrie stránek jsme již přiblížili dříve a na tomto místě se k nim nemusíme vracet. Zmínit nicméně chceme vlastnost objektu Page bounds, která vrací coby uspořádanou čtveřici hodnot pozici levého horního (první dvě hodnoty) a pravého dolního (druhé dvě hodnoty) objektu stránky. Dané hodnoty se dají využít (spolu s hodnotami z objektu MarginPreferences nebo též hodnotami document.documentPreferences.pageHeight či document.documentPreferences.pageWidth) pro různé symbolické výpočty a následné umisťování objektů na jejich základě (například použijeme rámečky, které mají šířku rovnající se polovině šířky stránky, nikoli konkrétnímu délkovému údaji apod. - vhodné pro skripty, které pracují s dokumenty či stránkami o rozdílné či změněné geometrii).

//Do proměnných myPageHeight a myPageWidth vloží šířku/výšku první strany
var myPage = app.activeDocument.pages[0]
var myPageHeight=myPage.bounds[2]-myPage.bounds[0];
var myPageWidth=myPage.bounds[3]-myPage.bounds[1];

Vzory

Dále je vhodné říci něco o práci s vzory neboli předlohovými stránkami. Ty jsou uloženy v poli objektů masterSpreads. Nastavení vzorů je popsáno v uživatelské příručce InDesignu (str. 122-123), na tomto místě si pouze ukažme, jak lze vzor (který si je možno samozřejmě vytvořit i interaktivně) aplikovat na vybranou stránku dokumentu.

//Na stránku uloženou v proměnné myPage aplikuje vzor A-Master
myPage.appliedMaster=app.activeDocument.masterSpreads.item("A-Master");

Na uvedeném principu lze ve skriptech použít kód, který nám dovolí bez problémů změnit přiřazení vzorů i ve větších rozsazích nebo třeba na základě podmínek (například stránky obsahující určitý text či objekt, mající určité číslo, přiřazený určitý vzor atd.).

//Všechny předlohové stránky "A-Master" zaměníme stránkami "C-Master"
for (i=0;i<app.activeDocument.pages.length;i++) {
if (app.activeDocument.pages[i].appliedMaster.name=="A-Master")
{app.activeDocument.pages[i].appliedMaster=app.activeDocument.masterSpreads.item("C-Master")}
}

Manipulace se stránkami

Rovněž jsou k dispozici metody, dovolující stránky přidávat, duplikovat, přemisťovat či odebírat (včetně jejich obsahu). Manipulovat lze zde buďto s polem Pages či objektem Page. V prvním případě je k dispozici metoda add pro přidání nových stránek. Tu lze použít například takto:

//Vytvoří novou stránku za první stránkou aktivního dokumentu
app.activeDocument.pages.add(LocationOptions.after,app.activeDocument.pages[0]);

//Přidá novou stránku na konec dokumentu
app.activeDocument.pages.add(LocationOptions.atEnd);

Page pak poskytuje metody duplicate, move a remove. Příklady:

//Duplikuje první stránku a umístí ji na konec dokumentu
app.activeDocument.pages[0].duplicate(LocationOptions.atEnd);

//Poslední stránku dokumentu přemístí na začátek dokumentu
app.activeDocument.pages.lastItem().move(LocationOptions.atBeginning);

//První stránku dokumentu přemístí před stránku třetí
app.activeDocument.pages[0].move(LocationOptions.before,app.activeDocument.pages[2]);

//Odstraní první stránku v dokumentu
app.activeDocument.pages[0].remove();

Umístění obsahu na stránku

Zajímavá je metoda objektu Page pro umístění obsahu z externího souboru. Její obecný tvar je:

place(soubor,umístění,vrstva,dialog,autoflow,vlastnosti),

kde soubor určuje soubor, z kterého se bude načítat (může se jednat o textový, grafický či multimediální formát, který je InDesign schopen zpracovat), umístění je souřadnice, udávající horní levý okraj umisťovaného objektu na stránce (výchozí umístění je levý horní roh dané stránky), dialog je logická hodnota (true/false), jež určuje, zda se má při vkládání zapnout odpovídající importní dialog, logická hodnota autoflow dovolí zapnout případné automatické natečení textového rámečku na více stránek a vlastnosti je pole výchozích hodnot, které se nastaví u objektu vytvořeného metodou place. Pokud některý z daných parametrů (povinný je pouze soubor) nechceme určovat, stačí nám na dané pozici uvést hodnotu undefined. Uvedená metoda nám dovoluje poměrně snadno sestavit dokument (či jeho část) z různých externích souborů.

Příklad:

//Vytvoří proměnnou myPage odpovídající první stránce dokumentu
var myPage=app.activeDocument.pages[0];
//Na stránku uloženou v proměnné myPage umístí story, kterou naplní textem ze souboru c/pokus/pokus.rtf
myPage.place(File("/c/pokus/pokus.rtf"),[myPage.marginPreferences.top,myPage.marginPreferences.left],app.activeDocument.layers[0],false,true,undefined);
//Na tutéž stránku (levý horní roh obrázku je uprostřed dané stránky) umístí obrázek c/pokus/obrazek.jpg
myPage.place(File("/c/pokus/obrazek.jpg"),[((myPage.bounds[3]-myPage.bounds[1])/2),((myPage.bounds[2]-myPage.bounds[0])/2)],app.activeDocument.layers[0],false,true,undefined);

Spreads čili dvojstránky

Zmínit bychom na tomto místě ještě měli i manipulaci s dvojstránkami (zavádějící, leč v počeštěném InDesignu oficiálně užívaný název) čili spreads. Základní principy práce zde jsou stejné jako v případě stránek, tj. jedná se o objekty (typu Spread), které se ukládají do kolekce (Spreads). Odpovídající metody dovolují dvojstrany přidávat, duplikovat či přemisťovat, možné je rovněž umístění obsahu z externího souboru. Příklady:

//Vypíše počet dvojstránek v aktivním dokumentu
alert(app.activeDocument.spreads.length);

//Přidá dvojstránku na konec dokumentu
app.activeDocument.spreads.add(LocationOptions.atEnd);

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » Go verze  

 » Rubriky  » Sazba  

 » Rubriky  » Polygrafie  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Zatím nebyl uložen žádný příspěvek, buďte první.

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: