Как напечатать в pdf используя php с элементом canvas - PullRequest
3 голосов
/ 20 июля 2010

Я пытаюсь создать генератор PDF «на лету» с использованием PHP, но у меня пока одна проблема в том, что страницы, которые я пытаюсь сгенерировать как PDF, имеют гистограмму, сгенерированную с помощью flot холст.

Кто-нибудь имеет опыт работы с этим или знает, как заставить canvas печатать в формате pdf?

Я также открыт для идеи просто заставить моего клиента загрузить страницу, на которой каждый график отчета разбит на (печать) страницы, используя CSS для стилизации разрывов страниц и использовать встроенный принтер для печати в PDF.

Ответы [ 2 ]

1 голос
/ 21 апреля 2016
//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
0 голосов
/ 26 августа 2011

Я никогда не использовал <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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...