Automatizujte Adobe Acrobat (a Reader) 8 s pomocí JavaScriptu (3): Spouštění skriptů - 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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:



Software

Automatizujte Adobe Acrobat (a Reader) 8 s pomocí JavaScriptu (3): Spouštění skriptů

2. srpna 2007, 00.00 | V této části našeho seriálu o skriptování Acrobatu a Readeru se budeme zabývat různými možnostmi spouštění skriptů v prostředí Acrobatu Professional. Především se takto naše pozornost zaměří na spouštění skriptů z externích souborů, které nám dovolí prostředí Acrobatu rozšířit o vlastní příkazy a tlačítka, a dále použití JavaScriptu v dávkových sekvencích. Naší pozornosti každopádně neuniknou ani další možnosti nasazení skriptů, spojených s dokumentem či jeho součástmi.

Dnešní část našeho výkladu o skriptování Adobe Acrobatu (a Readeru) s pomocí JavaScriptu bude věnována způsobům, jakými lze skripty spouštět v prostředí Acrobatu Professional. Především se takto zaměříme na spouštění skriptů s pomocí externích souborů načítaných při startu Acrobatu či vkládaných do dávkových sekvencí Acrobatu, tyto totiž nabízejí při zpracování nejvíce možností. Neopomeneme nicméně ani spouštění skriptů na úrovni dokumentů a jejich objektů, důležité zejména při elektronickém publikování.

Základní koncepce spouštění skriptů

JavaScripty mohou být umístěny na různých úrovních (level), resp. destinacích, přičemž jsou spouštěny při nastání určité události (event). Na těchto úrovních se přitom můžeme setkat s různými bezpečnostními restrikcemi, tj. tím, že ne nutně musí být určitá metoda objektu použitelná na každé úrovni - hovoříme zde o tzv. privilegovaném (tj. spouštění metody je na dané úrovni povoleno) versus neprivilegovaném (tj. spouštění není povoleno) kontextu. Důvod restrikcí je přitom poměrně pochopitelný: JavaScript může být vkládán i do PDF dokumentů či jejich objektů (stránky, formulářové prvky, odkazy aj.) a pak automaticky spouštěn například při každém otevření dokumentu či určité stránky. Pokud by veškerý kontext byl vždy privilegovaný, znamenalo by to, že by hacker mohl vložit do PDF dokumentu kód, který by na počítači příjemce mohl napáchat různé škody - JavaScript v Acrobat totiž dovoluje i manipulace na bázi souborů, kontrolu jiných aplikací, internetovou komunikaci apod.

Od Acrobatu 6 každopádně existují cesty, jak neprivilegovaný kontext učinit privilegovaným , takto lze například spouštět kód pro souborové operace apod. ze skriptů uložených v certifikovaných dokumentech. Daná problematika je zajímavá a důležitá, nicméně pro naše aktuální účely ne až tak zásadní. Vrátíme se k ní případně někdy příště, ti, kdo ji potřebují znát bezprostředně mohou sáhnout zejména po dokumentu "Developing Acrobat Applications Using JavaScript" (s. 45-48).

Tolik k základní koncepci spouštění skriptů. Pojďme se nyní na jednotlivá umístění skriptů podívat trochu blíže.

Konzola

S konzolou, dovolující ladění skriptů, jsme se již seznámili v minulém díle tohoto seriálu. Z konzoly lze spouštět libovolný kód, nejsou zde bezpečnostní omezení, neboť se jedná o skripty, které vkládá přímo daný uživatel. Skripty odladěné s pomocí konzoly je nicméně třeba posléze umístit na jinou destinaci, neboť po ukončení práce v Acrobatu se z konzoly ztratí.

Skripty složek

Skripty použité na úrovni složky (folder level) jsou umístěny do samostatných souborů (s příponou .js), nacházejících se ve složce aplikace (App - tento kód je přístupný všem uživatelům dané instalace Acrobatu) či uživatele (User - tento kód je přístupný pouze konkrétnímu uživateli přihlášenému do systému). Obsah těchto souborů se načítá při startu Acrobatu, deklarace proměnných a funkcí zde obsažené jsou pak použitelné z prostředí Acrobatu po celou dobu jeho chodu. Skripty, jež v daných souborech nejsou proměnnými či funkcemi - tj. jsou definovány samostatně - se při startu rovnou provedou.

Složky folder skriptů lze pro danou instalaci Acrobatu zjistit z konzoly například s pomocí následujícího kódu (použití metody getPath), následně je pak vhodné pro další použití (viz další výklad) vytvořit si zástupce či jiný způsob odkazu dovolující se rychle dostat do daných složek.

console.println("App folder je "+app.getPath("app", "javascript"));
console.println("User folder je "+app.getPath("user", "javascript"));

S Acrobatem je dodáno několik předinstalovaných folder level souborů. Konkrétně to jsou pro App složku JSByteCodeWin.bin (předkompilovaný kód - nelze jej tedy ani číst) a debugger.js - oba tyto soubory definují základní objekty, vlastnosti a funkce užívané Acrobatem a nemohou být, resp. neměly by být ani měněny, ani jinak upravovány. Dále se na App úrovni mohou nacházet další definiční soubory, instalované obvykle s pluginy třetích stran apod. Obdobně se pak i v User složce nachází soubory užívané Acrobatem, kterými jsou glob.js a .glob.settings.js.

Rozšíření funkcionality Acrobatu dovoluje doplnění dalších souborů s příponou .js do jedné z daných složek. Rozdíl umístění je zde přitom jasný: funkcionalita přidaná do složky aplikace je dostupná pro všechny uživatele Acrobatu, funkcionalita v uživatelské složce pak pouze pro určitého uživatele.

A o jaký typ funkcionality se vlastně jedná? Jak již bylo naznačeno výše, lze především přidat skripty, které se ihned při startu provedou. Toho se používá zejména k modifikaci nabídek a nástrojových panelů Acrobatu, o kterých si povíme něco více v příštím díle tohoto seriálu. Dále je pak možné v rámci daného souboru definovat třeba vlastní uživatelské proměnné či funkce volané pak v jiných skriptech, což může zejména při intenzivnějším programování přinést značné výhody (ale pro náš následující výklad dané užití až tak zásadní není).

Co je pak ještě vhodné zdůraznit, daným způsobem lze využívat prakticky veškerou funkcionalitu poskytovanou skriptovacím enginem Acrobatu, daný kontext je privilegovaný. Důvod je poměrně jasný: obsah folder souborů má plně pod svou kontrolou uživatel daného počítače.

Ladit skripty přímou editací folder level souborů není příliš vhodné, neboť po každé změně musíme restartovat (tj. ukončit a znovu spustit) Acrobat. Lepší cestou je odladění skriptů prostřednictvím konzoly a jejich následné vložení do folder level souboru.

Dávkové sekvence

Jinou možnost, jak použít prakticky plný potenciál JavaScripu v Acrobatu Professional představuje použití dávkových sekvencí. Tyto jsou určeny k hromadnému zpracování, odpovídající prostředky nalezne uživatel v nabídce Další volby-Zpracování dokumentu-Dávkové zpracování. Podrobnosti ohledně samotné koncepce daného aparátu jsme probrali již v našem dřívějším článku (viz část "Dávkové zpracování v Adobe Acrobatu "), který takto zvídavému čtenáři doporučujeme k prostudování. Na tomto místě jenom zdůrazněme důvody, pro které je lepší při hromadném zpracování rozsáhlejší sady souborů spíše používat dávkovou sekvenci, nežli samotný skript (například spouštěný přes nabídku, viz výše). Hlavními výhodami jsou zde možnost nasadit předdefinované prostředky pro nastavení vstupních a výstupních podmínek zpracování a dále možnost zařadit do dávky další příkazy podporované uvedeným aparátem.

Přidání JavaScriptu do sekvence dovoluje příkaz Provést JavaScript. Poté, co jej uživatel do dávky vloží, má k dispozici odpovídající editor JavaScriptu, ve kterém je buďto možno JavaScript přímo vytvářet nebo (lépe) jej lze sem vložit přes schránku (typicky po odladění s pomocí konzoly).

aa8script3-1af.jpg

aa8script3-2f.jpg

Sekvence jsou uloženy v souborech speciálního, nezdokumentovaného formátu (přípona sequ) uložených ve složce Sequences Acrobatu. Opět se jedná o obsah, který je bezpečnostně nejméně omezen, ze stejných důvodů, jako v případě spouštění na úrovni Folder. Použití skriptů v dávkových sekvencích vyžaduje určité triky a speciální postupy, které jsou podrobněji popsány v dokumentu "Batch sequences" (tento obsahuje rovněž řadu zajímavých příkladů) a ke kterým se budeme v rámci našeho výkladu průběžně vracet. Vzhledem k povaze daného typu zpracování každopádně doporučujeme, aby uživatel nejprve JavaScript určený pro dávkovou sekvenci pečlivě odladil pomocí konzoly a to na vybraných testovacích datech, nasazení skriptu v rámci neošetřené dávky může mít fatální následky (vždy je vhodné zpracovávané soubory před spuštěním dávky zálohovat).

Dokument

Skripty vložené do dokumentu jsou dvou typů: document level a document action. Document level skript se provede při otevření dokumentu v prostředí Acrobatu (či Readeru). Při elektronickém publikování se daného typu skriptů používá například k výchozímu nastavení prostředí aplikace (například se přepne do fullscreen módu, spustí se prezentace aj.). Dále mohou document level skripty nést definice proměnných a funkcí, které jsou pak použitelné v jiných skriptech zpracovávajících daný dokument (mimo tento dokument dostupné nejsou). Editaci document level skriptů dovoluje (poté co je otevřen požadovaný dokument) příkaz Další volby-Zpracování dokumentu-JavaScripty dokumentu, který otevře odpovídající seznam skriptů, do kterého lze vkládat skripty s pomocí zabudovaného editoru Acrobatu.

Dále jsou zde dokument action skripty, tj. takové, které se spustí v souvislosti s určitou operací prováděnou nad dokumentem. Konkrétně těmito operacemi jsou uzavření, uložení či vytištění dokumentu, u ukládání a tisku lze takto přiřadit skripty, jež se provedou před a po provedení dané akce. Ke vkládání skriptů daného typu slouží příkaz Další volby-Zpracování dokumentu-Nastavit akce dokumentu. Vzhledem k tomu, že skripty vložené do dokumentů mohou být přenášeny nekontrolovaně mezi počítači, jsou pro ně stanovena výrazná bezpečnostní omezení (viz výklad v úvodní části).

aa8script3-3f.jpg

Stránka

Skripty lze přiřadit rovněž jednotlivým stránkám, přičemž se spouští při otevření či uzavření stránky. Přiřazení se v Acrobatu provádí přes navigační panel Stránky, kde uživatel zvolí stránku, použije kontextový příkaz Vlastnosti stránky a v následném dialogu přiřadí JavaScript na kartě Akce (nastaví Vybrané spuštění a poté v seznamu Vybraná akce zvolí Spustit JavaScript). Bezpečnostní omezení jsou obdobná jako v případě dokumentových skriptů.

aa8script3-4f.jpg

Formuláře

JavaScripty jsou zásadním prostředkem dodávajícím logiku PDF formulářům, tedy odpovídajícím formulářovým polím vloženým do PDF dokumentu. Přiřazení JavaScriptu formulářovému prvku se v prostředí Acrobatu provede nejsnáze tím způsobem, že uživatel vybere požadovaný prvek, poté z kontextové nabídky zvolí příkaz Vlastnosti, následně na kartě Akce zvolí způsob spouštění (pohyb myší nad polem, jeho aktivace či opuštění aj.) a v seznamu Vybraná akce zvolí Spustit JavaScript. Klepnutím na tlačítko Přidat pak otevře odpovídající editor JavaScriptu.

aa8script3-5f.jpg

Odkazy a záložky

Konečně lze JavaScript přiřadit i odkazům a záložkám (opět se jedná o obsah s bezpečnostními omezeními). V případě záložek je skript spuštěn klepnutím na záložku. Přiřazení skriptu zde funguje obdobně jako u stránek, tj. uživatel na panelu Záložky zadá nad zvolenou záložkou příkaz Vlastnosti, poté na kartě Akce přidá JavaScript postupem naznačeným výše.

aa8script3-6f.jpg

U odkazu (v terminologii české Acrobatu vazby) se opět přiřazení provede přes kontextový příkaz Vlastnosti. Na panelu Akce se pak přiřadí skript, který se spustí při každém klepnutí na odkaz.

Závěrem

Tímto dílem končíme nutnou "teorii", potřebnou pro pochopení dalšího výkladu. V příštím díle se již zaměříme na praktickou tématiku, kterou bezesporu je rozšiřování prostředí Acrobatu o vlastní nabídky a nástrojová tlačítka.

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

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » Go verze  

 » Rubriky  » Sazba  

 » Rubriky  » Webdesign  

 » Rubriky  » Polygrafie  

 » Rubriky  » PDF - Adobe Acrobat  

 » Rubriky  » Software  

 

 

 

Poptávka bazar

 

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

Uživatelské jméno:

Heslo: