【发布时间】:2012-11-24 01:32:11
【问题描述】:
我知道有多种方法可以将 PDF 打印到与服务器位于同一网络的网络打印机,但这对我没有帮助,因为服务器是远程的。在我的情况下,用户单击“打印标签”的链接,然后生成并输出为他们格式化的 PDF 文件。我目前将文件输出“流式传输”到浏览器,以便 Adobe Reader 使用以下代码自动打开它:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-type: application/pdf");
header('Content-Disposition: attachment; filename="labels.pdf"');
readfile($ServerPathToFile);
我是否可以在此代码中添加其他内容来自动触发打印对话框打开,以便他们只需单击打印?在这种情况下,Google CloudPrint 不是一个选项,其他需要在用户端进行“特殊设置”的东西也不是一个选项......因为这将被各种用户使用。
【问题讨论】:
-
你不会在 PHP 中这样做,因为 PHP 只作用于服务器机器。你想做的事情发生在客户端机器上,所以你会使用类似 Javascript 的
window.print()。 -
@Steve - 这不起作用,因为 PDF 在 Adobe Reader(或任何用户的默认 PDF 软件)中打开...而不是在 Web 浏览器窗口中...
-
我完全知道 PDF 不会在浏览器窗口中打开。 “用户的默认PDF软件”安装在用户的计算机上。如果要打印,则必须通过用户的计算机访问打印对话框,这不能也不应该使用 PHP 来完成。如果您访问的所有网站都可以开始在您的计算机上运行东西怎么办?
-
@Steve - 这里的目标只是让 PDF 提示用户打印对话框。我正在寻找一种在提供文件时(通过服务器从服务器...而不是客户端通过 PHP 完成)设置某种标志以指示软件应该打印的方法。正如其他人已经建议的那样,它可以用 JavaScript 来完成......但如果有办法在原始文件输出中完成它而不是构建额外的 HTML......那显然是一个更优雅的解决方案。我正在寻找一个额外的标题,如果可能的话,我可以通过(在 PHP 中)。请尽量让您的帖子保持主题性和建设性。