2017-05-03 41 views
0

ReportLabと一緒にPdfReaderを使用して、PDFページを取得して保存する(両方とも成功した)後、複数ページのPDFを取り込み、同様に処理しようとしています。 PDFを一度に1つずつ取り込む方法を知っていますが、複数のページを取り込もうとしています。ReportLab複数ページの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() 

p3_ = PdfReader(m4folder+'Academy.pdf',decompress=False).pages 

ここで私は迷っています。私は....これがちょうど最初のページに引っ張るために機能

p3 = pagexobj(p3_[0]) 

を知っている。しかし、私はPDFのすべてのページに引っ張るしたい場合は、私が何をすべきかわかりません。 私はこの試みた:

p3 = [pagexobj(x) for x in p3_[:]] 

をしかし、それはアサーションエラーが生じた(下記参照)。

c.setPageSize([8.5*inch, 11*inch]) #Set page size (for portrait) 
c.doForm(makerl(c, p3)) 
c.showPage() 
c.save() 


AssertionError: [{'/BBox': [0.0, 0.0, 792.0, 612.0], '/Filter': '/FlateDecode', '/FormType': 1, '/Matrix': [0, 1, -1, 0, 0, 0], '/Length': '56', '/Subtype': '/Form', '/Resources': {'/ProcSet': ['/PDF', '/ImageB', '/ImageC', '/ImageI'], '/XObject': {'/Im1': (8, 0)}}, '/Type': '/XObject'}, {'/BBox': [0.0, 0.0, 792.0, 612.0], '/Filter': '/FlateDecode', '/FormType': 1, '/Matrix': [0, 1, -1, 0, 0, 0], '/Length': '56', '/Subtype': '/Form', '/Resources': {'/ProcSet': ['/PDF', '/ImageB', '/ImageC', '/ImageI'], '/XObject': {'/Im2': (17, 0)}}, '/Type': '/XObject'}] 

答えて

1

ReportLabのキャンバスは、あなただけではないリストとしてすべてのページに、一度出力ページごとReportLabのdoForm()と​​機能を使用する必要があるので、一度に1つのページに動作します。

を追加するように編集

私はちょうど私がReportLabのhereを使用して、出力ファイルにPDFファイルのページのサブセットをコピーするいくつかのサンプルコードを持っていることを思い出しました。内部ループは次のようになります。

for page in pages: 
    canvas.setPageSize((page.BBox[2], page.BBox[3])) 
    canvas.doForm(makerl(canvas, page)) 
    canvas.showPage() 

ページをコピーするだけの場合は、reportlabは必要ありません。上記のディレクトリにpdfrwだけで同様のサブセットの例があります。

(免責事項:私は主pdfrwの作者です。)

+0

おかげで、@Patrick Maupinのを!私は別の質問として投稿する別の問題があります。 –

+0

新しい質問はこちら:http://stackoverflow.com/questions/43773477/reportlab-and-pdfrw-importing-scanned-pdf –

関連する問題