2010-02-17 10 views
5

साथ FPDF के रूप में मैं वर्तमान में काफी कुछ जटिल रिपोर्ट बनाने के लिए FPDF का उपयोग करें और TCPDF को उन्नत करने के लिए कोशिश कर रहा हूँ, लेकिन मैं पाया है कि मेरी एक ही कोड TCPDF के माध्यम से चलाने के बारे में दो बार के रूप धीमी है। चूंकि मेरे पीडीएफ पहले से ही उत्पन्न होने के लिए एक मिनट तक लेते हैं, इसलिए मैं वास्तव में इस मंदी को बर्दाश्त नहीं कर सकता, लेकिन मैं वास्तव में कुछ टीसीपीडीएफ सुविधाओं (जैसे बुकमार्क बनाना) का लाभ लेना चाहता हूं।TCPDF दो बार के रूप में धीमी गति से एक ही कोड

अगर किसी को इस समस्या पर कुछ जानकारी है तो मैं वास्तव में इसकी सराहना करता हूं - या तो टीसीपीडीएफ को तेज़ बनाने के लिए आपने जो कुछ किया है, या केवल पुष्टि है कि यह एफपीडीएफ की तुलना में धीमी गति से चलती है, इसलिए मैं इसके बारे में भूल सकता हूं और केवल एफपीडीएफ के साथ रह सकता हूं।

उत्तर

0

कॉन्फ़िगरेशन फ़ाइल पर अप्रयुक्त सुविधाओं को अक्षम करके और फ़ॉन्ट सबसेटिंग जैसी धीमी सुविधाओं को बंद करके टीसीपीडीएफ प्रदर्शनों को ट्यून किया जा सकता है। गैर-यूटीएफ 8 मोड में केवल कोर फोंट (जैसे हेल्वेटिका, टाइम्स, ...) का उपयोग करके आप अच्छे प्रदर्शन प्राप्त कर सकते हैं। इसके अतिरिक्त आप PHP प्रदर्शन को बढ़ावा देने के लिए अपने सर्वर पर XCache इंस्टॉल कर सकते हैं। अधिक जानकारी के लिए आधिकारिक http://www.tcpdf.org वेबसाइट और फ़ोरम देखें।

4

यहां एक मीठा समाधान है, मेरे लिए 2 मिनट बचाता है। पीडीएफ 3 सेकंड में बनाए जाते हैं!

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

बदलें

$font = $this->_getTrueTypeFontSubset($font, $subsetchars); 
इस के साथ

:

/ 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

के बाद से संस्करण 5.9.067 TCPDF प्रदर्शन काफी सुधार किया गया। प्रत्येक नई रिलीज बेहतर प्रदर्शन कर रही है। साथ ही आप इसे सेट प्रदर्शन को बढ़ावा देने के कर सकते हैं के रूप में http://www.tcpdf.org/performances.php

2

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

में विस्तार से बताया डिफ़ॉल्ट TCPDF तक फॉन्ट subsetting सक्षम एम्बेडेड यूनिकोड TTF फोंट के आकार को कम करने के लिए, इस प्रक्रिया को, कि बहुत धीमी है और का एक बहुत आवश्यकता है स्मृति, setFontSubsetting (झूठी) विधि का उपयोग कर बंद कर दिया जा सकता है;

यह मेरे लिए असली समाधान था।

संबंधित मुद्दे