Tôi cũng gặp vấn đề tương tự. Tài liệu chỉ là một trang đầu và một cái bàn lớn. Thời gian hiển thị PDF tăng lên theo cấp số nhân với kích thước của bảng nội dung của tôi.
tôi đã thực hiện một danh sách kiểm tra điều cần kiểm tra mà có thể là vấn đề
tôi đã làm thời gian đơn giản về chức năng PDF vẽ của tôi (vì nó có thể là vẽ HTML, đi qua nó để StringIO, hoặc tạo ra các phản ứng HTTP) và nhận thấy rằng cuộc gọi pisa.pisaDocument mất 60 giây để quay lại. Tôi đã làm một danh sách kiểm tra của những thứ có thể là vấn đề, và làm việc trên chúng mỗi. Danh sách kiểm tra bao gồm Hình ảnh, CSS, Độ phức tạp đánh dấu và Khung.
Hình ảnh hầu như không ảnh hưởng đến thời gian hiển thị (tôi chỉ có một trang trên mỗi trang, vì vậy YMMV). Khung hình cũng không.
Độ phức tạp đánh dấu là vấn đề chính của mẫu của tôi. Rõ ràng pisa sẽ hiển thị nhiều cột trong một bảng rất, rất chậm
Bảng đã mất quá nhiều thời gian để hiển thị, nhưng tôi nhận thấy rằng nếu tôi chia bảng thành các bảng nhỏ hơn, thời gian hiển thị không tăng theo cấp số nhân nữa, và thời gian cần để làm mọi thứ bị cắt làm đôi. Tôi đã sử dụng mã dưới đây vào mẫu Django của tôi:
{% if forloop.counter|divisibleby:20 %}</table><table>{% endif %}
chỉnh sửa: sửa chữa này không hoạt động tốt với lặp lại tiêu đề bảng vì vậy nếu bạn đang làm repeat="1"
bạn phải biết chính xác có bao nhiêu hàng để phù hợp với từng trang.
Ngoài ra, tôi đã có con quái vật này của một selector trong CSS của tôi:
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video{
...
}
Bằng cách thay đổi nó để * {...}
rendering tăng tốc lên một chút. Điều này phản trực giác vì trình duyệt sẽ không hiển thị nhanh trang của bạn khi bạn sử dụng công cụ chọn *
so với khi bạn sử dụng con quái vật ở trên.
Ngoài ra, vì một số lý do, việc hợp nhất hai thẻ trong trang <style>
vào một thẻ cũng giảm thời gian hiển thị.
nó có thể không giúp đỡ nhưng bạn đã xem wkhtmltopdf chưa? – Matt
Có lẽ tôi sẽ xem xét nếu không có giải pháp nào khác: Tôi đã chọn Pisa vì tích hợp với Django ... – Don
FWIW Tôi thực hiện một số tài liệu dựa trên bảng nhưng chỉ về một trang nội dung tải gần như ngay lập tức nhưng các báo cáo tôi thực hiện có gần 1300 hàng và khoảng 50 trang mất gần 30 giây. Bạn đang sử dụng cái nĩa nào? Tôi có thể thử [ChrisGlass/Xhtml2pdf] (https://github.com/chrisglass/xhtml2pdf/tree/xhtml2pdf-refactor) để xem nó có được cải thiện qua [phiên bản gốc] không duy trì (https://github.com/ hay không) holtwick/xhtml2pdf) –