2017-05-03 2 views
0

ReportLab과 함께 PdfReader를 사용하여 PDF 페이지를 가져 와서 저장 (모두 성공) 한 다음 다중 페이지 PDF를 가져 와서 동일한 작업을 수행하려고합니다. 한 번에 한 페이지 씩 PDF를 가져 오는 방법을 알고 있지만 한 페이지 이상을 가져 오는 데 어려움을 겪고 있습니다.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()showPage() 기능을 사용해야합니다. 편집

추가 할 난 그냥 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

고맙습니다. @ 패트릭 Maupin! 별도의 질문으로 게시 할 다른 문제가 있습니다. –

+0

새 질문은 여기에 있습니다. http://stackoverflow.com/questions/43773477/reportlab-and-pdfrw-importing-scanned-pdf –

관련 문제