Postřehy o práci s PDF/A

Opatření rektora UK č. 72/2017 zavádí povinnost odevzdávat všechny závěrečné práce a jejich posudky ve formátu PDF/A. Jelikož matfyzáci s produkcí PDF/A často bojují (podobně jako bojují zaměstnanci rektorátu s validací PDF/A v SISu), vznikla tato stránka, která se pokouší shrnout zajímavé zkušenosti s tímto formátem.

Není v mých silách řešit problémy všech uživatelů se všemi programy, ale pokud narazíte na nějaký opravdu zapeklitý problém, dejte mi prosím vědět na adresu mj@ucw.cz, rád se na něj podívám. Podobně budu rád za zprávu, pokud objevíte řešení nějakého problému, který by se mohl týkat i ostatních kolegů.

Co je PDF/A

PDF/A je profil formátu PDF, to znamená sada pravidel určujících, které části nezměrné specifikace PDF je povoleno/nutno/zakázáno používat, aby vznikl dokument vhodný k dlouhodobé archivaci. PDF/A je definováno ve více úrovních, na UK jsou povoleny úrovně 1a a 2u.

Přesná specifikace PDF/A není volně dostupná (ISO si za ni nechává krvavě platit), snad bude časem k půjčení v některé z univerzitních knihoven. Zde nabízíme alespoň stručné shrnutí.

Mezi nejdůležitější požadavky PDF/A-2u patří:

PDF/A-1a patří k trochu starší specifikaci PDF (takže nedovoluje například průhlednost), a naopak vyžaduje důsledné tagování struktury textu.

PDF/A v TeXu

PDF/A-1a v TeXu sázet prakticky nelze, PDF/A-2u s trochou snahy funguje. Je potřeba dostatečně nový pdfLaTeX s aktuálním balíčkem pdfx.

Kostra LaTeXového dokumentu pak vypadá třeba takto:

\documentclass{report}

% Vytvoříme soubor s meta-daty, aby ho nebylo nutné editovat odděleně
\usepackage{filecontents}
\begin{filecontents*}{\jobname.xmpdata}
\Author{A. U. Tor}
\Title{O nesmrtelnosti chrousta}
\Keywords{klíčová slova\sep další taková\sep ještě jiná}
\Subject{Abstrakt prace}
\Publisher{Univerzita Karlova}
\end{filecontents*}

\usepackage[a4paper, hmargin=1in, vmargin=1in]{geometry}
\usepackage[a-2u]{pdfx}
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}

\begin{document}

\end{document}

Jiné kódování dokumentu než UTF-8 nejspíš nebude fungovat (zejména kvůli meta-datům). Rodina fontů lmodern (Latin Modern) je podobná obvyklým CM fontům, ale má obsahuje všechny české znaky s akcenty a hlavně je vybavena správnými tabulkami ToUnicode.

Pokud chcete do textu vložit bitmapový obrázek, lze použít JPEG i PNG, ale pozor na to, aby měl dostatečné rozlišení a nebyl po vytištění ošklivě zubatý čí zaneřáděný kompresními artefakty.

Vektorové obrázky vkládejte jako PDF, ovšem musí také vyhovovat normě PDF/A. Metadata a definice barevných prostorů lze vynechat (doplní se při sestavování celého dokumentu), ale například všechna pravidla o fontech je třeba splnit. To výstup většiny programů nesplňuje, takže je potřeba obrázky konvertovat (viz níže).

PDF/A ve všelijakých Officech

Zde si prosím přečtěte rektorátní návod.

Validace

SIS momentálně ke kontrole toho, zda odevzdaný soubor splňuje normu PDF/A, používá validátor VeraPDF s upraveným validačním profilem. Konkrétní verzi Very a obsah profilu se dozvíte zde. Z výstupu Very se dá vyčíst, kterých stránek se problémy týkají, ale pozor, stránky se číslují od nuly.

Pozor na to, že Vera si občas vymýšlí a odmítne zcela korektní PDF, případně v obskurnějších případech dokonce rovnou spadne. Už je to lepší, než bývalo, ale stále se to stává. Pokud jste přesvědčeni, že vaše PDF je korektní, ale Vera ho odmítá, dejte mi vědět.

Také můžete vyzkoušet validátor Národního archivu. Pravděpodobně také není dokonalý.

Konverze

Neposlušná PDF lze v některých případech do PDF/A automaticky konvertovat. Pozor na to, že konverze může být ztrátová a například může převést kusy textu napsané nekorektními fonty na obrázky, takže namísto nedokonalé extrakce textu už nebude fungovat žádná. Doporučuji tedy konvertovat spíš konkrétní problematické obrázky než celou práci.

Jednodušší případy konverze zvládá svobodně šiřitelný program Ghostscript. Můžete ho spustit například takto:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite
   -dPDFA=2
   -dPDFACompatibilityPolicy=1
   -sColorConversionStrategy=RGB -dOverrideICC=true
   -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dDownsampleColorImages=false
   -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dDownsampleGrayImages=false
   -sOutputFile=vystup.pdf vstup.pdf

Pokud by to nestačilo, zkuste přidat -dNoOutputFonts, což nahradí písmena fontů křivkami.

Pozor na to, že GS někdy není ochoten pracovat se soubory nacházejícími se mimo pracovní adresář.

Pokud se vám nechce Ghostscript instalovat, můžete použít online konvertor.

Složitější konverze dokáže Adobe Acrobat Pro. To je poměrně drahý komerční program. Můžete si zdarma stáhnout jeho zkušební verzi, případně využít instalaci v labu SW1 na počítači ROT-346 (hned vedle dveří do učebny).

Chytáky

Hlášení z Adobe Readeru

Když vám Adobe Reader tvrdí, že dokument je v PDF/A, znamená to jedno jediné: je to uvedené v metadatech dokumentu. Vůbec to nevypovídá o tom, zda dokument všechny požadavky profilu PDF/A splňuje.

Fonty

Pozor na to, že většina TeXových fontů není v PDF/A použitelná kvůli chybějícím unicodovým tabulkám. Type1 a OpenType fonty většinou fungují, naopak původní fonty vytvořené v Metafontu obvykle nefungují (pokud k nim neexistuje i Type1/OT verze). To může být problém u méně obvyklých matematických symbolů.

Vložené články

Pokud chcete do své práce vložit PDFka se svými články, která jste dostali od vydavatele, tak si to raději dvakrát rozmyslete. Vydavatelé posílají takové hrůzy, že šance vytvořit z nich korektní PDF/A je minimální. Také si ověřte, že vám k tomu vaše smlouva s vydavatelem dává právo. Doporučený postup je prohlásit článek za přílohu práce, která bude svázaná s prací, ale elektronicky se odevzdá jako samostatná příloha.

UTF-8 BOM

Některé textové editory přidávají na začátek dokumentů v UTF-8 posloupnost bajtů EF BB BF, což je zakódovaný Byte Order Mark. V UTF-8 nemá vůbec žádný význam, ale pod Windows se (poněkud zvrhle) používá pro identifikaci UTF-8. V TeXovém zdrojáku obvykle nevadí, ale v XMP metadatech ano. Takže pokud byste narazili na záhadné chybové hlášky při parsování XMP, ověřte si, zda na jeho začátku nestraší BOM.

V balíčku pdfx chybí pdfx.sty

V některých verzích balíčku pdfx (třeba té z jara 2019) skutečně pdfx.sty chybí. Vygeneruje se spuštěním latex pdfx.ins v adresáři src.

LaTeX si stěžuje na přepínač "nosetpagesize"

Nové verze pdfx zapínají přepínač nosetpagesize balíčku graphics. Ten je dostupný až v novějších verzích. Kdybyste na to narazili, buďto si stáhněte aktuální graphics nebo zakomentujte příslušný řádek v pdfx.sty.

Obrázky kreslené v Ipe

Aby editor Ipe produkoval obrázky splňující PDF/A, přidejte v document properties do Latex preamble řádek:

\usepackage[a-2u]{pdfx}
Stránku spravuje Martin Mareš