Joe*_*Joe 6 python pdf pdf-generation pypdf python-3.x
我正在尝试修改 PDF 文件中的文本。文本可以位于Tj或类型的对象中BDC。我找到了正确的对象,如果我在更改它们后直接读取它们,它们会显示更新的值。
但如果我将完整的页面传递给 PdfFileWriter,更改就会丢失。我可能正在更新副本而不是真实的对象。我查了一下id(),结果不一样。有人知道如何解决这个问题吗?
from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2.generic import TextStringObject, NameObject, ContentStream
from PyPDF2.utils import b_
reader = PdfFileReader("some.pdf")
writer = PdfFileWriter()
for page_idx in range(0, 1):
# Get the current page and it's contents
page = reader.getPage(page_idx)
content_object = page["/Contents"].getObject()
content = ContentStream(content_object, reader)
for operands, operator in content.operations:
if operator == b_("BDC"):
operands[1][NameObject("/Contents")] = TextStringObject("xyz")
if operator == b_("Tj"):
operands[0] = TextStringObject("xyz")
writer.addPage(page)
# Write the stream
with open("output.pdf", "wb") as fp:
writer.write(fp)
Run Code Online (Sandbox Code Playgroud)
解决方案是ContentStream先将正在迭代和更改的 分配给页面,然后再将其传递给PdfFileWriter:
page[NameObject('/Contents')] = content
writer.addPage(page)
Run Code Online (Sandbox Code Playgroud)
我找到了阅读this和this 的解决方案。
| 归档时间: |
|
| 查看次数: |
3432 次 |
| 最近记录: |