Tôi đang cố gắng thêm một "trang x của y" đơn giản vào báo cáo được thực hiện với ReportLab .. Tôi đã tìm thấy this old post về điều đó, nhưng có thể sáu năm sau, điều gì đó đơn giản hơn đã xuất hiện? ^^;
tôi thấy this recipe quá, nhưng khi tôi sử dụng nó, kết quả PDF thiếu những hình ảnh ..Hiển thị số trang với ReportLab
Trả lời
Tôi đã có thể triển khai phương pháp NumberedCanvas từ ActiveState. Nó rất dễ làm và không thay đổi nhiều mã hiện tại của tôi. Tất cả những gì tôi phải làm là thêm lớp NumberedCanvas và thêm thuộc tính canvasmaker khi xây dựng tài liệu của tôi. Tôi cũng thay đổi các số đo của nơi "x của y" được trưng bày:
self.doc.build(pdf)
trở thành
self.doc.build(pdf, canvasmaker=NumberedCanvas)
doc là một BaseDocTemplate và pdf là danh sách các yếu tố chaûy.
Hình ảnh có hiển thị bình thường với cách tiếp cận đó không? – Joril
Tôi có hình ảnh hiển thị trên pdf mà không có bất kỳ vấn đề gì. Nếu bạn đang gặp vấn đề với hình ảnh, bạn có thể xây dựng hoặc bắt đầu một câu hỏi mới không? – adam
Dường như kỹ thuật này phá vỡ các liên kết trong tài liệu. Khi tôi sử dụng nó, tất cả các liên kết từ một phần của tài liệu đến một phần khác bắt đầu điều hướng đến một phần xuống trang đầu tiên, thay vì đi đến các mục tiêu thực tế của chúng. – CoreDumpError
Chỉ cần đào lên một số mã cho bạn, chúng tôi sử dụng này:
SimpleDocTemplate(...).build(self.story,
onFirstPage=self._on_page,
onLaterPages=self._on_page)
Bây giờ self._on_page
là một phương pháp được gọi cho mỗi trang như:
def _on_page(self, canvas, doc):
# ... do any additional page formatting here for each page
print doc.page
Có nhưng phần khó khăn là làm thế nào để tìm ra phần "của y" :) Đó là, tổng số trang – Joril
sử dụng doc.multiBuild
và trong phương pháp tiêu đề trang (được định nghĩa bởi "onLaterPages ="):
global TOTALPAGES
if doc.page > TOTALPAGES:
TOTALPAGES = doc.page
else:
canvas.drawString(270 * mm, 5 * mm, "Seite %d/%d" % (doc.page,TOTALPAGES))
chỉ hoạt động nếu bạn có nhiều thẻ – jake77
- 1. trang html hiển thị với node.js
- 2. Ngắt trang có điều kiện trong reportlab
- 3. ReportLab LayoutError: quá lớn trên trang
- 4. Nhiều trang sử dụng Reportlab - Django
- 5. Hiển thị số dòng hiển thị VisualVM
- 6. Hiển thị trang đơn trong hiển thị HTML: SSRS
- 7. Python Reportlab PDF - Căn giữa văn bản trên trang
- 8. Chân trang và đầu trang nhiều dòng (đoạn) trong reportlab
- 9. Pagination không đúng số trang hiển thị CodeIgniter
- 10. Hiển thị biến số góc trong trang html của tôi
- 11. hiển thị trang aspx trong trang khác
- 12. webView với https loadUrl hiển thị trang trống
- 13. số hiển thị với số không hàng đầu
- 14. FBConnect: Tại sao nó hiển thị trên một số trang chứ không phải trang khác?
- 15. Hiển thị trang động trong ASPX
- 16. Điều gì khiến trang hiển thị chậm?
- 17. Sự cố phân trang thẻ hiển thị
- 18. trang đơn hiển thị, nhiều trang in vấn đề
- 19. cài đặt hiển thị so với ẩn/hiển thị
- 20. Trang hiển thị thời gian trong MVC
- 21. Trình tạo báo cáo SSRS - Chỉ hiển thị tiêu đề trên trang đầu tiên (với số trang)
- 22. Thêm ngắt trang vào đối tượng Canvas Reportlab
- 23. Số dòng không hiển thị?
- 24. Hiển thị video trong trang web
- 25. Hiển thị Ajax UpdateProgress ở giữa Trang
- 26. ZF2 paginator không hiển thị cuối trang
- 27. Google Analytics - Chặn HTML/hiển thị trang
- 28. Hiển thị hình ảnh ở giữa trang
- 29. Hiển thị cây trên trang JSP
- 30. Hiển thị các mục trang đếm trong phân trang django
Tôi có vấn đề này như vậy. Đây là công thức từ ActiveState sử dụng NumberedCanvas mà thực sự hoạt động: http://code.activestate.com/recipes/576832/ – Esteban