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
Software
Skriptujeme InDesign (28): Metadata poprvé
Adobe InDesign sazba
23. října 2006, 00.00 | Metadata jsou v oblasti publikování mírně přehlíženým, ale přitom nesmírně silným prostředkem pro přenos
informací o dokumentech či automatizované zpracování. Skriptování v InDesignu dovoluje
jejich nasazení všestrannými způsoby, jak si podrobněji ukážeme v našem seriálu.
Metadata, čili data o datech, jsou stále významnějším prostředkem pro automatizované zpracování dokumentů a také přenos informací napříč jednotlivými aplikacemi a systémy. I v prostředí InDesignu mohou být takto velmi užitečná. K dispozici zde přitom jsou v podstatě dvěma způsoby: první nabízí podpora standardu XMP, druhý pak technologie tzv. labels neboli návěští, která je poskytována přímo v rámci skriptovacího enginu InDesignu. V našem seriálu se podíváme na oba způsoby podrobněji, dnes se budeme věnovat především základům práce s XMP metadaty, příští díl bude patřit praktickým aplikacím daného přístupu a práci s návěštími.
XMP a InDesign
XMP je standard pro reprezentaci metadat, vyvinutý před časem společností Adobe. Je založen na jazyce XML a dovoluje s pomocí tzv. uživatelských schemat reprezentovat mimo vlastních i zavedené metadatové struktury, mimo jiné informace v EXIF (informace spojené s digitální fotografií ) či IPTC (informace popisující poslání souboru, typicky zase především fotografie, používá se zejména v novinovém průmyslu a stále více i v digitální fotografii všeobecně). Velkou výhodou XMP metadat je skutečnost, že mohou být vložena přímo do daného souboru a lze je tedy využívat v různých aplikacích, které v průběhu workflow soubor zpracovávají. Na danou skutečnost dnes myslí Adobe zejména v Creative Suite, kde poskytuje jak odpovídající mechanizmy pro vkládání a zpracování metadat, tak i scénáře pro jejich praktické využití. XMP metadata pak lze využívat i v jiných publikačních aplikacích, a také třeba systémech správy obsahu apod.
V InDesignu se XMP metadata vyskytují na dvou úrovních: jednak na úrovni dokumentu, a jednak na úrovni vložených obrázků. V prvním případě lze k zobrazení, vyplňování či extrahování dokumentových metadat použít odpovídající dialog vyvolaný příkazem File-File Info/Soubor-Informace o souboru. Jeho základní podoba (tj. dodávaná přímo s instalací InDesignu) zde nabízí několik panelů pro využití obecných dokumentových metadat a dále metadat IPTC (jež jsou zde tedy takto použita k popisu poslání dokumentu, nikoli fotografií). Základní možnosti jsou pak rozšiřitelné s pomocí vlastních uživatelských panelů, jež umožní doplnit podporu prakticky libovolné metadatové struktury vlastní, což je z hlediska zbudování odpovídajícího workflow vlastnost vysoce žádoucí a přínosná.
Zobrazení a vkládání dokumentových metadat
Objektový model InDesignu poskytuje přístup ke metadatům dokumentu prostřednictvím
objektu metadataPreferences
. Základní vlastnosti daného objektu zde dovoluje přímo
přistupovat k obsahu některých nejobvyklejších metadatových polí, podporovaných jinak i
na bázi výše zmíněného dialogu (File Info) uživatelského rozhraní InDesignu, jak lze
vidět z následujících příkladů. První ukazuje zobrazení některých needitovatelných
údajů:
//Zobrazení data vytvoření a modifikace daného dokumentu,
//spolu s údaji o aplikaci jež vytvořila dokument a formátu dokumentu
//daná metadata nelze (poměrně pochopitelně) modifikovat
//způsob výpisu data lze různě ošetřit s pomocí metod objektu Date, jak
lze vidět i v našem příkladu
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
alert("Dokument byl vytvořen "+myMP.creationDate.toLocaleString()
+" v aplikaci "+myMP.creator
+"\na naposledy změněn "+myMP.modificationDate.toLocaleString()
+"\njeho formát je "+myMP.format);
Další ukázka je věnována úpravám metadatových polí naznačeného typu:
//Ukázka vyplnění základních podporovaných metadatových polí
//Jak je vidět, slouží tato pole především k určení autora a copyrightu
dokumentu
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
myMP.properties={author: "Richard Krejčí",
copyrightInfoURL: "www.grafika.cz", copyrightNotice: "Chráněno
copyrightem", copyrightStatus: CopyrightStatus.yes,
description: "Ukázkový dokument", documentTitle: "Pokus", jobName:
"JavaScripting InDesign",
keywords: ["ukázka", "InDesign", "JavaScript"]};
Výše přiblížené vlastnosti metadataPreferences
jsou v podstatě všechny, jež dovolí přímo
(tj. přes odpovídající vlastnost) přistupovat k metadatovým polím. Těch je ale již v
základní dodávce InDesignu rozhodně více (viz třeba na výše uvedeném screenshotu pole
Author Title), o uživatelských panelech pak nemluvě. Skriptovací engine nicméně naštěstí
poskytuje přístup i k těmto datům, sice ne tak transparentně jak v případě výše
zmíněných polí, na druhou stranu se zde jedná o metodu univerzální, která dovolí
pracovat s každým XMP metadatovým kontejnerem vloženým do dokumentu.
Prostředkem ke čtení obsahu metadatových polí je takto metoda getProperty
objektu
metadataPreferences
. Ta má obecný tvar
getProperty(namespace,path)
kde namespace je udání tzv. jmenného prostoru pro daný XMP dialekt - pro naše účely stačí vědět, že jde vlastně o webový odkaz, který zadáváme jako textový řetězec. Path je pak odkaz na určitý typ pole v dané namespace - pro naše účely zde opět stačí vědět, že se jedná opět o textový řetězec. Ukázka použití:
//Zjištění obsahu pole Author s pomocí getProperty
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
alert(myMP.getProperty("http://ns.adobe.com/photoshop/1.0/","Author"));
Samozřejmě je otázkou, jak vlastně zjistit hodnoty namespace a path. V případě že sami vytváříme příslušný uživatelský panel pro XMP metadata ji známe. Jinak ji každopádně můžeme vypátrat možná trošku pracnějšími, ale fungujícími postupy. Při prvním vyplníme v dialogu File Info pole, u kterých chceme zjistit jejich "adresu", nějakými snadno identifikovatelnými hodnotami, následně pak v témže dialogu propátráme panel Advanced, v některých hiererachiích odpovídajících namespaces použitým v dokumentu se budou ukrývat požadované informace. Ty si opíšeme a nadále je můžeme používat k adresování ve vlastních skriptech.
Trochu problémem při daném postupu je každopádně skutečnost, že údaje z jednoho panelu se mohou ukrývat ve více namespaces či naopak. V tomto i jiných případech je zde pak i druhý postup: provedeme opět vyplnění testovacími daty a uložíme vyplněný obsah panelu do šablony pro metadata (viz příkaz "Save Metadata Template" na daném panelu). Složku této šablony si pak otevřeme v souborovém systému (příkaz "Show Templates", pak otevřít složku "Metadata Templates"). Tím se dostaneme k souboru šablony, který pak otevřeme v libovolném textovém editoru, zde vyhledáme požadovanou hodnotu, jež je "obalena" tagy odkazujícími na příslušnou namespace a path.
Metadatová pole pak lze nejen číst, ale rovněž vyplňovat, a to s pomocí metody
setProperty
. Ta má obecný tvar
setProperty(namespace,path,value)
kde namespace a path má stejný význam jako u getProperty
, value je pak hodnota, která se
pak do daného metadatového pole vkládá. Ukázka vyplňování:
//Ukázka vyplnění hodnot na panelu Origin
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","DateCreated","2005-10-23");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","City","Prague");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","State","Czech");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","Country","Czech
republic");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","Credit","Richard
Krejčí");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","Source","Internet");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","Headline","Poznejte
InDesign");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","Instructions","Publikovat
co nejdříve!");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","Urgency","4");
myMP.setProperty("http://ns.adobe.com/photoshop/1.0/","TransmissionReference","");
Vyplňování metadat s pomocí šablon, jež je podporováno na bázi dialogu File Info, lze
realizovat i s pomocí skriptů. Metoda save
takto provede odpovídající uložení všech XMP
polí daného dokumentu spolu s aktuálními hodnotami. Povinným parametrem této metody je
soubor, do něhož se má uložení provést:
//Vytvoří metadatovou šablonu
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
myMP.save(File("/c/clanky/skriptid/pokus"));
Metoda replace
pak slouží k načtení údajů z takovéhoto externího souboru a jejich
vložení do určeného dokumentu. Její první, povinný parametr přitom určuje soubor z
kterého se má načtení provést, druhý, volitelný parametr je pak logická hodnota, jež
stanovuje, zda se mají všechny hodnoty brát jako externí (tj. pokud není obsah některého
metadatového pole v externím souboru určen, nastaví se přesto v dokumentu odpovídající
hodnota jako prázdná, i kdyby byla předtím vyplněna, není-li daný parametr uveden, bere
se jako by měl hodnotu false).
//Aplikuje metadatovou šablonu
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
myMP.replace(File("/c/clanky/skriptid/pokus"));
Použít lze obdobně i metodu append
. Ta má obdobné parametry, metadata nicméně nepřepisuje, ale připojuje.
Skriptování pak dovoluje dokonce přidávat vlastní metadatová pole s pomocí (ne právě do
hloubky zdokumentované) metody createContainerItem
. Obecný tvar dané metody je
createContainerItem(namespace,path,[index],[container])
kde povinné údaje namespace a path mají stejný význam jako v předchozích případech, volitelný index určuje případnou pozici vkládaného pole (výchozí umístnění je na konec dané kolekce) a volitelný container stanovuje případně typ daného pole (více viz referenční příručka, s. 884). Blíže viz následující příklad:
//Vytvoří nové metadatové pole "email" pro uložení jednoho
či více e-mailů
var myDoc=app.activeDocument;
var myMP=myDoc.metadataPreferences;
myMP.createContainerItem("http://ns.adobe.com/xap/1.0/","email");
myMP.setProperty("http://ns.adobe.com/xap/1.0/","email[1]","");
myMP.setProperty("http://ns.adobe.com/xap/1.0/","email[2]","");
Sluší se pak zde poznamenat, že daným způsobem přidaná metadatová pole zůstanou skryta v dialogu File Info, výjimku tvoří panel Advanced. To se může občas hodit, častěji ale asi bude lepší skriptovat pouze s metadaty, jež jsou přístupná i přes odpovídající uživatelský panel.
XMP a linkované obrázky
Jak již bylo naznačeno výše, s XMP metadaty se lze setkat i v případě linkovaných
obrázků: zde bývají metadata typicky vložena ve Photoshopu. K přístupu je použito
vlastnosti linkXmp
objektu link
. Ta dovoluje pouze číst standardní metadatová pole, o
kterých jsme hovořili v prvním a druhém příkladu tohoto článku. Více již v následujícím
příkladu:
//Vypíše některá základní XMP metadata vybraného obrázku
var myImg=app.selection[0];
if(myImg.constructor.name=="Image"){
try{
alert("Obrázek byl vytvořen dne
"+myImg.itemLink.linkXmp.creationDate.toLocaleDateString()
+"\nv aplikaci
"+myImg.itemLink.linkXmp.creator
+"\njeho autorem
je"+myImg.itemLink.linkXmp.author);
}
catch(e){alert("Obrázek pravděpodobně
neobsahuje žádná metadata")}
}
else{alert("Nevybrali jste obrázek
nástrojem pro přímý výběr")}
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