Postřehy o práci s PDF/A

Opatření rektora UK č. 13/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.

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á. SIS navíc zatím není schopen vypsat konkrétní důvod odmítnutí, takže nezbývá než trochu věštit. Pokud se vám to stane, zkuste si stáhnout Veru a validaci vyzkoušet na svém stroji. 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 -sColorConversionStrategy=RGB -sOutputFile=vystup.pdf vstup.pdf

Se staršími verzemi Ghostscriptu použijte toto:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=vystup.pdf vstup.pdf

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

Složitější konverze dokáže Adobe Acrobat Pro. To je ale poměrně drahý komerční program. Naštěstí si lze zdarma stáhnout jeho zkušební verzi. Časem snad bude dostupný na některých fakultních počítačích.

Chytáky

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ů.

Stránku spravuje Martin Mareš