Python で XML を PDF に変換するには?

データドリブン アプリケーションの注目度が高まるにつれ、XML ファイルのデータから一般的に利用されている PDF 形式へのエクスポートを要望する声も増えています。このブログ記事では、Python を使って、効率よく XML を PDF へ変換する方法をステップバイステップで紹介します。それでは始めましょう!


XML を PDF に変換する Python ライブラリ

XML から PDF を生成する最も簡単な方法として、XML を PDF へ変換するために設計された Aspose.PDF for Python ライブラリの利用が挙げられます。簡単にインストールして使用できるので、XML ドキュメントを PDF ファイルに変換する効率的なソリューションを実現できます。
Aspose.PDF for Python で提供される強力な PDF 生成、操作、変換機能により、ドキュメント ワークフローを完全にコントロールできます。

Aspose.PDF for Python は、製品パッケージをダウンロードするか、コンソールで次の pip コマンドを実行することで PyPI からインストールする方法により入手できます。

> pip install aspose-pdf


Python で XML を PDF に変換しましょう

Aspose.PDF for Python を使えば、次の手順で簡単に XML を PDF に変換できます。

  • Document クラスのオブジェクトを生成します。
  • Document.bind_xml(file) メソッドで XML のファイル パスを指定し、バインドします。
  • Document.save(output_file_name) メソッドで XML を PDF に変換します。

下記は、Python で XML ファイルを PDF に変換するサンプル コードです。

import aspose.pdf as ap

# Create a new PDF document
pdfDocument = ap.Document();

# Transform and bind XML
pdfDocument.bind_xml( "C:\\Files\\sample.xml");

# Generate PDF from XML
pdfDocument.save( "C:\\Files\\generated-pdf.pdf");

convert-xml-to-pdf-in-python_simple.py hosted with ❤ by GitHub

読み込み対象の XML ファイル
このデモに使用したサンプルの XML ファイルです。

<?xml version="1.0" encoding="utf-8" ?>
<Document xmlns="Aspose.Pdf">
  <Page>
    <TextFragment>
      <TextSegment>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla odio lorem, luctus in lorem vitae, accumsan semper lectus. Cras a auctor leo, et tincidunt lacus.</TextSegment>
    </TextFragment>
  </Page>
</Document>

convert-xml-to-pdf-in-python_sample.xml hosted with ❤ by GitHub

変換結果の PDF
このデモで XML を PDF ドキュメントに変換した結果のスクリーンショットです。

Python で XML を PDF に変換


Python で XML から PDF を生成しましょう

最初のデモで紹介したシンプルな XML ファイルの変換だけでなく、Aspose.PDF for Python は、アプリケーション データを含んだ XML を読み込んで PDF ドキュメントを生成することもできます。この場合、最初に XSLT を使用して Aspose.PDF と互換性のある XML に変換し、その後で PDF 形式に変換する方法になります。

下記は、このデモで最終的に PDF ドキュメントに変換するサンプルの XML データです。

<?xml version="1.0" encoding="utf-8" ?>
<catalog>
  <cd>
	<Content>Hello World!</Content>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
  </cd>
  <cd>
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <country>USA</country>
    <company>RCA</company>
    <price>9.90</price>
    <year>1982</year>
  </cd>
  <cd>
    <title>Still got the blues</title>
    <artist>Gary Moore</artist>
    <country>UK</country>
    <company>Virgin records</company>
    <price>10.20</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Eros</title>
    <artist>Eros Ramazzotti</artist>
    <country>EU</country>
    <company>BMG</company>
    <price>9.90</price>
    <year>1997</year>
  </cd>
</catalog>

convert-xml-to-pdf-in-python_data.xml hosted with ❤ by GitHub

XSLT を使用して、このデータを Aspose.PDF と互換性のある XML に変換します。ここでは、下記のように XSLT のスタイルシート ファイル内でテンプレートを定義します。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
  <Document xmlns="Aspose.Pdf">
  <Page>
	 <PageInfo IsLandscape="false" Height="595" Width="420">
      <Margin Top="71" Bottom="71" Left="28" Right="28" />
    </PageInfo>
    <Header>
        <Margin Top="20" />
        <Table ColumnAdjustment="AutoFitToWindow">
            <Row>
                <Cell Alignment="1">
                    <TextFragment>
                        <TextSegment>Date: 11/01/2024</TextSegment>
                    </TextFragment>
                </Cell>
                <Cell Alignment="3">
                    <TextFragment>
                        <TextSegment>Page $p / $P</TextSegment>
                    </TextFragment>
                </Cell>
            </Row>
        </Table>
    </Header>
    <HtmlFragment>
      <![CDATA[
        <h1 style="font-family:Tahoma; font-size:16pt;">My CD Collection</h1>
        ]]>
    </HtmlFragment>
    <TextFragment>
      <TextSegment>Welcome</TextSegment>
    </TextFragment>
	<Table ColumnAdjustment="AutoFitToWindow" ColumnWidths ="10 10 10 10">
      <DefaultCellPadding Top="5" Left="0" Right="0" Bottom="5" />
      <Border>
        <Top Color="Black"></Top>
        <Bottom Color="Black"></Bottom>
        <Left Color="Black"></Left>
        <Right Color="Black"></Right>
      </Border>
      <Margin Top="15" />
      <Row BackgroundColor="LightGray" MinRowHeight="20">
        <Border>
          <Bottom Color="Black"></Bottom>
        </Border>
        <Cell Alignment="2">
          <TextFragment>
            <TextSegment>Title</TextSegment>
          </TextFragment>
        </Cell>
        <Cell>
          <TextFragment>
            <TextSegment>Artist</TextSegment>
          </TextFragment>
        </Cell>
        <Cell>
          <TextFragment>
            <TextSegment>Price</TextSegment>
          </TextFragment>
        </Cell>
        <Cell>
          <TextFragment>
            <TextSegment>Year</TextSegment>
          </TextFragment>
        </Cell>
      </Row>
	  <xsl:for-each select="catalog/cd">
		<Row>
        <Cell Alignment="2">
          <TextFragment>
            <TextSegment><xsl:value-of select="title"/></TextSegment>
          </TextFragment>
        </Cell>
        <Cell>
          <TextFragment>
            <TextSegment><xsl:value-of select="artist"/></TextSegment>
          </TextFragment>
        </Cell>
        <Cell>
          <TextFragment>
            <TextSegment><xsl:value-of select="price"/></TextSegment>
          </TextFragment>
        </Cell>
        <Cell>
          <TextFragment>
            <TextSegment><xsl:value-of select="year"/></TextSegment>
          </TextFragment>
        </Cell>
      </Row>
	  </xsl:for-each>
    </Table>
  </Page>
</Document>
</xsl:template>
</xsl:stylesheet>

convert-xml-to-pdf-in-python_template.xslt hosted with ❤ by GitHub

テンプレート ファイルを作成したら、前述の手順に沿って PDF を生成します。とはいえ、この処理は、Document.bind_xml(xml_file, xsl_file) メソッドで XML と XSLT のパスを指定するだけです。

下記は、Python で XML ファイルから PDF を生成するサンプル コードです。

import aspose.pdf as ap

# Create a new PDF document
pdfDocument = ap.Document();

# Transform and bind XML
pdfDocument.bind_xml( "C:\\Files\\data.xml",  "C:\\Files\\template.xslt");

# Generate PDF from XML
pdfDocument.save( "C:\\Files\\generated-pdf-table.pdf");

convert-xml-to-pdf-in-python_from_data.py hosted with ❤ by GitHub

このデモで XML から生成された PDF ドキュメントのスクリーンショットはこちらです。

Python で XML から PDF を生成


まとめ

この記事では Python で XML を PDF に変換する方法を紹介しました。ここで紹介した手順に沿うだけで、XML から PDF ファイルを生成する機能を簡単に Python アプリケーションに組み込むことができます。

Aspose 製品では、無償体験版のダウンロードが用意されています。
機能制限のない 30 日間無償の評価ライセンスもありますので、お気軽にお問い合わせください。

Aspose 製品の紹介 Web サイトはこちら

以上です。


© Aspose Pty Ltd 2001-2024.
How to Convert XML to PDF in Python

タイトルとURLをコピーしました