Aspose.PDF for .NETをPythonで使用する

この記事では、Aspose.PDF for .NETとPythonを統合してPDFを作成する方法について短い例を説明します。

前提条件

PythonでAspose.PDF for .NETを使用するには、以下のrequirments.txtを使用してください:

pip==21.3.1
pycparser==2.21
pythonnet==2.5.2
setuptools==60.1.0

また、希望のフォルダにAspose.PDF.dllを配置する必要があります。

Pythonを使用したシンプルなPDFの作成

作業を進めるために、PythonNetをアプリケーションに統合し、いくつかの設定を行う必要があります。

import clr

aspose_pdf = clr.AddReference("D:\\aspose-python-net\\Aspose.PDF.dll")

from System import TimeSpan

from Aspose.Pdf import Document, Color, License, BorderInfo, BorderSide, Rectangle, HorizontalAlignment
from Aspose.Pdf import Table, MarginInfo
from Aspose.Pdf.Text import TextFragment, Position, TextBuilder,FontRepository

シンプルなドキュメントを生成する

シンプルなPDFを、クラシカルなテキスト「Hello, world」を用いて作成しましょう。詳しい説明については、このページを参照してください。

class HelloWorld(object):
    def __init__(self, licence_path):
        self.dataDir = "C:\\Samples\\"
        if licence_path:
            self.licence_path = licence_path
            self.aspose_license = License()
            self.aspose_license.SetLicense(self.licence_path)

    def run_simple(self):

        # ドキュメントオブジェクトを初期化
        document = Document()
        # ページを追加
        page = document.Pages.Add()
        # 新しいページにテキストを追加
        textFragment = TextFragment("Hello,world!")
        textFragment.Position = Position(100, 600)

        textFragment.TextState.FontSize = 12
        textFragment.TextState.Font = FontRepository.FindFont("TimesNewRoman")
        textFragment.TextState.BackgroundColor = Color.Blue
        textFragment.TextState.ForegroundColor = Color.Yellow

        # TextBuilderオブジェクトを作成
        textBuilder = TextBuilder(page)

        # PDFページにテキストフラグメントを追加
        textBuilder.AppendText(textFragment)

        document.Save("HelloWorld_out.pdf")

Pythonを使用して複雑なPDFを作成する

次の例は、画像や表を含む複雑なPDFドキュメントを作成する方法を示しています。この例は、次のページに基づいています。

class HelloWorld(object):
    def __init__(self,licence_path):
        self.dataDir = "C:\\Samples\\"
        if licence_path:
            self.licence_path = licence_path
            self.aspose_license = License()
            self.aspose_license.SetLicense(self.licence_path)

    def run_simple(self):
    # ... 省略 ...

    # 複雑なドキュメントを作成する
    def run_complex(self):

        # ドキュメントオブジェクトを初期化
        document = Document()
        # ページを追加
        page = document.Pages.Add()

        # 画像を追加
        imageFileName = self.dataDir + "logo.png"
        page.AddImage(imageFileName, Rectangle(20, 730, 120, 830))

        # ヘッダーを追加
        header = TextFragment("2020年秋の新しいフェリールート")
        header.TextState.Font = FontRepository.FindFont("Arial")
        header.TextState.FontSize = 24
        header.HorizontalAlignment = HorizontalAlignment.Center
        header.Position = Position(130, 720)
        page.Paragraphs.Add(header)

        # 説明を追加
        descriptionText = "訪問者はオンラインでチケットを購入する必要があり、チケットは1日に5,000枚に限定されています。\
        フェリーサービスは定員の半分で運行され、スケジュールも縮小されています。列を予想してください。"
        description = TextFragment(descriptionText)
        description.TextState.Font = FontRepository.FindFont("Times New Roman")
        description.TextState.FontSize = 14
        description.HorizontalAlignment = HorizontalAlignment.Left
        page.Paragraphs.Add(description)


        # テーブルを追加
        table = Table()

        table.ColumnWidths = "200"
        table.Border = BorderInfo(BorderSide.Box, 1.0, Color.DarkSlateGray)
        table.DefaultCellBorder = BorderInfo(BorderSide.Box, 0.5, Color.Black)
        table.DefaultCellPadding = MarginInfo(4.5, 4.5, 4.5, 4.5)
        table.Margin.Bottom = 10
        table.DefaultCellTextState.Font =  FontRepository.FindFont("Helvetica")

        headerRow = table.Rows.Add()
        headerRow.Cells.Add("出発都市")
        headerRow.Cells.Add("出発島")

        i=0
        while(i<headerRow.Cells.Count):
            headerRow.Cells[i].BackgroundColor = Color.Gray
            headerRow.Cells[i].DefaultCellTextState.ForegroundColor = Color.WhiteSmoke
            i+=1

        time = TimeSpan(6, 0, 0)
        incTime = TimeSpan(0, 30, 0)

        i=0
        while (i<10):
            dataRow = table.Rows.Add()
            dataRow.Cells.Add(time.ToString("hh\:mm"))
            time=time.Add(incTime)
            dataRow.Cells.Add(time.ToString("hh\:mm"))
            i+=1

        page.Paragraphs.Add(table)

        document.Save(self.dataDir + "Complex.pdf")

WindowsでPDF生成を実行する方法

このスニペットは、上記の例をWindows PCで実行する方法を示しています。class HelloWorldexample_get_started.pyファイルに位置していると仮定します。 Aspose.PDF for .NETの試用版を実行する場合、license_pathとして空の文字列を渡す必要があります。

import example_get_started

def main():

    example = example_get_started.HelloWorld("<license_path>")
    example.run_simple()
    example.run_complex()


if __name__ == '__main__':
    main()