gpt4 book ai didi

python - 为什么 PyPDF2.PdfFileWriter 会忘记我对文档所做的更改?

转载 作者:行者123 更新时间:2023-11-28 18:07:59 31 4
gpt4 key购买 nike

我正在尝试修改 PDF 文件中的文本。文本可以在 TjBDC 类型的对象中。我找到了正确的对象,如果我在更改它们后直接读取它们,它们会显示更新后的值。

但是如果我将完整的页面传递给 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)

最佳答案

解决方法是将正在迭代更改的ContentStream赋值给之后的页面,再传给PdfFileWriter:

page[NameObject('/Contents')] = content
writer.addPage(page)

我找到了阅读 this 的解决方案和 this .

关于python - 为什么 PyPDF2.PdfFileWriter 会忘记我对文档所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52499339/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com