首页 > 编程语言 >Python 将PDF转为PDF/A、PDF/X,以及PDF/A转回PDF

Python 将PDF转为PDF/A、PDF/X,以及PDF/A转回PDF

时间:2024-05-08 16:47:27浏览次数:34  
标签:converter Python 格式 转回 PDF pdf 转为

PDF/A和PDF/X是两种有特定用途的PDF格式,具体查看以下:

  • PDF/A是一种用于长期存档的PDF格式,它旨在确保文档的内容和格式在未来的访问中保持不变。如果您需要对文件进行长期存档,比如法律文件或档案记录,将其转换为PDF/A格式是一个明智的选择。
  • PDF/X是一种用于印刷输出的PDF格式,它旨在确保文档在打印时的准确性和一致性。PDF/X格式通常包括高分辨率图像和准确的颜色信息,如果您需要将文件发送给印刷商打印,将其转换为PDF/X格式可以避免出现打印错误和质量问题。

总而言之,通过将PDF文件转换为这两种格式,可以确保文档在未来的访问或打印中保持最佳质量和准确性。本文将介绍如何使用Python将PDF转换为PDF/A和PDF/X,以及如何将PDF/A格式转换回标准的PDF格式。

 

本文中的转换方法需要用到 Spire.PDF for Python 第三方库,可使用以下命令安装该库:

pip install Spire.PDF

 

【示例1】Python 将PDF转为PDF/A格式

PDF/A是ISO定义的PDF存档标准,目前共有三种规范:PDF/A-1、PDF/A-2和PDF/A-3。每种规范包含两种一致性级别(A或B),适用于不同的需求。Spire.PDF for Python支持将PDF转换为PDF/A-1a, 2a, 3a, 1b, 2b, 3b,转换代码如下:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PdfStandardsConverter类的对象,并传入一个PDF文档作为参数
converter = PdfStandardsConverter("考核.pdf")
 
# 将PDF转为PDF/A-1a
converter.ToPdfA1A("PdfA1A.pdf")
 
# 将PDF转为PDF/A-1b
converter.ToPdfA1B("PdfA1B.pdf")
 
# 将PDF转为PDF/A-2a
converter.ToPdfA2A("PdfA2A.pdf")
 
# 将PDF转为PDF/A-2b
converter.ToPdfA2B("PdfA2B.pdf")
 
# 将PDF转为PDF/A-3a
converter.ToPdfA3A("PdfA3A.pdf")
 
# 将PDF转为PDF/A-3b
converter.ToPdfA3B("PdfA3B.pdf")

PDF/A示例图:

 

【示例2】Python 将PDF转为PDF/X-1a:2001 

除了PDF/A格式外,Spire.PDF for Python还支持将PDF转为PDF/X-1a:2001标准。该标准于2001年发布,是PDF/X-1的一个子标准,被广泛应用于印刷和出版领域。转换代码如下:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PdfStandardsConverter类的对象,并传入一个PDF文档作为参数
converter = PdfStandardsConverter("考核.pdf")
 
# 将PDF转为PDF/X-1a:2001
converter.ToPdfX1A2001("PDF转PdfX1a.pdf"

PDF/X-1a:2001标准示例图:

 

【示例3】Python 将PDF/A转为PDF 

Spire.PDF for Python提供的PDF/A转PDF的实现思路是新建一个标准PDF文件,然后将PDF/A文件的内容绘制到新的PDF文件中。实现代码如下:

from spire.pdf.common import *
from spire.pdf import *
 
# 加载PDF/A文件
pdf = PdfDocument()
pdf.LoadFromFile("ToPdfA1A.pdf")
 
# 新建一个标准PDF文件
newPdf = PdfNewDocument()
newPdf.CompressionLevel = PdfCompressionLevel.none
 
#  在新建PDF文件中添加页面,并将PDF/A文件的内容绘制到新建PDF的相应页面上
for i in range(pdf.Pages.Count):
    page = pdf.Pages.get_Item(i)
    size = page.Size
    newPdf = newDoc.Pages.Add(size, PdfMargins(0.0))
    page.CreateTemplate().Draw(newPdf, 0.0, 0.0)   
 
# 保存PDF文件  
fileStream = Stream("PdfA转Pdf.pdf")
newDoc.Save(fileStream)
fileStream.Close()
newDoc.Close(True)

 

通过上面3段示例代码,我们可以在Python中实现PDF到PDF/A和PDF/X、以及PDF/A到PDF的转换。如果有问题可以前往论坛讨论。

红色水印的去除:

https://www.e-iceblue.cn/misc/temporary-license.html

标签:converter,Python,格式,转回,PDF,pdf,转为
From: https://www.cnblogs.com/Yesi/p/18180186

相关文章

  • Python中级之数据类型的内置方法1(数字类型和字符串)
    【一】数字类型【1】整数类型(int)(1)定义直接用整数定义,整数类型的值不能修改num=6(2)内置方法int.bit_length()#返回整数的二进制表示中最高位的位数,不包括符号和前导零。a=10b=a.bit_length()print(b)#输出4int.to_bytes(length,byteorder,signed)#......
  • Python安装教程手册(pip路径修改,建立模块搜索)
    下载官网64位exe安装包双击安装,一步步往下走    打开cmd命令行,输入Python-V查看安装版本号,检查是否安装成功  输入pip-V查看pip的版本号,检查是否安装成功  设置pip安装的全局库目录输入python-msite,查看当前默认配置的库目录找......
  • Python中级之数据类型的内置方法3(元祖、布尔、集合)
    【一】元祖类型(tuple)【1】定义元祖类型是有序且不可变的数据类型,通常使用小括号定义(也可以使用逗号)#用逗号定义num_tuple=1,2,3,4,5#用小括号定义num_tuple=(1,2,3,4,5)【2】内置方法(1)类型强转#使用tuple()函数将其他数据类型转换为元组类型num_list=......
  • Python中级之数据类型的内置方法2(字典和列表)
    【一】字符串类型的内置方法(熟悉)【1】查找(1)find方法#【1】默认从左到右开始查找,找得到则返回元素所在的索引位置name='ligo'str=name.find('i')print(str)#输出1#【2】也可在区间内寻找,找不到则返回-1str=name.find('g',3,4)print(str)#输出-1#【3】也......
  • Python中级之GC机制+字符编码+文件操作
    【一】深浅拷贝【1】深浅拷贝问题如果是浅拷贝,只会复制一层,如果拷贝的对象中有可变数据类型,修改可变数据类型还会影响拷贝的对象如果是深拷贝,完整复制,无论可变或不可变,都是创建出新的来,无法怎么修改原对象,都不会对拷贝出的对象造成影响(1)浅拷贝对于原对象中的可变数据类型......
  • Python中级之异常处理+推导式
    【一】异常处理【一】什么是异常异常是程序运行时可能发生的错误或意外情况当出现异常时,程序的正常流程会被中断,出现报错界面【二】异常分类在Python中异常分为内建异常和用户自定义异常【1】BaseException(所有异常的基类)SystemExit:解释器请求退出KeyboardInterru......
  • 使用Python的DataFrame和duckdb查询PG数据库
    直接使用以下脚本:importpsycopg2importduckdbimportpandasaspd#ConnecttoPostgreSQLconn_postgres=psycopg2.connect(dbname="pg_test_db",user="your_username",#Replacewithyourusernamepassword="your_password&qu......
  • Python基础之基本运算符
    【一】参考网站菜鸟教程:https://www.runoob.com/python/python-operators.html【二】算数运算符python支持的算数运算符与数学的运算符号是一样的#【1】加法运算符a=3b=4c=a+bprint(c)#输出7#【2】减法运算符a=3b=4c=a-bprint(c)#......
  • Python基础之流程控制语句
    【一】流程控制语句介绍程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句流程控制方式有顺序结构分支结构循环结构最简单最常用的就是顺序结构,执行方式是从上至下一句一句来【二】顺序结构【1】什么是顺序结构顺序结构是指按照代码书写的顺......
  • threading:Python线程锁与释放锁
    控制资源访问前文提到threading库在多线程时,对同一资源的访问容易导致破坏与丢失数据。为了保证安全的访问一个资源对象,我们需要创建锁。示例如下:importthreadingimporttimeclassAddThread():def__init__(self,start=0):self.lock=threading.Lock()......