在 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 页面大小更改为标准纸张大小
更改 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 天的临时许可证。