PHP

2012-12-24 48 views
6

का उपयोग करके MySQL से विशाल डेटा लेते हुए पीडीएफ फाइल बनाएं, मैं एक पीडीएफ फ़ाइल बनाना चाहता हूं जिसमें 12 महीने के डेटा जैसे विशाल डेटा होंगे। प्रत्येक महीने में MySQL तालिका से 500 पंक्तियां होती हैं। मैंने एफपीडीएफ के साथ प्रयास किया है लेकिन इसमें बहुत अधिक समय लगता है जो अस्वीकार्य है। यदि कोई अन्य बेहतर PHP लाइब्रेरी या क्लास आसानी से बनाने के लिए है और सिस्टम को व्यस्त नहीं बनाता है?PHP

यदि कोई ऐसी स्क्रिप्ट है जो एक महीने तक एक महीने में 12 महीने का डेटा लेती है और इसे पीडीएफ में एक-एक करके लिखती है और आखिर में पीडीएफ फाइल बनाते हैं?

+0

क्या आप पीडीएफ से एचटीएमएल की तरह कुछ चाहते हैं? –

+0

क्या पुराना डेटा (यानी पिछले महीनों में) बिल्कुल बदल जाएगा? यदि नहीं, तो आप 'पिछले-महीने.pdf' की फ़ाइल प्रतिलिपि रख सकते हैं और केवल वर्तमान माह को पुन: उत्पन्न कर सकते हैं। फिर उपयोगकर्ता को सेवा करते समय, दो पीडीएफ फाइलों को मर्ज करें - जो शायद तेज हो जाएगा। – halfer

+1

वैकल्पिक रूप से, जब कोई उपयोगकर्ता एक लंबी पीडीएफ रिपोर्ट डाउनलोड करना चाहता है, तो तालिका में आवश्यकता को कतार दें और क्रॉन-जॉब पीढ़ी के साथ ईमेल भेजने के लिए उन्हें ईमेल करें। – halfer

उत्तर

1

पीडीएफ बनाना हमेशा बहुत लंबा होता है। यदि आपके पास संसाधनों की एक बड़ी मात्रा है, तो यह बहुत लंबा होगा, आप इससे बच नहीं सकते हैं। मैं इसे अपने उपयोगकर्ताओं के लिए नरम करने का एक तरीका देख सकता हूं:

उन्हें एक HTML रेंडर भेजना, और फिर अजाक्स के साथ पीडीएफ पीढ़ी को असीमित बनाते हैं। तो आप एक स्टेटस बार प्रदर्शित कर सकते हैं। और अपने उपयोगकर्ताओं को सूचित करें कि आप उनकी मांग कर रहे हैं।

  • fpdf का उपयोग कर और हार्ड कोडिंग स्वभाव
  • अपने html एक pdf फ़ाइल प्रस्तुत करना
  • एक बनाने बनाने के लिए dom2pdf या इस तरह के एक पुस्तकालय का उपयोग कर:

    तब पीढ़ी technicaly तीन तरीकों से किया जा सकता है लेटेक्स स्ट्रिंग और फिर proc_open का उपयोग करके लेटेक्स कंपिलेटर को पीडीएफ फ़ाइल बनाने के लिए कहने के लिए। यह वास्तव में तेज़ और भरोसेमंद टूल है, लेकिन इसके लिए आपको एक समर्पित सर्वर होना चाहिए, साझा साझा होस्ट नहीं।

1
// you can used fpdf like this. 
<?php 
require('fpdf.php'); 

class PDF extends FPDF 
{ 
    // Page header 
    function Header() 
    { 
    // Logo 
    $this->Image('logo.png',10,6,30); 
    // Arial bold 15 
    $this->SetFont('Arial','B',15); 
    // Move to the right 
    $this->Cell(80); 
    // Title 
    $this->Cell(30,10,'Title',1,0,'C'); 
    // Line break 
    $this->Ln(20); 
    } 

    // Page footer 
function Footer() 
{ 
    // Position at 1.5 cm from bottom 
    $this->SetY(-15); 
    // Arial italic 8 
    $this->SetFont('Arial','I',8); 
    // Page number 
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); 
} 
} 

// Instanciation of inherited class 
$pdf = new PDF(); 
$pdf->AliasNbPages(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','',12); 
for($i=1;$i<=40;$i++) 
$pdf->Cell(0,10,'Printing line number '.$i,0,1); 
$pdf->Output(); 
?> 
2

मैं नियमित रूप से उपयोग कर PHP से बहुत बड़ी पीडीएफ़ बनाने के (आमतौर पर) एक ही विधि। सबसे पहले मैं दस्तावेज़ का एक वेब पेज संस्करण बना देता हूं और फ़ाइल को आउटपुट करता हूं। फिर मैं wkhtmltopdf के माध्यम से फ़ाइल चलाता हूं। मैंने किसी भी अन्य की तुलना में इस विधि के साथ लगातार अधिक सफलता प्राप्त की है। एचटीएमएल उत्पन्न करने के लिए जल्दी होना चाहिए और wkhtmltopdf आश्चर्यजनक रूप से तेज़ और कुशल है। इसके अलावा आप विस्तृत स्वरूपण के लिए CSS3 तकनीकों का उपयोग कर सकते हैं।

बहुत बड़े पीडीएफ के लिए मैंने छोटे से भी उत्पन्न किए हैं और फिर उन्हें पीडीएफफ़ेल्ड के साथ विलय कर दिया है। यह आपको बुकमार्क जोड़ने का विकल्प भी देता है।

+0

आपके मूल्यवान सुझाव के लिए धन्यवाद। यदि संभव हो तो कृपया एक डेमो लिंक दें? – Nantu