PDF/A 是一种专为电子文档的长期归档和保存而设计的文档格式。它能保证文档的内容、结构和视觉外观随着时间的推移保持不变。通过将 PDF 文件转换为 PDF/A 格式,可以确保文档的长期可访问性,而不受软件、操作系统或未来技术进步的影响。相反,将 PDF/A 文件转换为标准 PDF 格式,可以更轻松地编辑、共享和协作文档,确保不同应用程序、设备和平台之间更好的兼容性。本文将介绍如何使用 Spire.PDF for Python 在 Python 中实现 PDF 和 PDF/A 格式之间的相互转换。
安装 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/A 或 PDF/X
Spire.PDF for Python 提供的 PdfStandardsConverter 类支持将 PDF 转换为各种 PDF/A 格式,包括 PDF/A-1a、2a、3a、1b、2b 和 3b。此外,它还支持将 PDF 转换为 PDF/X-1a:2001。具体步骤如下:
- 指定输入输出文件路径。
- 创建一个 PdfStandardsConverter 类的对象,并将输入文件路径作为参数传入。
- 使用 PdfStandardsConverter.ToPdfA1A() 方法将 PDF 文件转换为 Pdf/A-1a 一致性文件。
- 使用 PdfStandardsConverter.ToPdfA1B() 方法将 PDF 文件转换为 Pdf/A-1b 文件。
- 使用 PdfStandardsConverter.ToPdfA2A() 方法将 PDF 文件转换为 Pdf/A-2a 文件。
- 使用 PdfStandardsConverter.ToPdfA2B() 方法将 PDF 文件转换为 Pdf/A-2b 文件。
- 使用 PdfStandardsConverter.ToPdfA3A() 方法将 PDF 文件转换为 Pdf/A-3a 文件。
- 使用 PdfStandardsConverter.ToPdfA3B() 方法将 PDF 文件转换为 Pdf/A-3b 文件。
- 使用 PdfStandardsConverter.ToPdfX1A2001() 方法将 PDF 文件转换为 PDF/X-1a:2001 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
inputFile = "示例文档.pdf"
outputFolder = "转换/"
# 创建PdfStandardsConverter类的对象
converter = PdfStandardsConverter(inputFile)
# 将PDF文件转换为PdfA1A
converter.ToPdfA1A(outputFolder + "ToPdfA1A.pdf")
# 将PDF文件转换为PdfA1B
converter.ToPdfA1B(outputFolder + "ToPdfA1B.pdf")
# 将PDF文件转换为PdfA2A
converter.ToPdfA2A(outputFolder + "ToPdfA2A.pdf")
# 将PDF文件转换为PdfA2B
converter.ToPdfA2B(outputFolder + "ToPdfA2B.pdf")
# 将PDF文件转换为PdfA3A
converter.ToPdfA3A(outputFolder + "ToPdfA3A.pdf")
# 将PDF文件转换为PdfA3B
converter.ToPdfA3B(outputFolder + "ToPdfA3B.pdf")
# 将PDF文件转换为PDF/X-1a:2001
converter.ToPdfX1A2001(outputFolder + "ToPdfX1a.pdf")
Python 将 PDF/A 转换为 PDF
要将 PDF/A 文件转换回标准PDF文件格式,需要创建一个新的标准 PDF 文件,然后将 PDF/A 文件的页面内容绘制到新创建的 PDF 文件中。具体步骤如下:
- 创建一个 PdfDocument 类的对象。
- 使用 PdfDocument.LoadFromFile() 方法加载 PDF/A 文件。
- 创建一个 PdfNewDocument 对象,并将其压缩级别设置为 "none"。
- 遍历原始 PDF/A 文件中的页面。
- 使用 PdfDocumentBase.Pages.Add() 方法为新创建的 PDF 添加页面。
- 使用 PdfPageBase.CreateTemplate.Draw() 方法将原始 PDF/A 文件的页面内容绘制到新创建 PDF 的相应页面中。
- 创建一个 Stream 对象,然后使用 PdfNewDocument.Save() 方法将新创建 PDF 文件保存到流中。
- Python
from spire.pdf.common import *
from spire.pdf import *
inputFile = "转换/ToPdfA1A.pdf"
outputFile = "PdfA转Pdf.pdf"
# 创建PdfDocument对象
doc = PdfDocument()
# 加载PDF文件
doc.LoadFromFile(inputFile)
# 创建一个新的标准PDF文件
newDoc = PdfNewDocument()
newDoc.CompressionLevel = PdfCompressionLevel.none
# 在新创建的PDF中添加页面,并将已加载PDF的页面内容绘制到新创建PDF的相应页面上
for i in range(doc.Pages.Count):
page = doc.Pages.get_Item(i)
size = page.Size
p = newDoc.Pages.Add(size, PdfMargins(0.0))
page.CreateTemplate().Draw(p, 0.0, 0.0)
# 保存新创建的PDF文件
fileStream = Stream(outputFile)
newDoc.Save(fileStream)
fileStream.Close()
newDoc.Close(True)
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。