【问题标题】:ReportLab and pdfrw: Importing Scanned PDFReportLab 和 pdfrw:导入扫描的 PDF
【发布时间】:2017-10-02 01:52:21
【问题描述】:

使用下面的代码,我正在尝试将 pdf 页面导入现有的画布对象并保存为 PDF。这通常工作得很好,但我注意到当我尝试使用从扫描文档生成的 PDF 时,它会导致空白页。有接盘侠吗?

from reportlab.pdfgen import canvas
from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl

c = canvas.Canvas(Out_Folder+pdf_file_name)
c.setPageSize([11*inch, 8.5*inch])

page = PdfReader(folder+'2_VisionMissionValues.pdf',decompress=False).pages
p = pagexobj(page[0])
c.setPageSize([11*inch, 8.5*inch]) #Set page size (for landscape)
c.doForm(makerl(c, p))
c.showPage()
c.save()

提前致谢!

【问题讨论】:

  • 两个问题:1)你使用的是0.3还是从github安装了最新的;和 2) 你能给我发一份不工作的 PDF 吗?
  • 我使用的是 3.4.0。我可以直接发送PDF吗?不知道如何通过 S.O.
  • 我指的是 pdfrw 版本,而不是 Python 版本。至于发送样本,我的电子邮件地址在 github 上可用...
  • 抱歉,那是 ReportLab 版本。我正在使用 pdfrw 0.3。我会尽快发送pdf。

标签: reportlab pdf-reader pdfrw


【解决方案1】:

太好了……

一方面,我完全不知道为什么会这样,而且 现在没有太多时间来调试它。

另一方面,我有一个解决方法(我尝试了 v0.3 以及当前 github master 上的解决方法,它 在这两种情况下都为我工作)。

我首先验证了您的代码在您的网页上是否失败,并且 它适用于另一个PDF。然后我问自己“如果我使用 我的水印示例以您的页面作为水印创建 PDF?” (因为使用了一些相同形式的 XObject 代码)。那行得通, 所以然后我问自己“如果我通过我的 通过您的 reportlab 代码加水印的页面?”

有趣的是,整个带水印的页面,包括您制作的图片 它通过。所以我修改了你的代码来做最少的事情 watermark 确实如此,最终将表单 XObject 放入表单中 XObject 传递给 reportlab 时。那行得通。

这是我用于此的代码的略微修改版本。

import sys

from reportlab.pdfgen import canvas
from pdfrw import PdfReader, PageMerge
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl

inch = 72

fname, = sys.argv[1:]
page = PdfReader(fname,decompress=False).pages[0]
p = pagexobj(PageMerge().add(page).render())

c = canvas.Canvas('outstuff.pdf')
c.setPageSize([8.5*inch, 11.0*inch]) #Set page size (for portrait)
c.doForm(makerl(c, p))
c.showPage()
c.save()

【讨论】:

  • 你拯救了我的一天,这已经困扰我很长时间了!
猜你喜欢
  • 2017-03-05
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多