问题标签 [pypdf2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PyPDF2:在内存中连接 pdf
我希望在纯python的内存中有效地将一堆小pdf连接(附加)在一起。具体来说,通常情况是 500 个单页 pdf,每个大小约为 400 kB,合并为一个。假设 pdf 可作为内存中的迭代器使用,例如列表:
其中每个 pdf_fileobj 的类型为 BytesIO。然后,基本内存使用量约为 200 MB(500 个 pdf,每个 400kB)。
理想情况下,我希望使用不超过 400-500 MB 的总内存(包括my_pdfs
)连接以下代码。但是,情况似乎并非如此,最后一行的调试语句表明使用的最大内存几乎是 700 MB。此外,使用 Mac os x 资源监视器,当到达最后一行时,分配的内存被指示为 600 MB。
运行会将gc.collect()
其减少到 350 MB(几乎太好了?)。在这种情况下,为什么我必须手动运行垃圾收集来摆脱合并垃圾?我已经看到这(可能)导致内存在稍微不同的情况下积累,我现在将跳过。
问题摘要
- 为什么上面的代码需要将近 700 MB 的内存来合并 200 MB 的 pdf?不应该 400 MB + 开销就足够了吗?我该如何优化它?
- 当有问题的变量应该已经超出范围时,为什么我需要手动运行垃圾收集来摆脱 PyPDF2 合并垃圾?
- 这种通用方法怎么样?BytesIO适合使用这种情况吗?
merger.write(myio)
考虑到一切都发生在 ram 中,它的运行似乎有点慢。
谢谢!
python - 在某些 csv 文件中以单行形式写入数据
我已经编写了一些代码来从“pdf”文件的特定页面读取数据并使用 python 将其写入 csv 文件。它只是部分地完成了它的工作。但是,在将数据写入 csv 文件时,它会将这些数据写入单行而不是常规模式。我应该如何修改我的脚本以达到目的?提前致谢。
这是我迄今为止尝试过的:
pdf中的数据如下:
我在 csv 输出中获取数据,例如:
python - 如何使用 Python 从 PDF 中的特定区域提取文本?
我正在尝试使用 Python 从 PDF 中提取文本,并且我已经使用 PyPDF2 成功地做到了这一点,如下所示:
这会从页面中提取所有文本,但我只想从页面左上角的 3'x4' 矩形区域中提取文本。
我基本上想做类似的事情:如何从特定矩形区域内的 pdf 文档中提取文本?但在 Python 中
这可以通过 PyPDF2 或任何其他 Python 库来完成吗?
python - PyPDF2 写入不适用于某些 PDF 文件(Python 3.5.1)
首先,我使用的是 Python 3.5.1(32 位版本),我编写了以下程序,使用 PyPDF2 和 reportlab 在我的 pdf 文件的所有页面上添加页码:
该程序适用于相当多的 PDF 文件(尽管有时会生成警告,如 ' PdfReadWarning: Superfluous whitespace found in object header b'16' b'0' [pdf.py:1666]
' 但生成的输出文件对我来说没问题)。但是,该程序无法处理某些 PDF 文件,尽管这些文件在我的 Adobe Acrobat 中是完全可读和可编辑的。我的印象是,错误主要出现在已扫描的 PDF 文件上,但并非全部出现(我还对未生成任何错误的扫描 PDF 文件进行了编号)。我收到以下错误消息(前 8 行是我自己的打印命令的结果):
显然,这些页面与由 reportlab 创建的 PDF 合并(参见第 6/6 页的行),但最终 PyPDF2 无法生成输出 PDF 文件(我得到一个不可读的 0 字节输出文件)。有人可以阐明如何解决这个问题吗?我搜索了互联网,但无法真正找到答案。
pypdf2 - PyPDF2 给我一个无效的参数错误
我正在尝试从 pdf 文件中解析文本。当我在做 PyPDF2 的教程时,我得到了以下错误。我搜索了答案,但最终没有找到答案。任何帮助将不胜感激。
这是完整代码
python - 在字典键(或 csv)中附加基于 pdf 文件的 multilpe 值会导致页面过多
我正在尝试根据他们所在的县生成 pdf 文件。如果每个县有多个 pdf 文件,那么我需要根据县键将文件附加到一个文件中。我似乎无法根据密钥附加地图。生成的最终地图似乎是随机的,并且通常附加了太多的文件。我很确定我没有正确地将它们分组。我读过一个键中的多个值可能会导致多次显示。有人可以告诉我如何分别访问每个键的每个值,仅一次?显然我不理解一些关键的东西。
我的代码:
我输出了四张地图(这是正确的),但是其中一些文件中的“页面”(附加文件)的数量非常少。据我所知,这些页面的附加方式没有押韵或理由。County4 pdf 有 3 页(正确),County1 pdf 有 8 页而不是 2 页,County3 pdf 有 1 页(正确),County2 有 15 页而不是 2 页。
编辑:
事实证明 pyPDF2 不喜欢使用 group-by 的概念迭代和创建文件。我想它与它如何存储内存有关。结果是在您遍历键值时创建的页面数量越来越多。我花了几天时间认为这是我的编码。很高兴知道这不是我猜的,但我很惊讶这条信息并没有“在互联网上”更好。
我的解决方案是使用 arcpy,这对大多数用户阅读本文没有帮助,抱歉。
对于那些查看我的解决方案的人,我的 csv 文件如下所示:
我生成的 pdf 文件如下所示:
python - 如何使用 Python 获取 PDF 文件元数据“页面大小”?
我尝试在 Python 3 中使用 PyPDF2 模块,但无法显示“页面大小”属性。在扫描到 PDF 文件之前,我想知道纸张尺寸是多少。
像这样的东西:
但我正在寻找另一个 Python 函数,而不是例如 getNumPages()...
下面的这个命令打印某种元数据,但没有页面大小:
python - 使用 PyPDF2 从 PDF 中逐行提取事务数据
我正在尝试使用 Python 3 从 PDF 中提取交易数据作为一个简单的程序。我看到的是输出从第 1 页返回为垃圾文本。这发生在特定的银行对账单 pdf 上,而其他 PDF 工作正常。
6
ÉŁ@äKâKñ øðð
õòô õùô`øòððóøøðÅ¢Š†IŒfiñ</code>øøø
ôôö
óóðøããèñøðð
ùõõøðöð׆¨@‡¨@Š‹ŒŁ–
ñ
øððôóö
÷ùõøÖ¤£¢›—–@äKâK@…†fifi@…Œfifi–…£ñ<code>óðò
不知道其他人是否有类似的问题?或任何建议?
python - 在Python中将空白页添加到奇数页PDF
这是如何使用 Python 在 PDF 中将“缺失”页面作为空白页面插入的重写?但我正在尝试使用PdfFileWriter
其他方法来做到这一点:cloneDocumentFromReader()
并且addBlankPage()
,因为这样看起来更干净。
我需要在 PDF 的末尾添加一个空白页,如果它包含奇数页,但页数大于 1。
所以我正在尝试这样做:
该代码有效,但创建的 PDF 比原始 PDF 小,并且在尝试在 Adobe Acrobat 中打开时出现错误(不解析)。
我是否将某些内容与它应该如何工作混为一谈?当我看到我无法使用 PdfWriter 在 Pdf 中导航以选择添加空白页的位置时,我有点惊讶,但我认为,在我克隆文档后,它应该在最后页面有一些内部“标记”?