python修改pdf内容_如何编辑pdf⽂件,替换其数据?我正在尝试旋转pdf⽂件中的页⾯,然后⽤SAME pdf⽂件中的旋转页⾯替换旧页⾯。
我写了以下代码:
#!/usr/bin/python
import os
from pyPdf import PdfFileReader, PdfFileWriter
my_path = "/home/USER/Desktop/files/"
input_file_name = os.path.join(my_path, "myfile.pdf")
input_file = PdfFileReader(file(input_file_name, "rb"))
input_file.decrypt("MyPassword")
output_PDF = PdfFileWriter()
for num_page in range(0, NumPages()):
page = Page(num_page)
output_PDF.addPage(page)
#Trying to replace old data with new data in the original file, not
#create a new file and add the new data!
output_file_name = os.path.join(my_path, "myfile.pdf")
output_file = file(output_file_name, "wb")
output_PDF.write(output_file)
output_file.close()
上⾯的代码给我⼀个错误!我什⾄尝试使⽤:
input_file = PdfFileReader(file(input_file_name, "r+b"))
但这也不起作⽤...
换⾏:
output_file_name = os.path.join(my_path, "myfile.pdf")
与:
output_file_name = os.path.join(my_path, "myfile2.pdf")
修复了所有问题,但这不是我想要的...
有什么帮助吗?
错误代码:
在_sweepIndirectReferences中,newobj = Object(data)⽂件“ /usr/lib/pymodules/python2.7/pyPdf/pdf.py”,第649⾏,在getObject中retval = readObject(self.stream,self)⽂件“ / usr / lib / pymodules / python2.7 / pyPdf /
generic.py“,第67⾏,在readObject中返回adFromStream(stream,pdf)⽂件“
/usr/lib/pymodules/python2.7/pyPdf/generic.py”在readFromStream中的第564⾏,引发utils.PdfReadError,“在流之后不到'endstream'标记。”pyPdf.utils.PdfReadError:在流之后不到“ endstream”标记。第67⾏,在readObject中返回adFromStream(stream,pdf)⽂件“ /usr/lib/pymodules/python2.7/pyPdf/generic.py”,第564⾏,在readFromStream中,引发utils.PdfReadError,“⽆法到'endstream ”。pyPdf.utils.PdfReadError:在流之后不到“endstream”标记。第67⾏,在readObject中返回adFromStream(stream,pdf)⽂件“
/usr/lib/pymodules/python2.7/pyPdf/generic.py”,第564⾏,在readFromStream中引发utils.PdfReadError,“⽆法
到'endstream '在流之后标记。”pyPdf.utils.PdfReadError:在流之后不到“ endstream”标记。
解决⽅案
python怎么读文件夹下的文件夹我怀疑问题是PyPDF正在写⼊⽂件时正在读取⽂件。
您已经注意到,正确的解决⽅法是写⼊⼀个单独的⽂件,然后⽤新⽂件替换原始⽂件。像这样:
output_file_name = os.path.join(my_path, "myfile-temporary.pdf")
output_file = file(output_file_name, "wb")
output_PDF.write(output_file)
output_file.close()
from tlib_ import open_atomic
with open_atomic(input_file_name, "wb") as output_file:
output_PDF.write(output_file)
这将⾃动创建⼀个临时⽂件,写⼊该⽂件,然后替换原始⽂件。
编辑:我最初误读了问题。以下是我的错误信息,但可能会对其他⼈的回答有所帮助。
您的代码很好,并且在“⼤多数” PDF上应该没有问题。
您看到的问题是PyPDF与您尝试使⽤的特定PDF之间不兼容。这可能是PyPDF中的错误,也可能是PDF并⾮完全有效。
您可以尝试两件事:
查看PyPDF2是否可以读取⽂件。使⽤安装PyPDF2pip install PyPDF2,将其替换import pyPdf …为import PyPDF2 …,然后重新运⾏脚本。
使⽤另⼀个程序重新编码您的PDF,然后查看是否可⾏。例如,使⽤类似⽅法convert bad.pdf bad.ps; convert bad.ps maybe-
good.pdf 可能会解决问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。