- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想将几个 PDF 文件合并为一个 PDF 文档。事实证明,输入文件并不完全符合标准。 EOF 标记后跟一些附加信息:
>>
startxref
1994481
%%EOF
%%PPIRoute: 4
显然,这会导致 pyPdf giving me an exception :
pyPdf.utils.PdfReadError: EOF marker not found
现在的问题是:我该怎么办?我可能可以打开每个文件,去掉最后两行并保存,然后再将它们放入 pyPdf。但是,我不太喜欢这个主意。也许有更好的选择?
最佳答案
我建议更改 pdf.py 脚本中 PdfFileReader
类的read()
方法的开头:
def read(self, stream):
# start at the end:
stream.seek(-1, 2)
line = ''
while not line:
line = self.readNextEndLine(stream)
if line[:5] != "%%EOF":
raise utils.PdfReadError, "EOF marker not found"
... etc
到:
def read(self, stream):
# start at the end:
stream.seek(-1, 2)
line = ''
# read stream backwards while watching for end-of-file marker
while line[:5] != "%%EOF":
line = self.readNextEndLine(stream)
... etc
在我看来,原始代码并没有真正执行 Adobe PDF 1.3 Reference 中第 3.4.4 节“文件尾部”(第 628 页)所暗示的内容。记录它说的地方(斜体我的):
Acrobat viewers require only that the %%EOF marker appear somewhere within the last 1024 bytes of the file.
换句话说,在 "%%EOF"
标记之后的文件的物理结尾之前可以有其他内容。我建议的更改尝试适应这一点并使其忽略标记后可能附加到文件末尾的任何其他内容,而不是引发异常(但是它不需要“%%EOF”
如规范所述位于最后 1K 字节中,尽管可以添加对此的检查)。这也意味着您尝试合并的文件实际上可能符合规范。
更新:
这里的版本也要求"%%EOF"
标记位于最后 1024 字节内:
def read(self, stream):
# start at the end
stream.seek(-1, os.SEEK_END)
last1K = stream.tell() - 1024 + 1 # offset of last 1024 bytes of stream
# read stream backwards while watching for end-of-file marker
line = ''
while line[:5] != "%%EOF":
line = self.readNextEndLine(stream)
if stream.tell() < last1K:
raise utils.PdfReadError, "EOF marker not found"
... etc
关于python - 使用 pyPdf 合并非标准 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177587/
我尝试安装这个包... $ pip search pyPdf PyPDFLite - Simple PDF Writer. pypdfocr
使用它时出现意外错误。第一部分来自我在网上找到的脚本,我试图用它来提取 PDF 大纲中标识的特定部分。一切正常,除了在 output.write(outputfile1)它说: PdfReadErro
Here我找到了用于拆分 pdf 页面的代码。 #!/usr/bin/env python import copy, sys from pyPdf import PdfFileWriter, PdfF
使用 pypdf python 模块如何读取以下 pdf 文件 http://www.envis-icpe.com/pointcounterpointbook/Hindi_Book.pdf # -*-
我是Python新手。我尝试打开pdf文件并将其内容写入新的文本文件。文本文件名称由 pdf 名称生成。到目前为止我已经尝试过,但它没有达到我的预期。我怎样才能实现它 import glob,
我实际上是在使用 pyPdf 打开、读取和写入 PDF 文件的内容。 为此,我使用了这些代码行: from pyPdf import PdfFileWriter, PdfFileReader pdf
按照这个例子,我可以将所有元素列成一个pdf文件 import pyPdf pdf = pyPdf.PdfFileReader(open("pdffile.pdf")) list(pdf.pages)
如果我有 1000 多个 pdf 文件需要合并为一个 pdf, from PyPDF2 import PdfReader, PdfWriter writer = PdfWriter() for i i
我有一个 PDF 文件(A4,纵向布局),我想将其中的每一页分成一半高度。输出文件也应该是A4和纵向布局,但每页的下半部分需要是空白的。 我看到了https://stackoverflow.com/a
我有一个 PDF 文件(A4,纵向布局),我想将其中的每一页分成一半高度。输出文件也应该是A4和纵向布局,但每页的下半部分需要是空白的。 我看到了https://stackoverflow.com/a
我正在运行以下代码来创建一个新的 PDF 文件,其中包含源 PDF 的除第一页之外的所有页面: import os from pyPdf import PdfFileReader, PdfFileWr
这个问题在这里已经有了答案: How can I rotate a page with PyPDF2? (2 个答案) 关闭 12 个月前。 我们有一个简单的脚本来读取传入的 PDF 文件。如果是横
目前,如果我使用 pyPdf 和 extractText() 创建一个 pdf 页面的页面对象,会发生什么行被连接在一起。例如,如果页面的第 1 行说“hello”而第 2 行说“world”,则从
目前我正在研究将 PDF 与 pyPdf 合并,但有时输入的顺序不正确,所以我正在研究抓取每一页的页码以确定它应该进入的顺序(例如,如果有人将一本书分成 20 份 10 页的 PDF,而我想将它们重新
我在 Windows 平台上使用 Python 2.4 和 PyPdf 1.13。我正在尝试使用以下代码将列表中的 PDF 文件合并为一个文件: import os from pyPdf import
我想将几个 PDF 文件合并为一个 PDF 文档。事实证明,输入文件并不完全符合标准。 EOF 标记后跟一些附加信息: >> startxref 1994481 %%EOF %%PPIRoute: 4
我有以下代码: import os from pyPdf import PdfFileReader, PdfFileWriter path = "C:/Real Python/Course mater
我正在尝试将 PDF 的每一页提取为字符串: import pyPdf pages = [] pdf = pyPdf.PdfFileReader(file('g-reg-101.pdf', 'rb')
我正在尝试使用 pyPdf 从多页 PDF 中提取和打印页面。问题是,文本不是从某些页面中提取的。我在这里放了一个示例文件: http://www.4shared.com/document/kmJF6
我正在尝试使用 pyPDF 编写几个 python 脚本,将 PDF 页面拆分为六个单独的页面,正确排序它们(通常正面和背面打印,因此每个其他页面都需要以不同方式排序),并删除结果输出文档末尾的空白页
我是一名优秀的程序员,十分优秀!