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:
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
-
11. prosince 2024
Sazba
Skriptujeme InDesign (6): Dokumenty podruhé
Adobe InDesign sazba
6. února 2006, 00.00 | Rozměry či okraje stránky, volby pracovní plochy i mnohé další vlastnosti dokumentů
InDesignu lze měnit pomocí skriptů různorodými způsoby. O jejich přiblížení se pokoušíme
v další části našeho pravidelného seriálu.
V této části našeho seriálu o skriptování v InDesignu se podíváme na možnosti, jak ovlivnit nastavení dokumentů zpracovávaných InDesignem. Náš výklad se zde bude týkat především konfigurace na úrovni stránek, další parametry budou probrány v kapitolách věnovaných práci s XMP metadaty a konfiguraci samotného InDesignu (vlastnosti a metody objektu app).
Postupy pro nastavení dokumentu
S pomocí skriptování lze v InDesignu kontrolovat nastavení dokumentu v podstatě třemi různými způsoby:
- při tvorbě dokumentu nebo kdykoli později měníme nastavení preferencí dokumentu či jiných objektů (pracovní plochy, stránek, metadat aj.)
- při tvorbě dokumentu použijeme odpovídající preset, čili sadu přednastavených hodnot
- před tvorbou dokumentu změníme odpovídající nastavení aplikace a pak vytvoříme nové dokumenty s těmito nastaveními
Pojďme se na dané možnosti podívat blíže.
Změna preferencí dokumentu
Základní kontrolu nad nastaveními dokumentu nám poskytuje objekt documentPreferences
. S
jeho použitím lze nastavit vybrané parametry dokumentu třeba následovně:
//Vytvoříme nový dokument a ten pak nastavíme
var myDocument = app.documents.add();
//nebo můžeme měnit nastavení dokumentu stávajícího
//(pak zakomentujte předchozí deklaraci proměnné myDocument a odkomentujte následující řádek)
//var myDocument=app.activeDocument;
//nebo použijte jiná zpracování
//(třeba hromadné nastavení vlastností pro všechny dokumenty z dané složky apod. - viz minulý díl)
//V následném kódu je použití příkazu with přípustné a ušetří nám hodně psaní:
//připomeňme, že jinak bychom museli psát třeba
//myDocument.documentPreferences.pageHeight="210mm";
//atd.
with(myDocument.documentPreferences){
//Nastavení stránek
//Rozměry
pageHeight = "210mm"; //výška stránky, lze použít i jiné měrové jednotky (cm, pt, c jako cicero aj.)
pageWidth = "297mm"; //šířka stránky
//Orientace
pageOrientation = PageOrientation.landscape; //orientace, lze použít i .portrait
//Počet stran v dokumentu
pagesPerDocument = 10; //počet stránek v dokumentu
//Protilehlé stránky
facingPages=true; //zapne protilehlé stránky, false je vypne
//Spadávka čili Bleed
documentBleedBottomOffset = "10mm"; //dole
documentBleedTopOffset = "10mm"; //nahoře
documentBleedInsideOrLeftOffset = "10mm"; //vlevo
documentBleedOutsideOrRightOffset = "10mm"; //vpravo
//Jsou-li hodnoty na všechny strany stejné, lze také nastavit příznak
//documentBleedUniformSize = true;
//a pak provést nastavení jen jednoho parametru
//documentBleedTopOffset = "10mm";
//Popis čili Slug
slugBottomOffset = "40mm"; //dole
slugTopOffset = "40mm"; //nahoře
slugInsideOrLeftOffset = "20mm"; //vlevo
slugRightOrOutsideOffset = "20mm"; //vpravo
//Jsou-li hodnoty na všechny strany stejné, lze také nastavit příznak
//documentSlugUniformSize = true;
//a pak provést nastavení jen jednoho parametru
//slugTopOffset = "10mm";
}
Povšimněme si (nejen v daném příkladu, ale zejména referenční příručce skriptování
InDesignu CS2 - viz s. 690 a dále), že leccos v nastaveních daného objektu pro dokumenty
chybí. Změnu obarvení vodítek pro spadávku a popis a další nastavení spojená s pracovní
plochou je tudíž nutno měnit nastavením objektu pasteboardPreferences
.
//Použijte samostatně nebo třeba přidejte do předchozího skriptu
with(myDocument.pasteboardPreferences){
//Nastavení barvy vodítek
//přípustné hodnoty pro UIColors lze najít v referenční příručce ID CS 2 na s. 1238 a dále
bleedGuideColor = UIColors.magenta;
slugGuideColor = UIColors.red;
//barva se též dá definovat s pomocí RGB hodnot (uspořádaná trojice číselných hodnot z intervalu 0-255)
//třeba
//bleedGuideColor = [0, 198, 192];
//slugGuideColor = [192, 192, 192];
//Nastavení rozměrů pracovní plochy
//(minimální svislý posun)
minimumSpaceAboveAndBelow = "12mm";
//Nastavení barvy pracovní plochy
//přes UIColors (viz poznámka výše)
pasteboardColor = UIColors.white;
previewBackgroundColor = UIColors.gray;
//nebo přes RGB hodnoty
//třeba
//pasteboardColor = [0, 0, 0];
//previewBackgroundColor = [192, 192, 192];
}
Důležitější je pak kontrola okrajů vytvářených stránek. Pro tu lze použít objekt
marginPreferences
, ovšem nikoli stejným způsobem jako tomu bylo u documentPreferences
či
pasteboardPreferences
. Uvedený objekt totiž v námi nastíněných případech dovoluje měnit
vždy nastavení pouze pro konkrétní stránku, takže například pro první stránku v
dokumentu se nastavení okrajů a sloupců provede následovně:
//Použijte samostatně nebo třeba přidejte do předchozího skriptu
//připomeňme, že stránky jsou v kolekci/poli pages
//a přistupujeme k nim přes metodu pages.item(císlo_stránky)
//přičemž první stránka má index 0
with (myDocument.pages.item(0).marginPreferences){
columnCount = 7; //počet sloupců
columnGutter = "1mm"; //mezera mezi sloupci
top = "4mm"; //okraje nahoře
bottom = "6mm"; //okraje dole
left = "6mm"; //vlevo nebo též uvnitř, pokud jsou zapnuté protilehlé stránky
right = "4mm"; //vpravo nebo též vně, pokud jsou zapnuté protilehlé stránky
}
Pro všechny stránky v dokumentu lze použít třeba následující cyklus:
for (i=0;i<myDocument.pages.length;i++)
{with (myDocument.pages.item(i).marginPreferences){
columnCount = 7; //počet sloupců
columnGutter = "1mm"; //mezera mezi sloupci
top = "4mm"; //okraje nahoře
bottom = "6mm"; //okraje dole
left = "6mm"; //vlevo nebo též uvnitř, pokud jsou zapnuté protilehlé stránky
right = "4mm"; //vpravo nebo též vně, pokud jsou zapnuté protilehlé stránky
}
}
Práce s presety
Preset čili přednastavené hodnoty dovoluje uložit řadu údajů o nastavení stránek dokumentu v podobě samostatného konfiguračního souboru. Ten se pak použije při tvorbě dokumentu následujícím způsobem (blíže viz minulý díl našeho seriálu):
app.documents.add(true,DocumentPreset("název_presetu"));
documentPreferences
, tak marginPreferences
. Výhodou presetu pak je především skutečnost,
že se zde jedná o sadu hodnot, kterou můžeme používat opakovaně v různých skriptech, bez
toho, že bychom museli znovu vše nastavovat.
Nový preset je možno vytvořit buďto interaktivně (přes příkaz File-Document Presets-Define/Soubor-Přednastavení dokumentu-Definovat) nebo zkopírováním vybraných vlastností nějakého existujícího dokumentu či nastavením hodnot vlastních. Poslední dvě možnosti jsou komplexně přiblíženy v uživatelské příručce InDesignu CS2 (s. 120-122) a zde jen reprodukujeme odpovídající skripty s příslušnými komentáři (a opravou drobných chyb).
Tvorba na základě zkopírování hodnot aktuálního dokumentu funguje následovně:
var myDocumentPreset; //proměnná pro preset
if(app.documents.length > 0){ //kontrolujeme, zda je nějaký dokument otevřený
var myDocument = app.activeDocument;
//Presety jsou uloženy v kolekci/poli documentPresets
//odkazujeme zde na ně přes metodu item() jejich jménem
//nejprve provedeme odpovídající přiřazení do proměnné, zatím se nestaráme
//zda daný preset (který se jmenuje stejně jako daná proměnná myDocumentPreset) existuje
myDocumentPreset = app.documentPresets.item("myDocumentPreset");
//Konstrukt try-catch nám dovolí ošetřit případ, kdy daný preset ještě neexistuje
//šlo by použít i podmínku if
try {
var myPresetName = myDocumentPreset.name; //zkusíme použít název presetu
}
catch (myError){//pokud preset daného jména neexistuje, vytvoříme jej
myDocumentPreset = app.documentPresets.add({name:"myDocumentPreset"});
}
//Ošetříme shodu nastavení měrových jednotek
app.viewPreferences.horizontalMeasurementUnits = myDocument.viewPreferences.horizontalMeasurementUnits;
app.viewPreferences.verticalMeasurementUnits = myDocument.viewPreferences.verticalMeasurementUnits;
//Nyní načteme z aktivního dokumentu jeho hodnoty do presetu
//smysl přiřazení vyčtete ze skriptů výše nebo referenční příručky InDesignu
with(myDocumentPreset){
//Hodnoty okrajů přebírá z nastavení dokumentu
var myMarginPreferences = app.activeDocument.marginPreferences;
//Možné je rovněž přebrání z aktivní stránky daného dokumentu
//var myMarginPreferences = app.activeWindow.activePage.marginPreferences;
left = myMarginPreferences.left;
right = myMarginPreferences.right;
top = myMarginPreferences.top;
bottom = myMarginPreferences.bottom;
columnCount = myMarginPreferences.columnCount;
columnGutter = myMarginPreferences.columnGutter;
documentBleedBottomOffset = app.activeDocument.documentPreferences.documentBleedBottomOffset;
documentBleedTopOffset = app.activeDocument.documentPreferences.documentBleedTopOffset;
documentBleedInsideOrLeftOffset = app.activeDocument.documentPreferences.documentBleedInsideOrLeftOffset;
documentBleedOutsideOrRightOffset = app.activeDocument.documentPreferences.documentBleedOutsideOrRightOffset;
facingPages = app.activeDocument.documentPreferences.facingPages;
pageHeight = app.activeDocument.documentPreferences.pageHeight;
pageWidth = app.activeDocument.documentPreferences.pageWidth;
pageOrientation = app.activeDocument.documentPreferences.pageOrientation;
pagesPerDocument = app.activeDocument.documentPreferences.pagesPerDocument;
slugBottomOffset = app.activeDocument.documentPreferences.slugBottomOffset;
slugTopOffset = app.activeDocument.documentPreferences.slugTopOffset;
slugInsideOrLeftOffset = app.activeDocument.documentPreferences.slugInsideOrLeftOffset;
slugRightOrOutsideOffset = app.activeDocument.documentPreferences.slugRightOrOutsideOffset;
}
}
Po provedení tohoto skriptu případně interaktivně zkontrolujme, zda máme v nabídce
InDesignu (File-Document Presets/Soubor-Přednastavení dokumentu) nový preset s názvem
myDocumentPreset
a zda jeho nastavení odpovídá hodnotám v daném dokumentu.
Skript pro tvorbu presetu zadáním odpovídajících hodnot:
var myDocumentPreset; //proměnná pro preset
//Ošetření presetu obdobné jako v předchozím skriptu
myDocumentPreset = app.documentPresets.item("myDocumentPreset");
try {
var myPresetName = myDocumentPreset.name;
}
catch (myError){
myDocumentPreset = app.documentPresets.add({name:"myDocumentPreset"});
}
//Zde provedeme nastavení hodnot presetu konkrétními hodnotami
with(myDocumentPreset){
pageHeight = "9i";
pageWidth = "7i";
left = "4p";
right = "6p";
top = "4p";
bottom = "9p";
columnCount = 1;
documentBleedBottomOffset = "3p";
documentBleedTopOffset = "3p";
documentBleedInsideOrLeftOffset = "3p";
documentBleedOutsideOrRightOffset = "3p";
facingPages = true;
pageOrientation = PageOrientation.portrait;
pagesPerDocument = 1;
slugBottomOffset = "18p";
slugTopOffset = "3p";
slugInsideOrLeftOffset = "3p";
slugRightOrOutsideOffset = "3p";
}
Opět ověřte po provedení skriptu korektnost nastavení v InDesignu.
Preference aplikace
Třetí způsob ovlivnění parametrů dokumentu vychází z myšlenky, že nejprve nastavíme požadované parametry InDesignu a s těmi pak vytvoříme požadovaný dokument. Vhodný postup zde obvykle vypadá tak, že v rámci daného skriptu nejprve uložíme původní nastavení, pak provedeme příslušné změny a na závěr hodnoty obnovíme. Kód naznačující uvedený postup pro nastavení okrajů by mohl vypadat třeba takhle:
with (app.marginPreferences){
//Uložení původních hodnot pro marginPreferences
//všimněme si, že se jedná o objekt app.marginPreferences
//a nikoli document.marginPreferences jako v příkladech výše
var myY1 = top;
var myX1 = left;
var myY2 = bottom;
var myX2 = right;
//Nastavení nových hodnot
top = 0;
left = 0;
bottom = 0;
right = 0;
}
//Vložení dokumentu s novými hodnotami
var myDocument = app.documents.add();
myDocument.documentPreferences.pageHeight = "210mm";
myDocument.documentPreferences.pageWidth = "297mm";
//Obnovení původních hodnot
with (app.marginPreferences){
top = myY1;
left = myX1;
bottom = myY2;
right = myX2;
}
Obdobným způsobem lze pracovat i s nastaveními jiných hodnot, o kterých jsme hovořili výše: praktické odzkoušení zde necháváme na čtenáři.
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
-
5. ledna 2017
-
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ě
-
14. října 2024
-
10. prosince 2024