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:
-
5. září 2024
Matrixmedia - Obsluha a tisk na velkoformátových digitálních tiskárnách
-
30. září 2024
-
4. října 2024
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):
- Skriptujeme InDesign (1): Úvod
- Skriptujeme InDesign (2): První kroky
- Skriptujeme InDesign (3): Základy JavaScriptu poprvé
- Skriptujeme InDesign (4): Základy JavaScriptu podruhé
- Skriptujeme InDesign (5): Dokumenty poprvé
- Skriptujeme InDesign (6): Dokumenty podruhé
- Skriptujeme InDesign (7): Výstup
- Skriptujeme InDesign (8): Stránky
- Skriptujeme InDesign (9): Stránkové objekty poprvé
- Skriptujeme InDesign (10): Stránkové objekty podruhé
- Skriptujeme InDesign (11): Dialogy
- Skriptujeme InDesign (12): Text poprvé
- Skriptujeme InDesign (13): Text podruhé
- Skriptujeme InDesign (14): Text potřetí
- Skriptujeme InDesign (15): Hledání a záměny poprvé
- Skriptujeme InDesign (16): Hledání a záměny podruhé
- Skriptujeme InDesign (17): Regulární výrazy
- Skriptujeme InDesign (18): Tabulky poprvé
- Skriptujeme InDesign (19): Tabulky podruhé
- Skriptujeme InDesign (20): Obrázky poprvé
- Skriptujeme InDesign (21): Obrázky podruhé
- Skriptujeme InDesign (22): Obrázky potřetí
- Skriptujeme InDesign (23): ESTK aneb jak na editaci a ladění skriptů
- Skriptujeme InDesign (24): Vrstvy
- Skriptujeme InDesign (25): Barvy poprvé
- Skriptujeme InDesign (26): Barvy podruhé
- Skriptujeme InDesign (27): Barvy potřetí
- Skriptujeme InDesign (29): Metadata podruhé
- Skriptujeme InDesign (30): Návěští
- Skriptujeme InDesign (31): Okna
- Skriptujeme InDesign (32): Reakce na události
- Skriptujeme InDesign (33): Novinky v CS3 verzi
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
29. listopadu 2013
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
5. srpna 2024
Bubnový scanner na 4000dpi optické rozlišení + PC + software
-
8. září 2024
-
14. října 2024
-
5. listopadu 2024