Ho un reportlab SimpleDocTemplate
e lo restituisco come PDF dinamico. Sto generando il suo contenuto basato su alcuni metadati del modello Django. Qui è la mia messa a punto del modello:Unisci PDF esistente nel nuovo ReportLab PDF via flowable
buff = StringIO()
doc = SimpleDocTemplate(buff, pagesize=letter,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)
Story = []
posso facilmente aggiungere metadati testuali dal modello Entry
nella lista Story
da costruire in seguito:
ptext = '<font size=20>%s</font>' % entry.title.title()
paragraph = Paragraph(ptext, custom_styles["Custom"])
Story.append(paragraph)
e quindi generare il file PDF da restituire nella risposta da chiamando build
sul SimpleDocTemplate
:
doc.build(Story, onFirstPage=entry_page_template, onLaterPages=entry_page_template)
pdf = buff.getvalue()
resp = HttpResponse(mimetype='application/x-download')
resp['Content-Disposition'] = 'attachment;filename=logbook.pdf'
resp.write(pdf)
return resp
uno dei metadati del modello è un file di montag ent. Quando questi file allegati sono PDF, vorrei unirli alla storia che sto generando; IE significa un PDF di tipo "flowable" di reportlab.
Sto tentando di farlo utilizzando pdfrw
, ma non ho avuto fortuna. Idealmente mi piacerebbe chiamare solo:
from pdfrw import PdfReader
pdf = pPdfReader(entry.document.file.path)
Story.append(pdf)
e aggiungere il pdf alla lista Story esistente da includere nella generazione del documento finale, come osservato in precedenza.
Qualcuno ha qualche idea? Ho provato qualcosa di simile utilizzando pagexobj per creare pdf, cercando di seguire questo esempio:
http://code.google.com/p/pdfrw/source/browse/trunk/examples/rl1/subset.py
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
pdf = pagexobj(PdfReader(entry.document.file.path))
ma non ha avuto fortuna neanche. Qualcuno può spiegarmi il modo migliore per unire un file PDF esistente in un reportlab scorrevole? Non sono bravo con questa roba e ho battuto la testa sulla generazione di PDF da giorni ormai. :) Qualsiasi direzione molto apprezzata!
Penso che si possa fare questo con la versione a pagamento di ReportLab. –
Ugh, non penso che la versione a pagamento di ReportLab sia un'opzione per me, sfortunatamente. :(Qualcuno ha qualche alternativa? – kyleturner