2017-05-04 102 views
1

使用下面的代碼,我試圖導入一個PDF頁面到一個現有的畫布對象並保存爲PDF。這通常工作得很好,但我注意到,當我使用從掃描文檔生成的PDF進行嘗試時,結果爲空白頁。任何接受者?ReportLab和pdfrw:導入掃描的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() 

在此先感謝!

+0

兩個問題:1)你使用0.3還是你安裝了最新的github;和2)你能寄給我一個不起作用的PDF嗎? –

+0

我使用的是3.4.0。我可以直接發送PDF嗎?不知道如何通過S.O. –

+0

我的意思是pdfrw版本,而不是Python版本。至於發送樣本,我的電子郵件地址是可用的github ... –

回答

1

的sooo ...

,一方面,我絕對不知道爲什麼發生這種情況,並 沒有真正太多的時間,現在對其進行調試。另一方面,我有一個解決方法爲你(我試過在v0.3上的 解決方法,以及當前的github主,並且它在這兩種情況下爲我工作)。

我開始時通過驗證您的代碼在您的頁面上失敗,並且 在另一個PDF上運行。然後我問自己:「如果我使用 我的水印示例創建PDF作爲水印,頁面會發生什麼?」 (因爲它使用了一些相同的XObject代碼)。那麼, 那麼我問自己:「如果我通過我的 帶水印的頁面通過你的reportlab代碼,看起來是什麼樣子?」

有趣的是,整個水印頁面,包括您的圖片,通過 。所以我修改了你的代碼來完成 水印所做的最小的事情,當XObject傳遞給reportlab時,XObject就會在表單中放入一個表格 。這工作。

這是我爲此使用的代碼的稍微修改版本。

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()