Tôi có reportlab SimpleDocTemplate
và trả về dưới dạng PDF động. Tôi tạo ra nội dung của nó dựa trên một số siêu dữ liệu mô hình Django. Đây là thiết lập mẫu của tôi:Hợp nhất PDF hiện tại vào tệp ReportLab PDF mới qua lưu lượng
buff = StringIO()
doc = SimpleDocTemplate(buff, pagesize=letter,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)
Story = []
tôi có thể dễ dàng thêm siêu dữ liệu văn bản từ mô hình Entry
vào danh sách Story
được xây dựng sau:
ptext = '<font size=20>%s</font>' % entry.title.title()
paragraph = Paragraph(ptext, custom_styles["Custom"])
Story.append(paragraph)
Và sau đó tạo PDF để được trả lại trong phản ứng bằng gọi build
trên 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
một siêu dữ liệu trên mô hình là một tập tin attachm ent. Khi những tệp đính kèm đó là các tệp PDF, tôi muốn hợp nhất chúng thành Câu chuyện mà tôi đang tạo; IE có nghĩa là một tệp PDF loại reportlab "flowable".
Tôi đang cố gắng làm như vậy bằng cách sử dụng pdfrw
, nhưng chưa có bất kỳ may mắn nào. Lý tưởng nhất tôi muốn gọi là:
from pdfrw import PdfReader
pdf = pPdfReader(entry.document.file.path)
Story.append(pdf)
và nối pdf vào danh sách Câu chuyện hiện có để đưa vào tạo tài liệu cuối cùng, như đã lưu ý ở trên.
Bất kỳ ai có ý tưởng nào? Tôi cố gắng một cái gì đó tương tự như sử dụng pagexobj để tạo pdf, cố gắng làm theo ví dụ này:
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))
Nhưng không có bất kỳ may mắn trong hai. Ai đó có thể giải thích cho tôi cách tốt nhất để hợp nhất một tệp PDF hiện có vào một reportlab có thể lưu chuyển? Tôi không tốt với công cụ này và đã đập đầu vào thế hệ pdf trong nhiều ngày nay. :) Bất kỳ hướng nào được đánh giá cao!
Tôi nghĩ bạn có thể thực hiện việc này với phiên bản ReportLab trả phí. –
Ugh, tôi không nghĩ rằng phiên bản trả tiền của ReportLab là một lựa chọn cho tôi, thật không may. :(Bất cứ ai có bất kỳ lựa chọn thay thế? – kyleturner