图片转PDF文档,Python代码轻松实现

图片到PDF的转换可以帮助我们将多个图片文件合并成单个PDF文档,从而方便文档管理、电子书制作、报告生成等。此过程不仅节省了存储空间,还提供了更方便的文件共享和传输方式。通过使用Python编写的脚本,我们可以轻松地将各种格式的图片文件转换为高质量的PDF文档,同时实现不同的转换效果,如设置页面大小、图片位置,以及将图片覆盖整个页面等。本文将介绍如何使用Python代码将图片转换为PDF文件,实现不同的转换效果,生成高质量的PDF文件。

文章目录

    • 转换方式介绍
    • 通过Python将单张图片转换为PDF文件
    • 通过Python将多张图片转换为多页PDF文件
    • 通过Python将多张图片转换为单页PDF文件
      • 总结

本文所使用的方法需要用到Spire.PDF for Python,可从官网下载或通过PyPI安装:pip install Spire.PDF

转换方式介绍

本文所介绍的转换方法是直接创建一个PDF文档并在其中添加页面,然后将图片添加到页面中,从而实现图片到PDF文件的转换。
在添加页面和图片时,我们可以通过设置页边距、页面大小、图片位置、图片大小等来控制转换效果。

下面是主要操作步骤:

  1. 创建 PdfDocument 类的对象以新建PDF文档。
  2. 使用 PdfImage.FromFile() 方法载入图片。
  3. 使用 PdfDocument.Pages.Add() 方法在PDF文档中创建页面。
  4. 使用 PdfPageBase.Canvas.DrawImage() 方法将图片绘制在页面上。
  5. 使用 PdfDocument.SaveToFile() 方法保存PDF文档。

需要注意的是,新建的PDF文档有默认的页边距,如果在转换时需要图片覆盖整个PDF页面,就需要在绘制图片前先使用 PdfDocument.PageSettings.SetMargins() 方法清除文档

通过Python将单张图片转换为PDF文件

以下步骤将一张图片转换为PDF文件,并使图片覆盖整个页面:

  1. 创建一个 PdfDocument 类对象从而创建一个新的PDF文档。
  2. 使用 PdfDocument.PageSettings.SetMargins() 方法将所有页边距设置为0。
  3. 使用 PdfImage.FromFile() 方法载入需要转换的图片。
  4. 通过 PdfImage.PhysicalDimension.WidthPdfImage.PhysicalDimension.Height 属性获取图片的宽和高。
  5. 使用 PdfDocument.Pages.Add(SizeF()) 方法在PDF文档中创建一个和图片相同尺寸的页面。
  6. 使用 PdfPageBase.Canvas.DrawImage() 方法将图片绘制在页面上。
  7. 使用 PdfDocument.SaveToFile() 方法保存PDF文档。

代码示例:

from spire.pdf.common import *
from spire.pdf import *

# 创建一个PdfDocument类的对象
pdf = PdfDocument()

# 清除文档页边距
pdf.PageSettings.Margins.All = 0.0

# 载入需要转换的图片
image = PdfImage.FromFile("示例.jpg")

# 获取图片的高度和宽度
image_width = image.PhysicalDimension.Width
image_height = image.PhysicalDimension.Height

# 在PDF文档中添加一个与图片相同大小的页面
page = pdf.Pages.Add(SizeF(image_width, image_height))

# 将图片添加到页面上
page.Canvas.DrawImage(image, 0.0, 0.0, image_width, image_height)

# 保存PDF文档
pdf.SaveToFile("output/单图转PDF.pdf")
pdf.Close()

输出的文件:
图片转PDF文档,Python代码轻松实现_第1张图片

通过Python将多张图片转换为多页PDF文件

以下步骤将多张图片每张转换为一个PDF页面,如需保证图片顺序,可以先对文件名进行处理:

  1. 创建一个 PdfDocument 类对象从而创建一个新的PDF文档。
  2. 使用 PdfDocument.PageSettings.SetMargins() 方法将所有页边距设置为0。
  3. 遍历文件夹中的图片。
  4. 使用 PdfImage.FromFile() 方法载入每张图片。
  5. 通过 PdfImage.PhysicalDimension.WidthPdfImage.PhysicalDimension.Height 属性获取图片的宽和高。
  6. 使用 PdfDocument.Pages.Add(SizeF()) 方法在PDF文档中创建一个和图片相同尺寸的页面。
  7. 使用 PdfPageBase.Canvas.DrawImage() 方法将图片绘制在页面上。
  8. 使用 PdfDocument.SaveToFile() 方法保存PDF文档。

代码示例:

from spire.pdf.common import *
from spire.pdf import *
import os

# 创建一个PdfDocument类的对象
pdf = PdfDocument()

# 清除文档页边距
pdf.PageSettings.SetMargins(0.0)

# 循环遍历文件夹中的图片
folder_path = "Images/"
for root, directories, files in os.walk(folder_path):
    for file_name in files:
        file_path = os.path.join(root, file_name)
        # 载入图片
        image = PdfImage.FromFile(file_path)
        # 获取图片的宽和高
        image_width = image.PhysicalDimension.Width
        image_height = image.PhysicalDimension.Height
        # 在文档中创建与图片相同大小的页面
        page = pdf.Pages.Add(SizeF(image_width, image_height))
        # 将图片绘制在页面上
        page.Canvas.DrawImage(image, 0.0, 0.0, image_width, image_height)

# 保存PDF文档
pdf.SaveToFile("output/多图转PDF.pdf")
pdf.Close()

输出的文件:
图片转PDF文档,Python代码轻松实现_第2张图片

通过Python将多张图片转换为单页PDF文件

在转换PDF文件为图片时,还可以将多张图片绘制在同一个PDF页面上。但需要注意图片不宜过多。保持图片宽度相同能达到比较好的效果。
以下是操作步骤介绍:

  1. 创建一个 PdfDocument 类对象从而创建一个新的PDF文档。
  2. 将所有页边距设置为0。
  3. 遍历文件夹中的图片并计算页面高度和宽度。
  4. 创建页面。
  5. 遍历文件中的图片,并将图片绘制在页面上。
  6. 保存PDF文档。

代码示例:

from spire.pdf.common import *
from spire.pdf import *
import os

# 创建一个PdfDocument类的对象
pdf = PdfDocument()

# 清除文档页边距
pdf.PageSettings.SetMargins(0.0)

# 循环遍历文件夹中的图片并计算页面高度
page_width = 0.0
page_height = 0.0
folder_path = "Images/"
file_paths = []
for root, directories, files in os.walk(folder_path):
    for file_name in files:
        file_path = os.path.join(root, file_name)
        # 载入图片
        image = PdfImage.FromFile(file_path)
        # 获取图片的宽和高
        image_width = image.PhysicalDimension.Width
        image_height = image.PhysicalDimension.Height
        # 更新页面高度和宽度
        page_width = max(page_width, image_width)
        page_height += image_height
        # 将图片路径添加到列表
        file_paths.append(file_path)

# 创建页面
page = pdf.Pages.Add(SizeF(page_width, page_height))

# 定义当前绘制的位置
current_y = 0.0

# 在页面上依次绘制图片
for file_path in file_paths:
    # 载入图片
    image = PdfImage.FromFile(file_path)
    # 获取图片的宽和高
    image_width = image.PhysicalDimension.Width
    image_height = image.PhysicalDimension.Height
    # 将图片绘制在页面上
    page.Canvas.DrawImage(image, 0.0, current_y, image_width, image_height)
    # 更新当前绘制位置
    current_y += image_height

# 保存PDF文档
pdf.SaveToFile("output/多图转单页PDF.pdf")
pdf.Close()

输出的文件:
图片转PDF文档,Python代码轻松实现_第3张图片

总结

本文介绍了如何使用Spire.PDF for Python将图片转换为PDF文档,并介绍了多种转换方式的操作步骤、代码示例以及效果。如果在使用中遇到任何问题,可以通过Spire产品论坛获取技术支持。

你可能感兴趣的:(Python,PDF,python,pdf,前端,开发语言,图像处理)