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 (31): Okna
Adobe InDesign sazba
15. ledna 2007, 00.00 | V této části našeho seriálu o skriptování InDesignu se budeme věnovat práci s okny. Ukážeme si, jak lze provádět různé aranžování oken a také jak kontrolu zobrazení v okně použít v rámci různých diagnostik.
V této části našeho seriálu o skriptování InDesignu se budeme věnovat práci s okny. Ukážeme si, jak lze provádět různé aranžování oken a také jak kontrolu zobrazení v okně použít v rámci různých diagnostik.
Okna aplikace a dokumentu
Okna otevřená v prostředí InDesignu jsou odkazována prostřednictvím kolekce windows. Okno, jež je v danou chvíli v popředí, je přístupné s pomocí vlastnosti activeWindow. Dalším identifikačním prvkem je jméno okna (mimo název souboru obsahuje i údaj o aktuálním zvětšení pohledu na dokument v procentech), zjistitelné vlastnosti name, vlastnost parent pak dovoluje přímo použít název dokumentu, který dané okno zobrazuje (tj. bez údajů o zvětšení).
//Do proměnné myWinName uloží název aktivního okna var myWinName=app.activeWindow.name; //Do proměnné myDocName uloží název dokumentu zobrazeného v aktivním okně var myDocName=app.activeWindow.parent.name; |
Kolekce windows přináleží rovněž objektu document, zde lze pomocí metody add() nová okna přidávat (odpovídá příkazu InDesignu pro otevření dokumentu v novém okně Okno-Uspořádat-Nové okno čili Window-Arrange-New Window, připomeňme pak, že v InDesignu mohou být dokumenty otevřeny ke zpracování skriptem i bez okna), metoda close() pak dovoluje okna uzavírat, ovšem neumožňuje uzavřít okna všechna (pro to je zapotřebí zavřít samotný dokument).
//Zobrazí aktuální dokument v dalším okně app.activeDocument.windows.add(); //Zobrazí názvy všech oken přináležících danému dokumentu alert(app.activeDocument.windows.everyItem().name); //Uzavře všechna okna spojená s aktivním dokumentem kromě jednoho for(j=app.activeDocument.windows.length-1;j>0;j--){app.activeDocument.windows[j].close()} //Uzavře aktivní dokument a s ním všechna jeho okna app.activeDocument.close(); |
Manipulace s okny
K manipulaci s okny lze využít metod odpovídajících obvyklým manipulacím v grafickém uživatelském prostředí, konkrétně to jsou minimize() (okno se minimalizuje), maximize() (okno se otevře přes celé okno aplikace), restore() (obnoví předchozí velikost okna) a close() (okno se uzavře). Dále lze použít metod objektu app pro uspořádání oken, konkrétně to jsou cascadeWindows (okna se uspořádají do kaskády) a tileWindows (okna se uspořádají do dlaždic).
//Minimalizuje aktivní okno app.activeWindow.minimize(); //Seřadí okna do dlaždic app.tileWindows(); |
LayoutWindow vs. StoryWindow
Okna mohou být dvou typů: LayoutWindow obsahuje obvyklé zobrazení (layoutu neboli rozvržení) dokumentu, StoryWindow pak text story (článku) otevřený ve story editoru (editoru článků). Rozlišení mezi danými typy lze provést například s pomocí následujícího testu:
//Otestuje typ aktivního okna if(app.activeWindow.constructor.name=="LayoutWindow"){alert("Okno je typu LayoutWindow")} else{alert("Okno je typu StoryWindow")} |
Každý dokument pak může mít v InDesignu otevřeno jedno či více LayoutWindow či StoryWindow, odpovídají tomu kolekce (layoutWindows, storyWindows)
StoryWindow
StoryWindow otevřeme s pomocí skriptu například takto:
if(app.activeDocument.stories.length==0){alert("Dokument neobsahuje žádnou story");exit()} //Určíme story var myStory=app.activeDocument.stories[0]; //Otevřeme StoryWindow myStory.storyEdit(); |
Uzavření StoryWindow lze zajistit následovně:
if(app.activeWindow.constructor.name=="StoryWindow"){app.activeWindow.close(SaveOptions.yes)} |
V případě StoryWindow je možno kontrolovat několik málo základních vlastností popsaných výše (minimalizace/maximalizace, obnovení atp., názvy metod jsou stejné jako u objektu window).
LayoutWindow
LayoutWindow poskytuje nejen základní kontrolní prostředky jako StoryWindow, ale též řadu dalších, výrazně zajímavějších, vlastností a metod použitelných různým způsobem. Začít můžeme u vlastnosti activePage, která dovoluje zjistit nebo případně i nastavit aktuální pozici v dokumentu.
Zjištění aktuální stránky:
//Otestujeme, jestli okno v popředí není typu StoryWindow if(app.activeWindow.constructor.name=="StoryWindow"){alert("Se StoryWindow tento skript nefunguje");exit()} //Do proměnné myPoz nastaví aktuální stránku v dokumentu var myPoz=app.activeWindow.activePage; //Vypíše název dané stránky alert("Aktuální stránka v dokumentu má označení "+myPoz.name) |
Nastavení čísla stránky:
//Otestujeme, jestli okno v popředí není typu StoryWindow if(app.activeWindow.constructor.name=="StoryWindow"){alert("Se StoryWindow tento skript nefunguje");exit()} //Nastaví aktivní stránku v dokumentu na první stránku (využijeme toho, že rodičem okna je jeho dokument) app.activeWindow.activePage=app.activeWindow.parent.pages[0]; //Nastaví aktivní stránku v dokumentu na poslední stránku app.activeWindow.activePage=app.activeWindow.parent.pages[-1]; |
Obdobně lze pracovat s dvojstránkou (spread):
//Otestujeme, jestli okno v popředí není typu StoryWindow if(app.activeWindow.constructor.name=="StoryWindow"){alert("Se StoryWindow tento skript nefunguje");exit()} //Nastaví aktivní dvojstránku v dokumentu na první app.activeWindow.activeSpread=app.activeWindow.parent.spreads[0]; |
Jinou zajímavou vlastností, kterou lze měnit, je velikost zobrazení dokumentu v okně. K dispozici jsou zde dva způsoby, nastavení vlastnosti zoomPercentage a použití metody zoom(). V případě zoomPercentage se přitom určuje velikost v procentech, zoom používá nastavení odpovídající příkazům v nabídce InDesignu View-Zobrazení - konkrétně zvětšení (ZoomOptions.zoomIn) nebo zmenšení (ZoomOptions.zoomOut) zobrazení, zvětšení na velikost dvojstránky (ZoomOptions.fitSpread) nebo stránky (ZoomOptions.fitPage) či skutečnou velikost (ZoomOptions.actualSize), případně pak celou pracovní plochu (ZoomOptions.showPasteboard).
//Nastaví velikost zobrazení v aktivním okně na 75 % app.activeWindow.zoomPercentage=75; //Nastaví velikost zobrazení v aktivním okně na velikost stránky app.activeWindow.zoom(ZoomOptions.fitPage); //Sníží velikost zobrazení o jeden stupeň app.activeWindow.zoom(ZoomOptions.zoomOut); |
Kontrolovat lze rovněž rozměry okna, a to s pomocí vlastnosti bounds (stejně jako u geometricBounds objektu jde o uspořádanou čtveřici hodnot ve tvaru [y-ová souřadnice levého horního rohu,x-ová souřadnice levého horního rohu,y-ová souřadnice pravého dolního rohu,x-ová souřadnice pravého dolního rohu]), hodnoty se udávají v pixelech.
Mimo obecné vlastnosti okna, aktuální stránky či dvojstránky a velikosti lze u LayoutWindow nastavit řadu dalších parametrů, konkrétně to je aktivní vrstva (activeLayer) a dále sada parametrů určujících zobrazení barev (overprintPreview, preserveColorNumbers, proofingProfile,proofingType, simulateInkBlack, simulatePaperWhite - viz příslušné příkazy v nabídce View-Zobrazení uživatelského rozhraní InDesignu), kvalitu zobrazení grafiky (viewDisplaySetting - viz příkaz View-Display Performance tedy Zobrazení-Rychlost zobrazení) či referenční bod, kolem kterého se provádí transformace objektů (transformReferencePoint). Nastavení zobrazení demonstrujeme blíže v následujícím příkladu, použitím vlastnosti transformReferencePoint se v zajímavém článku zabývá Dave Saunders.
//Nastaví aktivní vrstvu na "Text" (musí v dokumentu existovat) app.activeWindow.activeLayer=app.activeWindow.parent.layers.item("Text"); //Pro aktivní okno zapne zobrazení přetisků app.activeWindow.overprintPreview=true; //Zachovat číselné hodnoty daného barevného prostoru app.activeWindow.preserveColorNumbers=true; //Nastavení kontrolního náhledu - Proof Setup na vlastní - Custom app.activeWindow.proofingType=ProofingType.custom; //Další možnosti pro ProofingType jsou proofOff, documentCmyk, workingCmyk //Simulované zařízení (custom profile) app.activeWindow.proofingProfile="Photoshop 4 Default CMYK" //Simulovat černou tiskovou barvu app.activeWindow.simulateInkBlack=true; //Simulovat barvu papíru app.activeWindow.simulatePaperWhite=true; //Nastaví kvalitu zobrazení (rychlost zobrazení) grafiky na Fast Display (rychlé) app.activeWindow.viewDisplaySetting=ViewDisplaySettings.optimized; //Další možnosti pro ViewDisplaySettings jsou highQuality (vysoká kvalita zobrazení) a typical (typické zobrazení) |
Palety
Pro kontrolu nástrojových palet nabízí InDesign pouze vlastnost objektu app palettesVisible. Jak již název naznačuje, jedná se o logickou hodnotu, dovolující zobrazit nebo skrýt všechny nástrojové panely (obdoba použití klávesové zkratky Tab).
//Skryje všechny palety app.palettesVisible=false; |
Daný prostředek lze tedy použít samostatně nebo v kombinaci s výše naznačenými prostředky při kontrole vzhledu uživatelského rozhraní. Tím ale možnosti kontroly palet končí (resp. nedopátrali jsme se žádných dalších), což je rozhodně škoda.
Praktické využití
Ukažme si nyní, jak lze výše uvedené prostředky použít k efektivní práci s okny. Jedním z nejužívanějších způsobů je nastavení okna dokumentu na určité požadované místo: danou vlastnost lze využít k různé diagnostice. Konkrétně například tímto způsobem:
//Skript, který dovolí v textu projít a opravit přetečené textové rámečky //Pracujeme s aktuálním dokumentem var myDoc=app.activeDocument; //Projdeme všechny textové rámečky for(i=0;i<myDoc.textFrames.length;i++){ var myObj=myDoc.textFrames[i]; if(myObj.overflows==true){ //Pokud je rámeček přetečený, pak showObject(myObj); //jej zobrazíme pomocí funkce showObject() if(confirm("Chcete rámeček upravit?")){exit()}} //a dovolíme jej upravit } //Funkce showObject() function showObject (myObj){ app.select(myObj); //Daný objekt vybereme app.activeWindow.activePage=myObj.parent; //přesuneme se na jeho stránku app.activeWindow.zoom(ZoomOptions.fitSpread); //zvětšíme zobrazení v okně na velikost dvojstránky } |
Jinou zajímavou možnost představuje otevření dvou oken dokumentu, přičemž v každém je dokument zobrazen jiným způsobem.
//Skript zobrazující tentýž dokument ve dvou oknech s odlišnými nastaveními pohledu //Skript podmíníme jediným otevřeným dokumentem v InDesignu //(lze samozřejmě napsat kód pro uzavření - přechodné či úplné - dalších dokumentů atp.) if(app.windows.length!=1){alert("Tento skript vyžaduje, aby byl otevřen právě jeden dokument");exit()} //V proměnné myDoc je ukazatel na aktivní dokument var myDoc=app.activeDocument; //Dokument zobrazíme v dalším okně myDoc.windows.add(); //Okna uspořádáme do dlaždic app.tileWindows(); //První okno bude zobrazovat obsah na velikost stránky myDoc.layoutWindows[0].zoom(ZoomOptions.fitPage); //a první stránku dokumentu myDoc.layoutWindows[0].activePage=myDoc.pages[0]; //Druhé okno bude zobrazovat obsah na velikost stránky myDoc.layoutWindows[1].zoom(ZoomOptions.fitPage); //a poslední stránku dokumentu myDoc.layoutWindows[1].activePage=myDoc.pages[-1]; //Tímto způsobem je tedy třeba možno sledovat, jak se změny na první stránce promítnou na stránce poslední apod. //Možná jsou mnohá další nastavení týkající se nejen stránek a velikosti zobrazení, ale také třeba softproofingu apod. |
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
Tématické zařazení:
» Rubriky » Polygrafie
-
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