2010-02-17 37 views
5

Tôi hiện đang sử dụng FPDF để tạo một số báo cáo khá phức tạp và đang cố gắng nâng cấp lên TCPDF, nhưng tôi thấy rằng mã tương tự của tôi chạy qua TCPDF chậm gấp đôi. Bởi vì các tệp PDF của tôi đã mất đến một phút để tạo ra tôi không thể đủ khả năng để có sự chậm lại này, nhưng tôi thực sự muốn tận dụng một số tính năng TCPDF (như tạo dấu trang).TCPDF hai lần chậm như FPDF với cùng một mã

Nếu ai đó có một số thông tin về vấn đề này tôi thực sự đánh giá cao nó - hoặc những thứ bạn đã làm để làm cho TCPDF nhanh hơn, hoặc chỉ xác nhận rằng nó chạy chậm hơn FPDF, vì vậy tôi có thể quên nó và chỉ gắn bó với FPDF.

Trả lời

0

Hiệu suất TCPDF có thể được điều chỉnh bằng cách tắt các tính năng không sử dụng trên tệp cấu hình và tắt các tính năng chậm như đặt phông chữ. Chỉ sử dụng các phông chữ chính (như Helvetica, Times, ...) ở chế độ không phải UTF8, bạn có thể có được những màn trình diễn hay. Ngoài ra, bạn có thể cài đặt XCache trên máy chủ để tăng hiệu suất PHP. Kiểm tra trang web chính thức http://www.tcpdf.org và diễn đàn để biết thêm thông tin.

4

Đây là một giải pháp ngọt ngào, cạo 2 phút cho tôi. Các tệp PDF được tạo trong 3 giây!

http://www.bitrealm.net/2010/08/tcpdf-is-slow-here-is-the-solution/

Thay

$font = $this->_getTrueTypeFontSubset($font, $subsetchars); 

với điều này:

/ Alcal: $font2cache modification 
// This modification creates utf-8 fonts only the first time, 
// after that it uses cache file which dramatically reduces execution time 
if (!file_exists($fontfile.'.cached')){ 
// calculate $font first time 
$subsetchars = array_fill(0, 512, true); // fill subset for all chars 0-512 
$font = $this->_getTrueTypeFontSubset($font, $subsetchars); // this part is actually slow! 
// and then save $font to file for further use 
$fp=fopen($fontfile.'.cached','w'); 
$flat_array = serialize($font); // 
fwrite($fp,$flat_array); 
fclose($fp); 
} 
else { 
// cache file exist, load file 
$fp=fopen($fontfile.'.cached','r'); 
$flat_array = fread($fp,filesize($fontfile.'.cached')); 
fclose($fp); 
$font = unserialize($flat_array); 
} 
1

Kể từ phiên bản 5.9.067 biểu diễn TCPDF được cải thiện đáng kể. Mỗi bản phát hành mới có vẻ hoạt động tốt hơn. Ngoài ra bạn có thể thiết lập nó để thúc đẩy các buổi biểu diễn như đã giải thích ở http://www.tcpdf.org/performances.php

2

http://www.tcpdf.org/performances.php

By TCPDF mặc định cho phép font chữ Subsetting để giảm kích thước của nhúng phông chữ Unicode TTF, quá trình này, đó là rất chậm và đòi hỏi rất nhiều bộ nhớ, có thể được tắt bằng cách sử dụng phương thức setFontSubsetting (false);

Đây là giải pháp thực sự cho tôi.

Các vấn đề liên quan