2017-05-04 8 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

2つの質問:1)あなたは0.3を使用していますか、githubから最新のものをインストールしましたか。 2)あなたは私に動作しないPDFを送ることができますか? –

+0

私は3.4.0を使用しています。 PDFを直接送信できますか? S.O。 –

+0

私はPython版ではなく、pdfrw版を意味しました。私の電子メールアドレスはgithubで入手できます。 –

答えて

1

すっごく...

一方で、私はなぜこれが起こって、そして今、それをデバッグする 本当に多くない時間がされて絶対にないアイデアを持っていません。

一方、私は回避策を持っています(そして、v0.3と現在のgithubマスターで 回避策を試してみました。どちらも私にとっては でした)。

私はあなたのコードがあなたのページで失敗したことを確認し、 が別のPDFで動作していたことを確認し始めました。それでは、私は自分自身に尋ねました。私がウォーターマークの例である を使ってページをウォーターマークとしてPDFを作成するとどうなりますか? (これは、同じフォームXObjectコードの一部を使用するため)。それでは、 だから、 ウォーターマーク付きページをreportlabコードに渡すと、どうなっていましたか?

興味深いことに、画像を含む透かし入りページ全体が となっています。そこで、 ウォーターマークが行う最小限の作業を行うようにコードを修正しました。これは、フォームXCCをフォームの中に入れて、 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() 
関連する問題