在 pdf 中,您可以更改页面大小以使文档满足不同的需求。例如,在创建讲义或压缩版本的文档时需要较小的页面大小,而较大的页面大小可能对设计海报或图形密集型材料有用。在某些情况下,您可能还需要获取页面尺寸(宽度和高度)以确定文档是否进行了最佳调整。本文将介绍如何使用 spire.pdf for python 在 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 页面大小更改为标准纸张大小
更改 pdf 文件页面大小的方法是创建一个新的 pdf 文件,并添加所需大小的页面,然后根据原始 pdf 文件中的页面创建模板,并将模板绘制到新 pdf 文件中的页面上。此过程将保留原始 pdf 文件中的文本、图像和其他元素。
spire.pdf for python 支持各种标准纸张尺寸,如 letter、legal、a0、a1、a2、a3、a4、b0、b1、b2、b3、b4 等。以下是将 pdf 文件的页面尺寸更改为标准纸张尺寸的步骤:
- 初始化一个 pdfdocument 实例,并使用 pdfdocument.loadigesfile() 方法加载原始 pdf 文件。
- 初始化另一个 pdfdocument 实例以创建新的 pdf 文件。
- 遍历原始 pdf 中的页面。
- 使用 pdfdocument.pages.add() 方法将所需大小的页面添加到新的 pdf 文件中。
- 初始化一个 pdftextlayout 实例,通过 pdftextlayout.layout 属性将文本布局设置为一个页面。
- 使用 pdfpagebase.createtemplate() 方法,基于原始 pdf 中的页面创建模板。
- 使用 pdftemplate.draw() 方法将模板绘制到新 pdf 文件中的页面上,并使用指定的文本布局。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 设置输入文件路径,示例文档.pdf为待处理的pdf文件
inputfile = "示例文档.pdf"
# 设置输出文件路径,修改页面大小后保存的pdf文件
outputfile = "修改页面大小为b4.pdf"
# 创建原始pdfdocument对象
originalpdf = pdfdocument()
# 加载待处理的pdf文件到原始pdf文档对象中
originalpdf.loadfromfile(inputfile)
# 创建新的pdfdocument对象用于存储修改后的结果
newpdf = pdfdocument()
# 遍历原始pdf文档中的每一页
for i in range(originalpdf.pages.count):
# 获取当前页对象
page = originalpdf.pages.get_item(i)
# 创建新的页面,并设置页面大小为b4,边距为0
newpage = newpdf.pages.add(pdfpagesize.b4(), pdfmargins(0.0))
# 创建文本布局对象
layout = pdftextlayout()
# 设置文本布局类型为单页
layout.layout = pdflayouttype.onepage
# 创建模板对象
template = page.createtemplate()
# 在新页面上绘制模板内容,并应用文本布局
template.draw(newpage, pointf.empty(), layout)
# 将修改后的pdf文档保存到指定路径
newpdf.savetofile(outputfile)
newpdf.close()
originalpdf.close()
python 将 pdf 页面大小更改为自定义纸张大小
spire.pdf for python 使用磅(1/72英寸)作为度量单位。如果你需要将 pdf 的页面大小更改为其他度量单位(如英寸或毫米)的自定义纸张大小,可以使用 pdfunitconvertor 类将其转换为点。
以下是将 pdf 文件的页面大小更改为自定义纸张大小的步骤,以英寸为单位:
- 初始化一个 pdfdocument 实例,并使用 pdfdocument.loadfile() 方法加载原始 pdf 文件。
- 初始化另一个 pdfdocument 实例以创建新的 pdf 文件。
- 初始化一个 pdfunitconvertor 实例,然后使用 pdfunitconvertor.convertunits() 方法将自定义尺寸(英寸)转换为磅。
- 从自定义大小初始化一个 sizef 实例。
- 遍历原始 pdf 中的每一页。
- 使用 pdfdocument.pages.add() 方法将自定义大小的页面添加到新的 pdf 文件中。
- 初始化一个 pdftextlayout 实例,并通过 pdftextlayout.layout 属性将文本布局设置为单页。
- 使用指定的文本布局,通过 pdftemplate.draw() 方法将模板绘制到新的 pdf 文件的页面上。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 设置输入文件路径,示例文档.pdf为待处理的pdf文件
inputfile = "示例文档.pdf"
# 设置输出文件路径,自定义页面大小后保存的pdf文件
outputfile = "自定义页面大小.pdf"
# 创建原始pdfdocument对象
originalpdf = pdfdocument()
# 加载待处理的pdf文件到原始pdf文档对象中
originalpdf.loadfromfile(inputfile)
# 创建新的pdfdocument对象用于存储修改后的结果
newpdf = pdfdocument()
# 创建单位转换器对象
unitcvtr = pdfunitconvertor()
# 将宽度从12.0英寸转换为磅(point)单位
width = unitcvtr.convertunits(12.0, pdfgraphicsunit.inch, pdfgraphicsunit.point)
# 将高度从15.5英寸转换为磅(point)单位
height = unitcvtr.convertunits(15.5, pdfgraphicsunit.inch, pdfgraphicsunit.point)
# 创建自定义大小
size = sizef(width, height)
# 遍历原始pdf文档中的每一页
for i in range(originalpdf.pages.count):
# 获取当前页对象
page = originalpdf.pages.get_item(i)
# 创建新的页面,并设置页面大小为自定义大小,边距为0
newpage = newpdf.pages.add(size, pdfmargins(0.0))
# 创建文本布局对象
layout = pdftextlayout()
# 设置文本布局类型为单页
layout.layout = pdflayouttype.onepage
# 创建模板对象
template = page.createtemplate()
# 在新页面上绘制模板内容,并应用文本布局
template.draw(newpage, pointf.empty(), layout)
# 将修改后的pdf文档保存到指定路径
newpdf.savetofile(outputfile)
newpdf.close()
originalpdf.close()
python 获取 pdf 页面大小
spire.pdf for python 提供了 pdfpagebase.size.width 和 pdfpagebase.size.height 属性来获取 pdf 页面的宽度和高度(以磅为单位)。如果您想将默认的度量单位转换为其他单位,可以使用 pdfunitconvertor 类。
下面是获取 pdf 页面大小的步骤:
- 初始化一个 pdfdocument 实例。
- 使用 pdfdocument.loadfromfile() 方法加载一个 pdf 文件。
- 使用 pdfdocument.pages[] 属性获取指定的页面。
- 使用 pdfpagebase.size.width 和 pdfpagebase.size.height 属性获取 pdf 页面的宽度和高度。
- 初始化一个 pdfunitconvertor 实例,然后使用 pdfunitconvertor.convertunits() 方法将尺寸从磅转换为其他度量单位。
- 将尺寸信息添加到一个 stringbuilder 实例中,然后将结果保存到一个 txt 文件中。
- python
from spire.pdf.common import *
from spire.pdf import *
# 定义函数:将文本内容追加到文件中
def appendalltext(fname: str, text: list[str]):
fp = open(fname, "w")
for s in text:
fp.write(s "\n")
fp.close()
# 设置输入文件路径,示例文档.pdf为待处理的pdf文件
inputfile = "示例文档.pdf"
# 设置输出文件路径,获取页面大小后保存的文本文件
outputfile = "获取页面大小.txt"
# 创建pdfdocument对象
pdf = pdfdocument()
# 加载待处理的pdf文件到pdf文档对象中
pdf.loadfromfile(inputfile)
# 获取第一页对象
page = pdf.pages[0]
# 获取页面宽度和高度(以磅为单位)
pointwidth = page.size.width
pointheight = page.size.height
# 创建单位转换器对象
unitcvtr = pdfunitconvertor()
# 将页面宽度和高度从磅(point)转换为像素(pixel)单位
pixelwidth = unitcvtr.convertunits(pointwidth, pdfgraphicsunit.point, pdfgraphicsunit.pixel)
pixelheight = unitcvtr.convertunits(pointheight, pdfgraphicsunit.point, pdfgraphicsunit.pixel)
# 将页面宽度和高度从磅(point)转换为英寸(inch)单位
inchwidth = unitcvtr.convertunits(pointwidth, pdfgraphicsunit.point, pdfgraphicsunit.inch)
inchheight = unitcvtr.convertunits(pointheight, pdfgraphicsunit.point, pdfgraphicsunit.inch)
# 将页面宽度和高度从磅(point)转换为厘米(centimeter)单位
centimeterwidth = unitcvtr.convertunits(pointwidth, pdfgraphicsunit.point, pdfgraphicsunit.centimeter)
centimeterheight = unitcvtr.convertunits(pointheight, pdfgraphicsunit.point, pdfgraphicsunit.centimeter)
# 创建用于保存内容的列表
content = []
# 将页面大小信息添加到内容列表中
content.append("文件的页面大小(以磅为单位)为(宽度: " str(pointwidth) "pt, 高度: " str(pointheight) "pt).")
content.append("文件的页面大小(以像素为单位)为(宽度: " str(pixelwidth) "pixel, 高度: " str(pixelheight) "pixel).")
content.append("文件的页面大小(以英寸为单位)为(宽度: " str(inchwidth) "inch, 高度: " str(inchheight) "inch).")
content.append("文件的页面大小(以厘米为单位)为(宽度: " str(centimeterwidth) "cm, 高度: " str(centimeterheight) "cm.)")
# 调用函数将内容写入输出文件中
appendalltext(outputfile, content)
pdf.close()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。