Linux E X P R E S

Facebook

PDF: Poznejte dobový fenomén

Portable Document Format je datový formát souboru určený pro elektronickou distribuci dokumentů. Byl navržen firmou Adobe Systems Inc. a poprvé specifikován v roce 1993. Byl vytvořen s myšlenkou stoprocentní přenositelnosti dokumentů a nezávislosti na použitém operačním systému a software.


Základem pro PDF se stal PostScript, není zde implementován plně, ale v modifikované formě. Dokumenty mohou obsahovat text i obrázky, můžeme vložit fonty, čímž zajistíme vždy totožné zobrazení. Dokonce je zde možná i podpora multimediálních a interaktivních prvků a také nezanedbatelná komprese. To vše s relativně malou velikostí výsledného souboru.

PostScript je programovací jazyk od firmy Adobe navržený pro tiskárny již v roce 1985 a dnes hojně využívaný i pro jiná postskriptová zařízení, jako jsou například osvitové jednotky. Stal se standardem v předtiskové přípravě a zpracování dokumentů. Pomocí tohoto jazyka lze popsat vzhled stránky a umístění jednotlivých objektů na stránce.

PostScript se postupem času modifikoval: Level 1, Level 2, PostScript3 (také označován jako Level 3). Level 1 neumí pracovat s barvou a veškeré obrázky jsou černobílé. Level 2 podporuje barevné obrázky a kompresi. Level 3 je rozšířením Levelu 2, dokáže vložit fonty (CID font embedding). V případě separací budou barvy ve CMYKu.

Variantou PostScriptu není jen PDF, ale také populární jednostránkový EPS (Encapsulated PostScript), speciální formát pro separace barev DCS (Desktop Color Separation) a další.

Ukázka PostScriptu

Na obrázku vidíte červený obdélník s černou konturou, původně je umístěný na stránce formátu A4. Komentáře jsou uvedeny znakem procento, čísla v řádcích moveto a lineto jsou souřadnice. Počátek souřadnicového systému 0,0 je v levém dolním rohu. Možná uvidíte podobnost například s jazykem HPGL, který se používá pro plottery k popisu posunu péra. Tento soubor obdelnik.ps použijeme jako demonstrační ukázku.

Náš ukázkový soubor byl vytvořen v programu Inkscape 0.41.1 a přímo z něj uložen do formátu PostScriptu.

%!PS-Adobe-2.0
%%Creator: inkscape 0.41.1
%%Pages: 1
%%Orientation: Portrait
%%BoundingBox: 0 0 596 842
%%HiResBoundingBox: 0.0000000 0.0000000 596.00000 842.00000
%%EndComments
%%Page: 1 1
0 842 translate
0.80000000 -0.80000000 scale
gsave [1.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000] concat
1.0000000 0.0000000 0.0000000 setrgbcolor
newpath
54.285713 66.647896 moveto
105.71428 66.647896 lineto
105.71428 209.50504 lineto
54.285713 209.50504 lineto
54.285713 66.647896 lineto
closepath
fill
0.0000000 0.0000000 0.0000000 setrgbcolor
[] 0 setdash
0.99000001 setlinewidth
0 setlinejoin
0 setlinecap
newpath
54.285713 66.647896 moveto
105.71428 66.647896 lineto
105.71428 209.50504 lineto
54.285713 209.50504 lineto
54.285713 66.647896 lineto
closepath
stroke
grestore
showpage

Vytváříme PDF dokument

V Linuxu je vytvoření PDF dokumentu triviální záležitost. Textové editory pro grafická prostředí mají tuto funkci již implementovánu v sobě, nebo spouštějí na pozadí konzolové nástroje pro práci s PostScriptem. Balíčky, jako jsou gs-gpl, gs-eps, gs-common, xpf-utils, obsahují množství těchto utilit jak pro práci s dokumenty a fonty, tak i pro tisk na různé typy tiskáren (LaserJet, BubbleJet a DeskJet).Ve správci tiskáren vždy najdeme speciální (pseudo) tiskárnu pro zápis do PDF souboru a PostScriptu. My se nyní budeme zabývat konzolovými aplikacemi.

Ps2pdf - distilujeme s tučňákem

Jak je výše uvedeno, základem PDF dokumentu je PostScript. Budeme tedy provádět konverzi zdrojového postskriptového souboru. Slouží k tomu nástroj ps2pdf, ten pro svou činnost, stejně jako ostatní nástroje, využije interpretr postskriptového jazyka Ghostscript. Ps2pdf je obdobný program jako Adobe Acrobat Distiller, pouze bez grafického rozhraní. Použití je velmi jednoduché, jako argument zadáme vstupní soubor (ps2pdf obdelnik.ps), ten musí být ve formátu .ps nebo .eps. Pokud nezadáme jako další argument jméno výstupního souboru, bude vytvořen v aktuálním adresáři soubor se stejným jménem, ale s příponou .pdf. Ps2pdf má ještě další varianty: ps2pdf12 - vytvoří PDF verze 1.2 kompatibilní s Acrobat 3 a vyšším; ps2pdf13 - vytvoří PDF verze 1.3 kompatibilní s Acrobat 4 a vyšším; ps2pdfwr (ps2pdf14) - vytvoří PDF soubor bez specifikace verze kompatibility.

Ghostscript se spouští z příkazové řádky příkazem gs a je to interpreter jazyka PostScript a PDF. Je vyroben také pro operační systémy OS/2 a Windows. Sekvenčně čte vstupní soubor a provádí ho jako ghostskriptový program. Jakmile toto provede, čte jednotlivé řádky ze standardního vstupu (klávesnice). Interpreter se ukončí, jakmile narazí na příkaz quit, konec řádku, nebo signál pro ukončení ([Control-c] z klávesnice). Dokáže pracovat s různými zařízeními, jejich seznam získáme příkazem gs -h.

Optimalizujeme

Pdfopt

Optimalizace souboru pomocí pdfopt se provádí pro urychlení zobrazování jednotlivých stran dokumentu, pokud k nim přistupujeme prostřednictvím sítě. Argumenty příkazu, vstupní a výstupní soubor nesmí být stejné, jinak dojde ke zničení souboru. pdfopt neprovádí syntaktickou kontrolu.

ps2ps, eps2eps

Konvertuje vstupní postskriptový soubor na jednodušší a obvykle rychlejší výstupní postskriptový soubor. Normálně je výstup proveden na PostScript Level 2, ale volbou -dLanguageLevel=1 jej můžeme změnit na Level 1.

ps2epsi

ps2epsi použije Ghostscript pro zpracování postskriptového souboru a vytvoření nového PostScriptu ve formátu EPSI (Encapsulated PostScript Interchange). EPSI je speciální varianta EPS, která obsahuje bitmapový náhled finální zobrazované strany. Tomuto formátu obvykle rozumí programy pro DTP a dokážou s ním i pracovat. Náhled je však ve velmi malém rozlišení a není barevný, avšak pro finální tisk se použije skutečný PostScript. Tento formát je ovšem poměrně omezující, neboť ne všechny postskriptové soubory se dají na tento formát konvertovat.

Pdfinfo - kdopak tě vytvořil?

Z PDF dokumentu můžeme vyčíst následující informace pomocí nástroje pdfinfo.

  • title - titulek, zde bývá uvedeno například jméno zdrojového souboru při vytváření PDF.
  • subject - předmět, libovolný text;
  • keywords - klíčová slova;
  • author - autor dokumentu;
  • creator - zde bývá obvykle uveden název programu, ve kterém byl PDF soubor vytvořen, výrobce programu nebo také cokoliv, co tam zapíše autor při ruční výrobě souboru.
  • producer - viz creator;
  • creation date - datum vytvoření PDF souboru;
  • modification date - datum případné modifikace PDF souboru;
  • tagged - zda je dokument tagován, hodnoty yes/no;
  • page count - fyzický počet stran PDF dokumentu;
  • encrypted flag - zda je text zakódován, hodnoty yes/no;
  • print and copy permissions - povolení k tisku a prohlížení, pouze pokud je soubor zakódován;
  • page size - velikost stránky obvykle uváděna v bodech (pts) a formátu (A4, letter, atd.). Velikost uvedená v bodech nemusí vždy souhlasit s normovanými velikostmi formátů stránek, pokud byl použit bounding box v případě EPS. file size - velikost souboru v bajtech;
  • optimized (linearized) - zda je dokument optimalizován, například pro web nebo pro tisk ve velkém rozlišení, hodnoty yes/no;
  • PDF version - verze PDF;
  • metadata - pouze, když jsou požadována.

Obvykle nejsou všechny tyto položky v souboru uvedeny a zobrazí se nám jen některé. Podívejme se opět na informace souboru obdelnik.pdf.

Producer:       ESP Ghostscript 7.07
Tagged:         no
Pages:          1
Encrypted:      no
Page size:      595 x 842 pts (A4)
File size:      825 bytes
Optimized:      no
PDF version:    1.2

Pdffonts - čímpak tě napsali?

Nástroj pdffonts je podobně jako pdfinfo pouze informativní. Po zadání jména souboru jako argumentu (pdffonts xpdfutils.pdf) získáme seznam použitých písem, jejich jméno, typ (Type 1,Type 1C , Type 3, TrueType, CID), zda je přidán v PDF souboru (emb), nahrazen (sub), zda je přidána unikódová mapa (uni) a ID objektu.

name                type         emb sub uni object ID
------------------- ------------ --- --- --- ---------
Times-Bold          Type 1       no  no  no      18  0
Times-Roman         Type 1       no  no  no      16  0
Courier-Bold        Type 1       no  no  no      17  0
Times-BoldItalic    Type 1       no  no  no      19  0

Pdf2ps - cesta zpět 1

Tento nástroj opět zaměstná Ghostscript konverzí souboru, tentokrát z PDF do PostScriptu. Pokud nezadáme žádné další volby mimo vstupní .pdf a výstupní .ps soubor, bude konverze provedena do PostScript Level 2. Chceme-li jiný výsledek, musíme zadat volbu -dLanguageLevel=1 pro Level 1, nebo -dLan-guageLevel=3 pro Level 3.

Pdftops - cesta zpět 2

Výkonnějším nástrojem pro převod PDF na PS nebo EPS je pdftops z balíčku xpdf. Čte vstupní PDF soubor a zapisuje do výstupního PS souboru. Pokud není zadán výstupní soubor, vytvoří soubor s příponou .ps, nebo .eps v případě zadané volby -eps. Pro výstupní soubor si můžeme zvolit Level 1 až 3 a dokonce i separovaný PostScript. V případě separace budou barvy převedeny do barevného profilu CMYK. Můžeme zakázat kopírování fontů ze zdrojového souboru jak pro Type 1, tak pro TrueType. Všechny volby můžeme nastavit v ~/.xpdfrc.

Ps2ascii

Ghostskriptový převodník PostScriptu nebo PDF na ASCII text. Extrahuje text z postskriptového nebo PDF souboru. Pokud není v příkazovém řádku specifikován vstupní soubor, Ghostscript načítá ze standardního vstupu, ale v případě PDF musíme zadat vstupní soubor, ne standardní vstup. Pokud nezadáme výstupní soubor, ASCII text bude vypsán na standardní výstup. Bohužel tento nástroj nedovede zjistit ve vstupním souboru kódování fontu, proto je lepší použít jiný nástroj, pstotext, toto doporučení je uvedeno v manuálu.

Pstotext

Je extraktor textu staršího data, vyžadující Ghostscript, tentokrát z dílny společnosti Digital Equipment Corporation. Což naznačuje, že je portován na ostatní platformy z původního UNIXu. Načítá ze vstupního souboru postskriptový nebo PDF soubor a na standardní výstup posílá text. Bohužel je výstupní text vždy přeložen do Latin-1, znaky, které nepatří do této kódové tabulky, zobrazí jako sekvenci znaků nebo ---. Dokáže pracovat s dokumentem otočeným o 90 a 270 stupňů.

Pdftotext

Tento nástroj je také součásti balíčku xpdf a slouží ke konverzi PDF souboru do textového souboru. Pokud nezadáme výstupní jméno souboru, bude vytvořen v aktuálním adresáři textový soubor stejného jména jako vstupní, ale s příponou .txt. Zadáme-li místo výstupního souboru - (pomlčku), bude text vypsán na standardní výstup.

Při spuštění nástroje pdftotext dojde k načtení uživatelského konfiguračního souboru ~/.xpdfrc, pokud existuje. Pokud ne, načte se systémová konfigurace ze souboru /etc/xpdf/xpdfrc. Tyto konfigurační soubory načítají při startu všechny nástroje z balíčku xpdf (xpdf, pdftops, pdfinfo, pdffonts, pdftoppm, pdfimages).

Na rozdíl od ps2ascii je pdftotext daleko výkonnější a robustnější nástroj. Umožňuje vložení hesla pro zakódovaný PDF soubor, nastavení kódování pro výstupní textový soubor a další. Také vrací pět návratových chybových kódů. Většinu voleb můžeme zadat do konfiguračního .rc souboru a již je nemusíme zadávat v příkazovém řádku.

iconv a cstocs

Tyto dva nástroje sice už nemají nic společného s PostScriptem, ale může se stát, že po konverzi do prostého textu nám nebude vyhovovat výsledné kódování. Zvláště když výsledný text budeme nahrávat například do mobilního telefonu nebo podobných zařízení, která obvykle pracují s kódováním Win1250. Iconv je nástroj, který vždy najdete v systému, je součásti balíčku libc6. Slouží pro konverzi textu z a do všech podporovaných kódových stránek. Seznam kódových stránek zjistíte příkazem iconv -l. Neděste se několikastránkového výpisu, pro jedno kódování jsou asociovány další jména, například ISO-8859-2 je totéž, co ISO8859-2 a ISO_8859-2. Pokud chceme překódovat textový soubor z Latin-2 do Win1250, uděláme to takto:

Kromě iconv a cstocs lze také ještě vřele doporučit program Enca Davida Yeti Nečase. To je nástroj snad nejinteligentnější, bohužel se zatím do distribucí nedostává automaticky. Umí konvertovat podle nastavených locales, stačí tedy pouhé enca -c soubor.txt k tomu, aby bylo kódování soubor.txt převedeno na to, které používáte ve svém systému. Krom toho umí Enca také vypsat, v jakém kódování je soubor. Možnosti jsou však mnohem bohatší. Poznámka redakce.

iconv -f ISO8859-2 -t WINDOWS-1250 soubor.txt -o soubor-win.txt

Pokud nezadáme volbu -o pro výstupní soubor, bude text vypsán na standardní výstup. Součástí balíčku perl je obdobný nástroj piconv.

Cstocs na rozdíl od iconv není v systému automaticky a pokud ho chceme používat, musíme ho nainstalovat, nebývá součástí většiny distribucí. Je to konvertor pouze pro český a slovenský jazyk, umí tedy pracovat s těmito kódováními: 1250, 1252, ASCII, Cork, IL1, IL2, Kam, Koi8, MAC, MacCE, PC2, PC2a, TeX, UTF8, VGA. Chceme-li překódovat textový soubor z ISO Latin-2 do Win1250, provedeme cstocs il2 1250 soubor.txt > soubor-win.txt. Výstup směřuje na standardní výstup, pokud chceme výstup do souboru, musíme provést přesměrování do souboru pomocí >, jak je uvedeno výše.

Pdftoppm - bitmapa jak malovaná

Další konverzní nástroj z balíčku xpdf, tentokrát je výstupním souborem rastrový obrázek formátu PPM (Portable Pixmap). Formát PPM má ještě variantu PGM (Portable Graymap) pro obrázky v 256 odstínech šedi a PBM (Portable Bitmap) pro monochromatickou bitmapu. Pdftoppm čte data ze vstupního PDF souboru a zapisuje každou stranu zvlášť do vlastního PPM souboru. Výstupní soubory indexuje pořadovým číslem fyzické strany. Volbou -r můžeme zadávat hodnotu výstupního rozlišení v DPI, výchozí hodnota je 150. Typ výstupního souboru definujeme volbou -mono pro monochromatickou bitmapu PBM, -gray pro odstíny šedi v PGM.

Jsou zde i zajímavé volby pro zpracování fontů: -t1lib zapíná/vypíná použití t1lib pro rastrování Type 1 fontů, -freetype zapíná/vypíná použití FreeType pro rastrování True Type/Type 1 fontů, -aa zapíná/vypíná anti-aliasing. Tyto volby můžeme nastavit v konfiguračním .rc souboru.

Pokud chceme převést pětistránkový PDF dokument do bitmapové podoby s rozlišením 300 dpi, provedeme to příkazem pdftoppm -r 300 dokument.pdf bitmapa. Pokud má soubor dokument.pdf pět fyzických stran, bude vytvořeno pět souborů: bitmapa-000001.ppm, bitmapa-000002.ppm, bitmapa-000003.ppm, bitmapa-000004.ppm, bitmapa-000005.ppm.

S úspěchem můžeme konstatovat, že jakékoliv zpracování různých variant postskriptových souborů, ať je to vytváření, konverze nebo prohlížení, je na jakýchkoliv *NIXových systémech bezproblémové. Nabídka softwaru je dostačující a hardwarové požadavky jsou minimální. Postskriptové formáty jsou standardizované a velmi dobře přenositelné.

Prohlížíme PDF

Když společnost Adobe vytvořila nový datový formát, vytvořila i prohlížeč a SDK (Software development kit) pro vývojáře. Originální prohlížeč je dnes již všem známý a populární Adobe Acrobat Reader. Poslední verze je 7.0 a je zdarma dostupná pro všechny známé platformy a operační systémy, namátkou Linux, Windows, MAC, Pocket PC atd. Uživatelé Linuxu však nejsou odkázáni pouze na tento produkt, k dispozici je celá řada prohlížečů: kpdf, xpdf, kghostview, acrobat, gpdf, gnome-gv, gv. Dokonce můžeme PDF soubor přečíst i v konzolovém Midnight Commanderu stiskem klávesy [F3]. Převede si na pozadí PDF do textu a zobrazí jej.

Rozdíly mezi jednotlivými prohlížeči pro grafická prostředí jsou jen v rychlosti načítání a zobrazování na monitoru, kvalitě zobrazení náhledu na monitoru. Výsledný tisk na tiskárnu je stejně kvalitní, což je dáno postkriptovým zdrojovým formátem.

Diskuze (0) Nahoru