将PDF转换为不同图像格式的Python方法

概述

本文解释了如何使用Python将PDF转换为不同的图像格式。它涵盖以下主题。

图像格式TIFF

图像格式BMP

图像格式EMF

图片格式: JPG

图片格式: PNG

图片格式: GIF

图片格式: SVG

Python 转换 PDF 到图像

Aspose.PDF for Python 使用几种方法将 PDF 转换为图像。 通常情况下,我们使用两种方法:使用设备方法进行转换和使用保存选项进行转换。本节将向您展示如何使用其中一种方法将PDF文档转换为图像格式,如BMP、JPEG、GIF、PNG、EMF、TIFF和SVG格式。

库中有几类允许您使用虚拟设备来转换图像。DocumentDevice用于转换整个文档,而ImageDevice用于特定页面。

使用 DocumentDevice 类转换 PDF

Aspose.PDF for Python可以将PDF页面转换为TIFF图像。

TiffDevice(基于DocumentDevice)类允许您将PDF页面转换为TIFF图像。此类提供了一个名为process的方法,允许您将PDF文件中的所有页面转换为单个TIFF图像。

将 PDF 页面转换为一个 TIFF 图像

Aspose.PDF for Python 解释如何将 PDF 文件中的所有页面转换为单个 TIFF 图像:

步骤:在 Python 中将 PDF 转换为 TIFF

  1. 创建一个 Document 类的对象。

  2. 创建 TiffSettingsTiffDevice 对象。

  3. 调用 process 方法将 PDF 文档转换为 TIFF。

  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 类提供了一个名为 process 的方法,该方法允许您将 PDF 文件的特定页面转换为 BMP 图像格式。其他类也有相同的方法。因此,如果我们需要将 PDF 页面转换为图像,我们只需实例化所需的类。

以下步骤和 Python 中的代码片段展示了这种可能性

步骤:PDF 转换为图像(BMP、EMF、JPG、PNG、GIF)在 Python 中

  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 = 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对象
    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对象
    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 年以来一直由万维网联盟 (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)