Mam szablon SimpleDocTemplate
i zwracam go jako dynamiczny plik PDF. Generuję treść na podstawie niektórych metadanych modelu Django. Oto moja konfiguracja szablonu:Scalanie istniejącego pliku PDF w nowy plik ReportLab PDF za pośrednictwem plików
buff = StringIO()
doc = SimpleDocTemplate(buff, pagesize=letter,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)
Story = []
mogę łatwo dodawać metadane tekstową z modelu Entry
do listy Story
powstać później:
ptext = '<font size=20>%s</font>' % entry.title.title()
paragraph = Paragraph(ptext, custom_styles["Custom"])
Story.append(paragraph)
a następnie wygenerować plik PDF być zwracane w odpowiedzi przez nazywając build
na 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
Jedno pole metadanych w modelu jest dob./mon plik ent. Kiedy te załączniki plików są plikami PDF, chciałbym je połączyć w Opowieść, którą generuję; IE oznacza plik reportlab "płynny".
Próbuję to zrobić, używając pdfrw
, ale nie miałem szczęścia. Idealnie chciałbym po prostu zadzwoń:
from pdfrw import PdfReader
pdf = pPdfReader(entry.document.file.path)
Story.append(pdf)
i dołączyć pdf do istniejącej listy Story, które należy uwzględnić w tworzeniu ostatecznej wersji dokumentu, jak wspomniano powyżej.
Ktoś ma jakieś pomysły? Próbowałem coś podobnego używając pagexobj stworzyć pdf, starając się podążać za tym przykładem:
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))
ale nie miał szczęścia albo. Czy ktoś może mi wytłumaczyć najlepszy sposób na scalenie istniejącego pliku PDF w raporcie? Nie jestem z tym dobry i od wielu dni walę głową o generowanie plików pdf. :) Każdy kierunek bardzo mile widziany!
Myślę, że możesz to zrobić za pomocą płatnej wersji ReportLab. –
Ugh, nie sądzę, że płatna wersja ReportLab jest dla mnie opcją, niestety. :(Ktoś ma jakieś alternatywy? – kyleturner