2010-07-20 74 views
3

我試圖使打印到PDF中的即時使用PHP PDF生成,但到目前爲止我有一個問題,我想作爲生成的網頁PDF具有使用畫布通過flot生成的條形圖。如何使用PHP與canvas元素

有沒有人有經驗,用這個或不知道如何讓帆布打印到PDF?

我也開到的僅僅擁有我的客戶裝載有使用CSS樣式分頁符由(打印)頁面打破了報告的每個圖的頁面,並使用內置的打印到PDF打印機的想法。

+0

你測試哪個PDF打印機?我對TCPDF有一些非常好的經驗。 – 2ndkauboy 2010-07-20 19:17:52

+0

到目前爲止,我已經能夠使用任何默認的pdf打印機安裝在Windows XP機器上打印整個網頁。我會看看你的建議,並在今晚進行測試。 謝謝。 – Kprice 2010-07-20 21:08:18

回答

-4

我從來沒有用過<canvas>嘗試創建/打印PDF。我會用<canvas>,因爲它不是在所有的瀏覽器都支持建議。然而,在畫布中有一個函數叫做:toDataURL(),它可以將畫布顯示的內容轉換爲可以用來保存/打印的圖像,但它將以圖像格式而不是pdf格式顯示。

我會建議使用一個PHP庫來創建一個PDF,然後顯示給用戶。我個人使用FPDF,但這裏只是少數人的名單:

http://www.fpdf.org/

http://www.tcpdf.org/

http://www.php.net/manual/en/book.pdf.php

1
//Here is the way to generate html into canvas into PDF 

1 add can js files 
jquery.js 
JS/html2canvas.js 
JS/jquery.plugin.html2canvas.js 

2.get the html content to convert into canvas 
     $('.hideDivs').hide(); 
     $('.formdrop').hide(); 
     $('.block').html2canvas({ 
      onrendered: function (canvas) { 
       //Set hidden field's value to image data (base-64 string) 
       $('#img_val').val(canvas.toDataURL("image/jpg")); 
       $('#img_val3').val($('.block').html()); //html of div 
       //Submit the form manualy 

      } 
     }); 

3. PHP back end with TC PDF 
if(isset($_REQUEST['img_val'])): 
     //Get the base-64 string from data 
     $filteredData=substr($_POST['img_val'], strpos($_POST['img_val'], ",")+1); 
     //Decode the string 
     $unencodedData=base64_decode($filteredData); 
     //Save the image 
     $imgfile=FCPATH.'images/submsnimage_'.$this->session->userdata('admin_id').'.jpg'; 
     $imagegerated=file_put_contents($imgfile, $unencodedData); 
     chmod($imgfile, 0777); 
     $pdfImageFile=site_url()."images/submsnimage_".$this->session->userdata('admin_id').'.jpg'; 
endif; 

4 PDF generation 
     ini_set('max_execution_time',300); 
     require_once (FCPATH.'tcpdf/config/lang/eng.php'); 
     require_once (FCPATH.'tcpdf/tcpdf.php'); 
     $exa = new TCPDF(); 
     $exa->SetCreator (PDF_CREATOR); 
     $exa->SetAuthor ('Clay County Admin'); 
     $exa->SetTitle ('Clay County Form'); 
     $exa->SetSubject ('Example of TCPDF'); 
     $exa->SetKeywords ('TCPDF, PDF, PHP'); 
     $exa->SetFont ('times', '', 18); 
     $exa->AddPage(); 
     $exa->Image ($pdfImageFile, 15, 10, 430,630); 
     $exa->AddPage(); 
     $exa->Image ($pdfImageFile2, 15, 10, 430,630); 
     $exa->AddPage(); 
     $exa->Image ($pdfImageFile3, 15, 10, 430,630); 

     $exa->setImageScale(PDF_IMAGE_SCALE_RATIO); 
     $exa->setJPEGQuality (100); 
     $root=site_url(); 
     $exa->setImageScale(1.53); 

     $txt =""; 
     $exa->WriteHTML ($txt, true, false, true, false, ''); 
     $exa->Output (FCPATH.'uploads/pdf/clayCommunityBullyReport.pdf', 'F'); // downloads the pdf