修改 PDF 文档以适应各种使用场景的需求是 PDF 文档创建和管理的常见操作。在这些操作中,分割和合并 PDF 页面可以帮助重新组织 PDF 内容,从而方便进行打印、排版等。通过使用 Python 程序,开发人员可以轻松地将一个 PDF 文档中的页面拆分为多个页面,或将多个 PDF 页面合并为一个页面。本文将演示如何使用 Spire.PDF for Python 在 Python 程序中分割和合并 PDF 页面。
安装 Spire.PDF for Python
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不清楚如何安装,请参考:如何在 Windows 中安装 Spire.PDF for Python
用 Python 拆分 PDF 页面
通过 Spire.PDF for Python,开发人员可以使用 PdfPageBase.CreateTemplate().Draw(newPage PdfPageBase, PointF) 方法将一个 PDF 页面绘制到新的 PDF 页面上。绘制时,如果当前新页面无法完全容纳原始页面的内容,则会自动创建一个新的页面,并将剩余的内容绘制到该页面上。因此,我们可以创建一个新的 PDF 文档并通过指定页面大小来控制绘制结果,从而实现指定的 PDF 页面水平或垂直分割。
以下是将 PDF 页面垂直分割为两个独立 PDF 页面的操作步骤:
- 创建 PdfDocument 类的对象并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
- 使用 PdfDocument.Pages.get_Item() 方法获取文档的第一页。
- 通过创建 PdfDocument 类的对象创建一个新的 PDF 文档。
- 通过 PdfDocument.PageSettings.Margins.All 属性将新文档的边距设置为 0。
- 通过 PdfPageBase.Size.Width 属性和 PdfPageBase.Size.Height 属性获取检索页面的宽度和高度。
- 通过 PdfDocument.PageSettings.Width 属性将新 PDF 文档的宽度设置为与检索页面相同,并通过 PdfDocument.PageSettings.Height 属性将其高度设置为检索页面高度的一半。
- 使用 PdfDocument.Pages.Add() 方法在新文档中添加一个新页面。
- 使用 PdfPageBase.CreateTemplate().Draw() 方法将检索页面的内容绘制到新页面上。
- 使用 PdfDocument.SaveToFile() 方法保存新文档。
- Python
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象并加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("示例1.pdf")
# 获取文档的第一页
page = pdf.Pages.get_Item(0)
# 创建一个新的PDF文档
newPdf = PdfDocument()
# 将新PDF文档的边距设置为0
newPdf.PageSettings.Margins.All = 0.0
# 获取提取的页面的宽度和高度
width = page.Size.Width
height = page.Size.Height
# 将新PDF文档的宽度设置为提取的页面宽度,高度设置为提取页面高度的一半
newPdf.PageSettings.Width = width
newPdf.PageSettings.Height = height / 2
# 向新PDF文档添加一个新页面
newPage = newPdf.Pages.Add()
# 将提取的页面内容绘制到新页面上
page.CreateTemplate().Draw(newPage, PointF(0.0, 0.0))
# 保存新的PDF文档
newPdf.SaveToFile("output/拆分PDF页面.pdf")
pdf.Close()
newPdf.Close()
用 Python 合并 PDF 页面
同样地,开发者也可以通过在同一个 PDF 页面上绘制不同的页面来合并 PDF 页面。需要注意的是,待合并的页面最好是相同宽度或高度,否则需要取最大值以确保正确绘制。
将两个 PDF 页面合并为一个 PDF 页面的详细步骤如下:
- 创建 PdfDocument 类的对象并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
- 使用 PdfDocument.Pages.get_Item() 方法获取文档的第一页和第二页。
- 通过创建 PdfDocument 类的对象创建一个新的 PDF 文档。
- 通过 PdfDocument.PageSettings.Margins.All 属性将新文档的边距设置为 0。
- 通过 PdfPageBase.Size.Width 属性和 PdfPageBase.Size.Height 属性获取两个检索页面的宽度和高度。
- 通过 PdfDocument.PageSettings.Width 属性将新 PDF 文档的宽度设置为与检索页面相同,并通过 PdfDocument.PageSettings.Height 属性将其高度设置为两个检索页面高度的总和。
- 使用 PdfPageBase.CreateTemplate().Draw() 方法将两个检索页面的内容绘制到新页面上。
- 使用 PdfDocument.SaveToFile() 方法保存新文档。
- Python
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象并加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("示例2.pdf")
# 获取文档的第一页和第二页
page = pdf.Pages.get_Item(0)
page1 = pdf.Pages.get_Item(1)
# 创建一个新的PDF文档
newPdf = PdfDocument()
# 将新PDF文档的边距设置为0
newPdf.PageSettings.Margins.All = 0.0
# 将新文档的页面宽度设置为提取的页面的宽度相同
newPdf.PageSettings.Width = page.Size.Width
# 将新文档的页面高度设置为两个提取页面高度的总和
newPdf.PageSettings.Height = page.Size.Height + page1.Size.Height
# 向新PDF文档添加一个新页面
newPage = newPdf.Pages.Add()
# 将提取的页面的内容绘制到新页面上
page.CreateTemplate().Draw(newPage, PointF(0.0, 0.0))
page1.CreateTemplate().Draw(newPage, PointF(0.0, page.Size.Height))
# 保存新文档
newPdf.SaveToFile("output/合并PDF页面.pdf")
pdf.Close()
newPdf.Close()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。