gpt4 book ai didi

ReportLab 和 pdfrw : Importing Scanned PDF

转载 作者:行者123 更新时间:2023-12-04 12:47:12 24 4
gpt4 key购买 nike

使用下面的代码,我试图将 pdf 页面导入现有的 Canvas 对象并保存为 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()

提前致谢!

最佳答案

呜……

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

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

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

有趣的是,整个带水印的页面,包括您制作的图像
它通过。所以我修改了你的代码来做最少的事情
水印确实如此,最终将表单 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()

关于ReportLab 和 pdfrw : Importing Scanned PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43773477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com