XML do PDF: jak zobrazit a vytisknout XML fakturu

Nejčastěji jde o elektronickou fakturu, kterou je potřeba přečíst, vytisknout nebo archivovat jako PDF. Návod ukazuje, kdy stačí správný program a jak si čitelnou podobu vyrobit sám.

Autor: Aktualizováno

Proč XML nejde „jen tak“ vytisknout

XML obsahuje data, ne vzhled. Faktura v XML má číslo, dodavatele, položky a částky, ale nikde v ní není napsáno, jakým písmem a kam na stránku se mají vypsat. Aby z ní vzniklo PDF, potřebuje program vědět, jak data zobrazit. Nabízí se tři cesty:

  1. otevřít soubor v programu, který daný formát zná (nejjednodušší),
  2. použít verzi faktury, která už je v PDF (často přijde spolu s XML),
  3. vytvořit si vlastní vzhled pomocí šablony XSLT a vytisknout ho z prohlížeče.

Cesta 1: program, který formát zná

Elektronické faktury v Česku přicházejí nejčastěji ve formátu ISDOC (přípona .isdoc nebo .isdocx). Tyto soubory umí načíst běžné účetní a fakturační programy a existují i samostatné prohlížeče ISDOC. Program fakturu zobrazí jako doklad a obvykle ji rovnou umí vytisknout nebo uložit do PDF.

U jiných formátů (exporty z e-shopů, datové výstupy úřadů) hledej v dokumentaci aplikace, která soubor vytvořila — často nabízí i jeho zobrazení nebo převod.

Cesta 2: PDF s vloženým XML

Standard ISDOC počítá i s variantou, kdy je XML faktura vložená přímo do PDF souboru (formát PDF/A-3). Takové PDF otevřeš v libovolném prohlížeči PDF jako běžný doklad a účetní program si z něj zároveň přečte strojová data. Pokud dodavatel posílá PDF, nemusíš XML převádět vůbec.

Cesta 3: šablona XSLT a tisk z prohlížeče

Pokud program k dispozici není, můžeš XML převést na HTML stránku pomocí XSLT a tu vytisknout do PDF. Jednoduchá faktura:

faktura.xml
<faktura>
  <cislo>FV2026-042</cislo>
  <dodavatel>Tiskárna Novák s.r.o.</dodavatel>
  <polozka>
    <nazev>Tisk letáků A5</nazev>
    <cena>10000.00</cena>
  </polozka>
  <celkem mena="CZK">12100.00</celkem>
</faktura>

a šablona, která z ní udělá čitelnou stránku:

faktura.xsl
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8"/>
  <xsl:template match="/faktura">
    <html>
      <body style="font-family: sans-serif">
        <h1>Faktura <xsl:value-of select="cislo"/></h1>
        <p>Dodavatel: <xsl:value-of select="dodavatel"/></p>
        <table border="1" cellpadding="6">
          <xsl:for-each select="polozka">
            <tr>
              <td><xsl:value-of select="nazev"/></td>
              <td><xsl:value-of select="cena"/></td>
            </tr>
          </xsl:for-each>
        </table>
        <p><strong>Celkem: <xsl:value-of select="celkem"/>
          <xsl:text> </xsl:text><xsl:value-of select="celkem/@mena"/></strong></p>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
  1. Otevři XML nástroje, vlož fakturu a na záložce XSLT vlož šablonu.
  2. Spusť transformaci a tlačítkem Stáhnout výstup ulož výsledek — HTML se uloží jako output.html.
  3. Otevři HTML v prohlížeči a dej Tisk (Ctrl+P, na Macu ⌘+P).
  4. Jako tiskárnu zvol Uložit jako PDF.

Stejnou šablonu pak můžeš použít na každou další fakturu ve stejném formátu. Z příkazové řádky totéž udělá xsltproc faktura.xsl faktura.xml > faktura.html.

Pro profesionální výstup se používá XSL-FO — varianta XSLT, která popisuje tiskovou stránku (okraje, zalomení, záhlaví). PDF z něj vyrábějí nástroje jako Apache FOP. Pro občasný tisk ale stačí postup přes HTML.

Nejrychlejší nouzové řešení

Když potřebuješ obsah jen rychle zkontrolovat, otevři XML v prohlížeči (zobrazí strom) nebo ho vlož do formátovače, který ho přehledně odsadí. Pak lze stránku vytisknout do PDF stejně jako v kroku 4 výše. Výsledek nebude vypadat jako faktura, ale všechny údaje v něm budou. Podrobnosti o otevírání XML souborů najdeš v návodu Jak otevřít XML soubor.