【问题标题】:PyPDF2 mergeTranslatedPage doesn't work on some pdf'sPyPDF2 mergeTranslatedPage 不适用于某些 pdf
【发布时间】:2014-12-26 19:35:06
【问题描述】:

对于一些输入文件,我将 2 页并排合并为 1 页失败。我不知道为什么! 示例测试代码:

from PyPDF2 import PdfFileWriter, PdfFileReader
import sys
print ("2-up input " + sys.argv[1])
input1 = PdfFileReader(open(sys.argv[1], "rb"), strict=False)
output = PdfFileWriter()

lhs = input1.getPage(0)
rhs = input1.getPage(1)
lhs.mergeTranslatedPage(rhs, 420,0, True)
output.addPage(lhs)
outputStream = open(sys.argv[2], "wb")
output.write(outputStream)
outputStream.close()

失败的案例生成一个只有 lhs 页面的输出文件,而一个好的输出有 lhs 和 rhs 页面彼此相邻。

一个可能的线索:当我在“坏”输入文件上运行脚本时,我收到以下消息: “PdfReadWarning:外部参照表不是零索引。对象的 ID 号将被更正。[pdf.py:1503]”

【问题讨论】:

  • 请提供相关文件。如果问题只发生在一些输入文件,它们似乎有一些特别之处。
  • 如果您不喜欢 PyPDF2,另一个可以合并 PDF 的 Python 库是 pdfrw。它有 4-up 和 2up 示例。

标签: pdf pypdf


【解决方案1】:

我很确定这是 pyPDF2 的问题。我尝试了基于Gluing (Imposition) ... 的替代非 Python 解决方案(参见 Wang 的第 4 个答案)。

我的代码:

#!/bin/bash
# converts pdf file to 2-up pdf file
# command line argument is pdf file name
# output is output.pdf
pdftops $1 - | psnup -Pa5 -m0.6in -2 -q | pstopdf -i -o output.pdf

确实适用于 PyPDF2 阻塞的麻烦文件。 请注意,pnup 的格式参数将取决于您的文档。

我仍在学习它们的工作原理!

【讨论】:

  • 如果你的坏文件真的坏了,这不是pyPDF2的问题而是文件的问题。
  • 我也同样确认。 'mergeTranslatedPage' 适用于一些 pdf 文件,但不适用于其他文件。它甚至可以在 pdf 的某些页面上使用,而在其他页面上则不行。那些工作的页面没有字体(只有一个图像已作为新页面添加到使用 acrobat pdf pro 的 pdf 文件中)。
【解决方案2】:

在我看来,我没有检查,但是,在这里:

output.addPage(lhs)

你要求python只添加1页到新文件中,这个页是lhs。 也试着写:

output.addPage(rhs)

【讨论】:

  • 对不起,我没有得到,你想要面向专辑的 pdf 吗?我的意思是 2 页在 1 张纸上。或者你想像我一样,分开两页。因为如果你想要面向专辑的 pdf 文件,而不是代码,你在 github 上给我展示的代码很好。
  • @levgenii 是的,我想要并排的 2 页。我上面的代码基于那个 github 示例。我遇到的问题是该代码适用于某些 pdf 文件,但它适用于其他文件
  • 我明白了,也不知道为什么
猜你喜欢
  • 2018-02-09
  • 1970-01-01
  • 2015-07-28
  • 2015-12-30
  • 2021-04-14
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 2014-12-17
相关资源
最近更新 更多