【发布时间】:2017-07-24 05:52:47
【问题描述】:
我目前想处理 PDF 中的字符串。由于常见的 Python 库似乎不支持此功能,因此我使用 pdftk 解压缩 PDF 并直接使用 Python 编辑文件。
是否可以直接用 Python 解压 PDF 文件?
【问题讨论】:
我目前想处理 PDF 中的字符串。由于常见的 Python 库似乎不支持此功能,因此我使用 pdftk 解压缩 PDF 并直接使用 Python 编辑文件。
是否可以直接用 Python 解压 PDF 文件?
【问题讨论】:
在 git-hub 中有一个新的压缩/解压缩请求。但它不是发布的一部分。
您可能需要复制 --> 将 pypdftk.py 的内容粘贴到本地库的 pypdftk.py 文件中。并尝试使用以下功能。
import pypdftk
def test_compress():
input_file = "/Out/test1.unc.pdf"
pypdftk.compress(input_file, "./Out/test1.c.pdf")
def test_uncompress():
input_file = "./Out/test1.pdf"
pypdftk.uncompress(input_file, "./Out/test1.unc.pdf")
def main():
test_num_pages()
test_uncompress()
test_compress()
if __name__ == '__main__':
main()
刚刚试了一下。不确定您是否正在寻找相同的解决方案。 :) 希望这会对你有所帮助。
【讨论】:
pdftk。它几乎与我目前所做的相同(但更糟糕的是,因为它是一个 3rd 方模块)。
pyPDF2 可以解压内容对象
================================================ ======
from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2 import generic
from PyPDF2.pdf import ContentStream
from PyPDF2.generic import TextStringObject, NameObject
pdf = PdfFileReader(in_name)
pdf_writer = PdfFileWriter()
for n in range(0, pdf.getNumPages()):
page = pdf.getPage(n)
content_object = page["/Contents"].getObject()
content = ContentStream(content_object, pdf)
page.__setitem__(NameObject("/Contents"), content)
pdf_writer.addPage(page)
with Path(out_name).open(mode="wb") as output_file:
pdf_writer.write(output_file)
【讨论】: