0

我已经编写了使用 PHP 中的 mdf 库打印报告的代码,如下所示:

include("..\mpdf\mpdf.php");
$mpdf=new mPDF('','A4');
$mpdf->WriteHTML($a);
$mpdf->SetJS('this.print();');
$mpdf->Output();
exit;

当我使用这个应用程序时,一切都很好。我直接得到打印对话框,也没有 PHP 警告。但是当在 PHPDesktop 下执行相同的应用程序时,它会显示 pdf 保存对话框而不是显示打印对话框,并且还会显示警告:

session_start():无法发送会话缓存限制器 - 标头已发送

虽然我已经在每个 php 页面的顶部使用了以下代码:

OB_START();
if(session_status()!=PHP_SESSION_ACTIVE ||  session_status() == PHP_SESSION_NONE)
    session_start();

我也想在 PHPDesktop 中打开打印对话框。请提供一些解决方案。

更新

我已经从 Github 下载了 phpdesktop-chrome-57.0-rc-php-7.1.3。另外,我已经从 Github下载了 php_printer.dll 。版本是php_printer-php5.6.30 我已将 dll 放在每个可能的文件夹中,并将其作为扩展添加到 PHPDesktop 项目目录的 php.ini 文件中。现在,它尝试显示预览,但显示:“加载 PDF 文档失败”

4

1 回答 1

0

任何早期输出都会导致标题错误。要查找的内容是在您的标头调用或实际输出之前发生的回声,无论是 html 还是只是空白。如果显示错误和警告也会把事情搞砸。

这听起来像你display_errors在你的ini中打开了。

在你的ini中关闭display_errors,否则警告和通知会搞砸你的标题。

为获得最佳错误记录体验,请设置error_reporting-1display_errors关闭并设置自定义error_log. 然后在您的终端中,输入tail -f /path/to/error_log. 您的通知、警告和错误现在将实时滚动过去,而不会扭曲您网页的显示。

一旦没有出现警告或通知,标头将被正确发送,您的应用程序应该像往常一样工作。

于 2018-07-18T14:43:55.113 回答