PDFをPythonで異なる画像形式に変換する

概要

この記事では、Pythonを使用してPDFを異なる画像形式に変換する方法を説明します。以下のトピックをカバーしています。

画像形式: TIFF

画像形式: BMP

画像形式: EMF

画像形式: JPG

画像形式: PNG

画像形式: GIF

画像形式: SVG

PythonでPDFを画像に変換

Aspose.PDF for Python は、PDFを画像に変換するためにいくつかのアプローチを使用します。 一般的に言って、私たちは2つのアプローチを使用します: Deviceアプローチを使用した変換とSaveOptionを使用した変換です。このセクションでは、これらのアプローチの1つを使用してPDFドキュメントをBMP、JPEG、GIF、PNG、EMF、TIFF、SVG形式の画像に変換する方法を示します。

ライブラリには、仮想デバイスを使用して画像を変換することを可能にするいくつかのクラスがあります。DocumentDeviceはドキュメント全体の変換を対象としていますが、ImageDeviceは特定のページ用です。

DocumentDeviceクラスを使用してPDFを変換

Aspose.PDF for Python はPDFページをTIFF画像に変換することを可能にします。

TiffDevice (DocumentDeviceに基づく)クラスは、PDFページをTIFF画像に変換することを可能にします。このクラスは、PDFファイル内のすべてのページを単一のTIFF画像に変換することを可能にするprocessという名前のメソッドを提供します。

PDFページを1つのTIFF画像に変換

Aspose.PDF for Pythonは、PDFファイル内のすべてのページを単一のTIFF画像に変換する方法を説明します:

手順: PythonでPDFをTIFFに変換

  1. Documentクラスのオブジェクトを作成します。

  2. TiffSettingsTiffDeviceオブジェクトを作成します。

  3. PDFドキュメントをTIFFに変換するためにprocessメソッドを呼び出します。

  4. 出力ファイルのプロパティを設定するために、TiffSettingsクラスを使用します。

以下のコードスニペットは、すべてのPDFページを単一のTIFF画像に変換する方法を示しています。


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_tiff.tiff"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # 解像度オブジェクトを作成
    resolution = ap.devices.Resolution(300)

    # TiffSettingsオブジェクトを作成
    tiffSettings = ap.devices.TiffSettings()
    tiffSettings.compression = ap.devices.CompressionType.LZW
    tiffSettings.depth = ap.devices.ColorDepth.DEFAULT
    tiffSettings.skip_blank_pages = False

    # TIFFデバイスを作成
    tiffDevice = ap.devices.TiffDevice(resolution, tiffSettings)

    # 特定のページを変換し、画像をストリームに保存
    tiffDevice.process(document, output_pdf)

ImageDeviceクラスを使用してPDFを変換する

ImageDeviceBmpDeviceJpegDeviceGifDevicePngDeviceEmfDeviceの祖先です。

  • BmpDeviceクラスを使用すると、PDFページをBMP画像に変換できます。

  • EmfDeviceクラスを使用すると、PDFページをEMF画像に変換できます。

  • JpegDeviceクラスを使用すると、PDFページをJPEG画像に変換できます。

  • PngDeviceクラスを使用すると、PDFページをPNG画像に変換できます。

  • GifDeviceクラスを使用すると、PDFページをGIF画像に変換できます。

以下は、PDFページを画像に変換する方法を見てみましょう。

BmpDevice クラスは、PDFファイルの特定のページをBMP画像形式に変換することを可能にする process という名前のメソッドを提供します。他のクラスも同じメソッドを持っています。したがって、PDFページを画像に変換する必要がある場合は、必要なクラスをインスタンス化するだけです。

以下の手順とPythonでのコードスニペットは、この可能性を示しています。

手順: PythonでPDFを画像(BMP, EMF, JPG, PNG, GIF)に変換

  1. Document クラスを使用してPDFファイルをロードします。
  2. ImageDevice のサブクラスのインスタンスを作成します。例えば、
  3. ImageDevice.Process() メソッドを呼び出して、PDFから画像への変換を実行します。

PDFをBMPに変換


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "many_pages.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_bmp"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # Resolutionオブジェクトを作成
    resolution = ap.devices.Resolution(300)
    device = ap.devices.BmpDevice(resolution)

    for i in range(0, len(document.pages)):
        # 保存用のファイルを作成
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.bmp", 'x'
        )
        # 特定のページを変換し、画像をストリームに保存
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()

PDFをEMFに変換


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_emf"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # 解像度オブジェクトを作成
    resolution = ap.devices.Resolution(300)
    device = ap.devices.EmfDevice(resolution)

    for i in range(0, len(document.pages)):
        # 保存するファイルを作成
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.emf", 'x'
        )
        # 特定のページを変換し、画像をストリームに保存
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()

PDFをJPEGに変換


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "many_pages.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_jpeg"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # 解像度オブジェクトを作成
    resolution = ap.devices.Resolution(300)
    device = ap.devices.JpegDevice(resolution)

    for i in range(0, len(document.pages)):
        # 保存するファイルを作成
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.jpeg", "x"
        )
        # 特定のページを変換し、画像をストリームに保存
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()  

PDFをPNGに変換


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_png"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # Resolutionオブジェクトを作成
    resolution = ap.devices.Resolution(300)
    device = ap.devices.PngDevice(resolution)

    for i in range(0, len(document.pages)):
        # 保存用のファイルを作成
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.png", 'x'
        )
        # 特定のページを変換し、ストリームに画像を保存
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()

PDFをGIFに変換


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "many_pages.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_gif"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # Resolutionオブジェクトを作成
    resolution = ap.devices.Resolution(300)

    device = ap.devices.GifDevice(resolution)

    for i in range(0, len(document.pages)):
        # 保存用のファイルを作成
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.gif", 'x'
        )
        # 特定のページを変換し、ストリームに画像を保存
        device.process(document.pages[i + 1], imageStream)
        # ストリームを閉じる
        imageStream.close()  

SaveOptionsクラスを使用してPDFを変換する

この記事のこの部分では、PythonとSaveOptionsクラスを使用してPDFをSVGに変換する方法を示します。

スケーラブルベクターグラフィックス (SVG) は、静的および動的(インタラクティブまたはアニメーション)の両方の二次元ベクターグラフィックのためのXMLベースのファイル形式の仕様ファミリーです。SVG仕様は、1999年以来World Wide Web Consortium (W3C)によって開発されているオープン標準です。

SVG画像とその動作はXMLテキストファイルで定義されています。これは、それらが検索、インデックス化、スクリプト化され、必要に応じて圧縮されることを意味します。XMLファイルとして、SVG画像は任意のテキストエディタで作成および編集できますが、Inkscapeのような描画プログラムで作成する方が便利です。

Aspose.PDF for Pythonは、SVG画像をPDF形式に変換する機能をサポートしており、PDFファイルをSVG形式に変換する機能も提供しています。 この要件を達成するために、SvgSaveOptions クラスが Aspose.PDF 名前空間に導入されました。SvgSaveOptions のオブジェクトをインスタンス化し、それを Document.Save() メソッドの第二引数として渡します。

以下のコードスニペットは、Python で PDF ファイルを SVG 形式に変換する手順を示しています。

手順: Python で PDF を SVG に変換する

  1. Document クラスのオブジェクトを作成します。
  2. 必要な設定で SvgSaveOptions オブジェクトを作成します。
  3. Document.Save() メソッドを呼び出し、SvgSaveOptions オブジェクトを渡してPDF文書をSVGに変換します。

PDFをSVGに変換する


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_svg.svg"
    # PDFドキュメントを開く
    document = ap.Document(input_pdf)

    # SvgSaveOptionsのオブジェクトをインスタンス化する
    saveOptions = ap.SvgSaveOptions()

    # SVG画像をZipアーカイブに圧縮しない
    saveOptions.compress_output_to_zip_archive = False
    saveOptions.treat_target_file_name_as_directory = True

    # 出力をSVGファイルに保存する
    document.save(output_pdf, saveOptions)