PHP库mPDF阻止打开打印窗口

问题描述

我正在使用一个根据项目的位置(条形码看起来像L001-01-01)打印条形码的系统。在表格中,您可以选择顶层位置,货架和托架(条形码中的数字按相应顺序排列)。提交表单后,我需要做两件事:

  1. 创建PDF,将数字形式的数据转换为条形码形式,并以正确的条形码字体显示

  2. 在包含<iframe>页面上打开,然后自动打开刚刚创建的PDF的打印窗口。

这是一些代码的样子:

<!-- this creates the auto print function that executes onload of the iframe -->
<script type="text/javascript">
    function barcode_print(){
        document.getElementById('iframe').contentwindow.print();
    }
</script>

<?PHP
    //check if form was submitted
    if(isset($_POST['TLL']) and $_POST['TLL'] != null){
        require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins/wp-mpdf/mpdf/mpdf.PHP'; //include PHP library
        $mpdf = new \mPDF('utf-8',array(90,29)); //creates PDF
                    $mpdf->autopageBreak = false;
                    $mpdf->WriteHTML($stylesheet,1); //sets stylesheet (not shown in this code)
                    $mpdf->use_kwt = true;
                    ob_clean();
                    flush();
                    header("Content-type:application/pdf");
                    $mpdf->WriteHTML("
                            <h4>*L" . sprintf("%03d",$_POST['TLL']) . "-" . sprintf("%02d",$_POST['shelf']) . "-" . sprintf("%02d",$_POST['bay']) . "*</h4>
                    ",2);
                    

                    $mpdf->Output("sampleURL/location_tags/L" . sprintf("%03d",$_POST['bay']) . "-" . $_POST['user'] . ".pdf",'F');
                    $link = "sampleURL/location_tags/L" . sprintf("%03d",$_POST['bay']) . "-" . $_POST['user'] . ".pdf";
                    echo "<iframe id='iframe' src='" . $link . "' onload='barcode_print()'></iframe>";
                    $mpdf->Output("L" . sprintf("%03d",'D');
    }
?>

这是此操作的简要介绍:提交表单后,我使用mPDF库创建了PDF,其中包含来自表单的信息,格式正确,可以通过条形码扫描仪进行打印和扫描。 if语句的最后四行在这里真正重要:

$mpdf->Output("sampleURL/location_tags/L" . sprintf("%03d",'F');

上面的行将PDF输出到Web服务器上的文件。然后,我可以在其他页面上使用该URL来打印相同的条形码。

$link = "sampleURL/location_tags/L" . sprintf("%03d",$_POST['bay']) . "-" . $_POST['user'] . ".pdf";
echo "<iframe id='iframe' src='" . $link . "' onload='barcode_print()'></iframe>";

以上两行使用的是刚刚保存PDF的URL,然后回显iframe。加载后,将调用javascript函数,以打开打印对话框。

$mpdf->Output("L" . sprintf("%03d",'D');

最后,将下载相同的PDF文件。这是一种创可贴的解决方法,因为mPDF库会在文件输出后立即尝试打开该文件(我不希望这样做)。通过下载PDF,它也不会尝试打开保存到服务器的文件。即使浏览该库的文档,我也找不到找到输出文件方法,并且在同一浏览器选项卡中打开文件

我知道此代码可以单独工作-PDF正确创建。如果我在另一个网页上调用iframe代码来打印已经存在的PDF,它也可以按需运行,但是我需要在提交表单后立即在同一页面上创建和打印PDF。问题似乎是,一旦输出PDF,PHP就会停止运行,并且不会回显iframe。任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)