0

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

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

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

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

最好的,卢卡斯

4

1 回答 1

0

我能够解决这个问题:

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

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

感谢任何想提供帮助的人:) Lukas

于 2021-04-18T11:37:48.657 回答