我正在尝试使用PHP制作动态PDF生成器,但到目前为止我遇到了一个问题,即我尝试生成PDF的页面有一个由flot生成的条形图使用帆布。
有没有人有这方面的经验或知道如何将画布打印到pdf?
我也很乐意让我的客户端加载一个页面,该页面将报表的每个图表都打破(打印)页面,使用CSS来设置分页符并使用内置的Print to PDF打印机。
答案 0 :(得分: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
答案 1 :(得分:-4)
我从未使用<canvas>
来尝试创建/打印pdf。我建议使用<canvas>
NOT ,因为并非所有浏览器都支持此功能。但是在画布中有一个名为toDataURL()
的函数,它会将画布显示的内容转换为可以用来保存/打印的图像,但是它将采用图像格式而不是pdf格式。
我建议使用php库创建一个pdf,然后将其显示给用户。我个人使用过FPDF,但这里有一些列表: