python编辑pdf内容,python怎么生成pdf
我正在尝试旋转可移植文档格式文件的扩展名(可移植文档格式的缩写)文件中的页面,然后用相同的可移植文档格式文件的扩展名(portable document format的缩写)文件中的旋转页面替换旧页面。
我写了以下代码:
#!/usr/风趣的小笼包/python
导入操作系统
从pyPdf导入PdfFileReader、PdfFileWriter
my _ path=/home/USER/Desktop/files/
输入文件名=操作系统。路径。加入(我的路径,“myfile.pdf”)
input _ file=PdfFileReader(file(input _ file _ name, rb ))
input_file.decrypt(MyPassword )
output _ PDF=PdfFileWriter()
对于页面数量范围(0,input_file.getNumPages()):
page=输入文件。获取页面(num _ page)
page.rotateClockwise(270)
output_PDF.addPage(第页)
#尝试用原始文件中的新数据替换旧数据,而不是
#创建新文件并添加新数据!
输出文件名=操作系统。路径。加入(我的路径,“myfile.pdf”)
输出文件=文件(输出文件名称, wb )
输出PDF.write(输出文件)
output_file.close()
上面的代码给我一个错误!我什至尝试使用:
input _ file=PdfFileReader(file(input _ file _ name, r b ))
但这也不起作用.
换行:
输出文件名=操作系统。路径。加入(我的路径,“myfile.pdf”)
与:
输出文件名=操作系统。路径。加入(我的路径,“myfile2.pdf”)
修复了所有问题,但这不是我想要的.
有什么帮助吗?
错误代码:
在_sweepIndirectReferences中,newobj=data.pdf.getObject(data)文件"/usr/lib/py模块/python 2.7/pyPdf/pdf。py”,第649行,在关键字中retval=readObject(self.stream,self)文件"/usr/lib/py模块/python 2.7/pyPdf/generic。py”,第67行,在读取对象中返回字典对象。readfromstream(流,pdf)文件"/usr/lib/py modules/python 2.7/py pdf/generic。py "在readFromStream中的第564行,引发实用工具.PdfReadError,"在流之后找不到尾流标记。pyPdf.utils.PdfReadError:在流之后找不到"尾流"标记。第67行,在读取对象中返回字典对象。readfromstream(流,pdf)文件"/usr/lib/py模块/python 2.7/pyPdf/generic。py”,第564行,在readFromStream中,引发实用工具.PdfReadError,"无法找到endstream . py pdf . utils . pdf readerror:在流之后找不到"尾流"标记。第67行,在读取对象中返回字典对象。readfromstream(流,pdf)文件"/usr/lib/py模块/python 2.7/pyPdf/generic。py”,第564行,在readFromStream中引发实用工具.PdfReadError,"无法找到尾流在流之后标记。pyPdf.utils.PdfReadError:在流之后找不到"尾流"标记。
解决方案
我怀疑问题是PyPDF正在写入文件时正在读取文件。
您已经注意到,正确的解决方法是写入一个单独的文件,然后用新文件替换原始文件。像这样:
输出文件名=操作系统。路径。加入(我的路径,“myfile-temporary.pdf”)
输出文件=文件(输出文件名称, wb )
输出PDF.write(输出文件)
output_file.close()
操作系统.重命名(输出文件名,输入文件名)
来自unstdlib。标准。上下文库_导入打开_原子
使用开放原子(输入文件名称, wb )作为输出文件:
输出PDF.write(输出文件)
这将自动创建一个临时文件,写入该文件,然后替换原始文件。
编辑:我最初误读了问题。以下是我的错误信息,但可能会对其他人的回答有所帮助。
您的代码很好,并且在"大多数“PDF上应该没有问题。
您看到的问题是PyPDF与您尝试使用的特定便携文档格式之间不兼容。这可能是PyPDF中的错误,也可能是便携文档格式并非完全有效。
您可以尝试两件事:
查看PyPDF2是否可以读取文件。使用安装PyPDF2pip安装PyPDF2,将其替换导入pyPdf …为导入PyPDF2 …,然后重新运行脚本。
使用另一个程序重新编码您的PDF,然后查看是否可行。例如,使用类似方法转换bad.pdf坏了。PS;转换坏的PS maybe-good.pdf可能会解决问题。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。