微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在php中使用dompdf和chart.js库将动态图表导出为pdf?

如何解决如何在php中使用dompdf和chart.js库将动态图表导出为pdf?

我使用chart.js库创建了图表,使用PHP MysqL创建了动态数据。

下面是我从数据库获取数据的PHP代码

<?PHP  
    $con =   new MysqLi('localhost','root','','pdf_test') or die("connection Failed");
    $result = MysqLi_query($con,"SELECT designation,count(*) as total FROM tbl_employee GROUP BY designation");
    $result_array=[];
    foreach($result as $row) {
        $item_array = array(
            'designation'   =>  $row['designation'],'total'         =>  $row['total'],'color'         =>  '#'.rand(100000,999999).''
        );
        array_push($result_array,$item_array);
    }
?> 

下面是我的HTML代码显示图表和导出按钮

<div class="container" id="designationWiseGraph">  
    <div class="panel panel-default">
        <div class="panel-body" align="center">
            <div class="row">
                <canvas id="pie_chart"></canvas>
            </div>
        </div>
    </div>
</div>
<br/>
<div align="center">
    <form method="post" id="generateDesignationPdf" action="create_pdf.PHP">
        <input type="hidden" name="hidden_html" id="hidden_html" />
        <button type="button" name="create_pdf" id="exportDesignation" class="btn btn-primary btn-xs">Export to PDF</button>
    </form>
</div>

下面是生成图形的javascript代码

<script>
    $(document).ready(function(){
        $('#exportDesignation').click(function(){
            $('#hidden_html').val($('#designationWiseGraph').html());
            $('#generateDesignationPdf').submit();
        });
     });

    var data = <?PHP echo json_encode($result_array); ?>;
    var designation = [];
    var total = [];
    var color =[];

    for(var i in data) {
        designation.push(data[i].designation);
        total.push(data[i].total);
        color.push(data[i].color);
    }
    var chart_data = {
        labels:designation,datasets:[
            {
                label:'Designation',backgroundColor:color,color:'#fff',data:total
            }
        ]
    };
    var chart = $('#pie_chart');
    var graph1 = new Chart(chart,{
        type:"pie",data:chart_data
    });
</script>

下面是我的 create_pdf.PHP 代码

<?PHP
    require_once 'vendor/autoload.PHP';

    use Dompdf\Dompdf;

    class Pdf extends Dompdf {
        public function __construct(){
            parent::__construct();
        }
    }

    if(isset($_POST["hidden_html"]) && $_POST["hidden_html"] != ''){
        $file_name = time().'_pdf_chart.pdf';
        $html = '<link rel="stylesheet" href="bootstrap.min.css">';
        $html .= $_POST["hidden_html"];

        $pdf = new Pdf();
        $pdf->load_html($html);
        $pdf->render();
        $pdf->stream($file_name,array("Attachment" => false));
    }

?>

正在生成 PDF 文件,但图表正在以 pdf 文件格式导出。

关于使用 dompdf 库或 tcpdf 库将图表导出为 pdf 的任何建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。