在处理 pdf 文档时,有时会遇到需要将一个 pdf 页面按内容或布局的不同区域进行精细化拆分的需求,比如将一张同时包含横向和纵向排列内容的混合布局 pdf 页面拆分成两个独立的部分。这种拆分操作并不常见于基础的 pdf 管理功能,但针对特殊的使用场景,如学术论文、杂志广告或其他混合排版设计,将一页 pdf 拆分成不同方向的两个页面以便于打印或重新编排内容就显得尤为重要。本文将介绍如何使用 在 python 中横向或纵向拆分 pdf 页面。
安装 spire.pdf for python
本教程需要 spire.pdf for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.pdf
如果您不确定如何安装,请参考此教程: 如何在 vs code 中安装 spire.pdf for python
python 横向或纵向拆分 pdf 页面
spire.pdf for python 不仅支持将一个 pdf 文档拆分为多个 pdf 文档,也支持将 pdf 中的某个特定页面拆分到两个或多个页面。以下是拆分页面的详细步骤:
- 创建一个 pdfdocument 类的实例。
- 使用 pdfdocument.loadfromfile() 方法加载源 pdf 文档。
- 使用 pdfdocument.pages[] 获取需要进行拆分的页面。
- 创建一个新的 pdf 文档并将其页边距设置为0.
- 将新文档的宽或高设置为源文档的一半。
- 使用 pdfdocument.pages.add() 方法给新的 pdf 文档添加页面。
- 使用 pdfpagebase.createtemplate() 方法给源文档的页面创建模板。
- 使用 pdftemplate.draw() 方法在新页面上绘制源页面的内容。
- 使用 pdfdocument.savetofile() 方法保存拆分后的文档。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 pdfdocument 对象
pdf = pdfdocument()
# 加载pdf文档
pdf.loadfromfile("示例.pdf")
# 获取第一页
page = pdf.pages[0]
# 创建新的pdf文档,移除新文档的页边距
newpdf = pdfdocument()
newpdf.pagesettings.margins.all=0
# 横向拆分:设置新文档页面的宽度为原文档第一页的宽度,页面高度等于原文档第一页高度的二分之一
newpdf.pagesettings.width=page.size.width
newpdf.pagesettings.height=page.size.height/2
'''
# 纵向拆分:设置新文档页面的宽度为原文档第一页的二分之一,页面高度为原文档第一页高度
newpdf.pagesettings.width=page.size.width/2
newpdf.pagesettings.height=page.size.height
'''
# 添加新页面到新的pdf文档
newpage = newpdf.pages.add()
# 设置文本布局样式
format = pdftextlayout()
format.break=pdflayoutbreaktype.fitpage
format.layout=pdflayouttype.paginate
# 根据原文档第一页创建模板,并将模板画到新文档的新页面,页面画满之后自动分页
page.createtemplate().draw(newpage, pointf(0.0, 0.0), format)
# 保存文档
newpdf.savetofile("横向拆分.pdf")
# 关闭对象
newpdf.close()
pdf.close()
横向拆分效果如下:
纵向拆分效果如下:
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。