【问题标题】:Edit a few lines of uncompressed PDF in Python在 Python 中编辑几行未压缩的 PDF
【发布时间】:2021-04-17 22:39:54
【问题描述】:

我想在未压缩的 pdf 中编辑几行。 我发现了一个类似的problem,但由于我需要扫描文件几次以获得我想要更改的确切行位置,这并不适合(并且正则表达式匹配的纯数量超过了预期)。 pdf 包含 utf-8 可编码行(其中一些我想编辑,特别是书签目标 ID) 和很多斑点(猜测图像等)。 当我用记事本编辑文件时,它工作正常,但是当我以编程方式进行时(读入,更改几行,回写) 图像和一些格式丢失。 (因为他们一开始没有被读入,忽略选项)

with codecs.open("merged-uncompressed.pdf", "r", encoding='ascii', errors='ignore') as f:

我可以使用errors="surrogateescape" 读取文件,并想从上面导入映射行,但不知道这种方法是否可行。

有谁知道如何处理这个问题?

最好的,卢卡斯

【问题讨论】:

    标签: python pdf editline


    【解决方案1】:

    我能够解决这个问题:

    1. 以二进制形式读取文件
    2. 标记了无法编码 utf-8 的行
    3. 将列表逐行复制到临时列表中(不可编码的行已使用占位符“None\n”复制)
    4. 然后我回去在复制的列表中进行搜索,所以我得到了我想要替换的行
    5. 替换了原始二进制列表中的行(相同的索引!)
    6. 将其写回文件
    7. 生成的 pdf 有点损坏,因为书签的目标 id 之前有空格,但通过重新压缩 qpdf 修复了它:)

    目前代码非常混乱,所以我现在不想发布它。 但我想在接下来的几周内将它添加到 github。 如果有人需要它:只需发表评论,它将具有更高的优先级。

    感谢任何想提供帮助的人:) 卢卡斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多