【问题标题】:Printing PDF file, with print dialog, without file preview打印 PDF 文件,带打印对话框,不带文件预览
【发布时间】:2014-02-17 17:55:47
【问题描述】:

我今天有一个任务,从 *.odt 文件中生成 *.pdf,然后让打印尽可能方便用户。

到目前为止,我设法将pdf发送给用户,让他将其保存为文件,然后他可以自己打印。我也可以在浏览器中打开pdf。

但我想问有没有办法在不弹出窗口的情况下打印它?

想问是否有可能至少显示打印/取消窗口而不向查看者的眼睛打开实际的 pdf?

header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');

是的,我已经阅读了一些类似的问题。他们中的大多数人都在谈论一些命名操作(应该由 Acrobat Pro(?) 添加),将一些 javascript 放入 pdf 文件中,这花了我一个小时到谷歌,没有任何运气如何使用 php/ javascript 如果它甚至可能的话,以及其他一些涉及 Fpdf 的解决方案 - 但我需要将我的 pdf 转换为 odt 文件,我认为这在 fpdf 中是不可能的。

任何帮助或提示表示赞赏。

PS。我当然想在客户端打印它。

编辑
我尝试了一些嵌入或 iframe 解决方案,但我在 firefox 中遇到错误,说没有足够的授权或其他什么。将尝试在此 PC 上重现该问题,因此我可以提供更多详细信息。

【问题讨论】:

  • 一个想法可能是将您的 pdf 内容加载到一个小型 iFrame 中,该 iFrame 也具有 JavaScript 中的打印代码。加载后,它将弹出打印对话框供用户继续操作。
  • 嗯,这个想法很好,但是大多数解决方案在其中一个主要浏览器中都有一些问题,或者解释得不好。这就是为什么我在这里问这个问题:P

标签: javascript php pdf


【解决方案1】:

我认为不可能绕过浏览器打印对话框并将打印件直接发送到打印机

【讨论】:

  • 好吧,那会划掉我的第一个问题。第二个呢?打印对话框而不向用户显示pdf? (他“知道”他选择打印什么)
  • 您可以在高度和宽度为 0% 的 iframe 中打开 PDF,然后按以下方式触发打印:stackoverflow.com/questions/16239513/… 但并非在每个浏览器中都有效。如果您想支持所有浏览器,还可以查看flexpaper.devaldi.com 或 PDFJS
【解决方案2】:

您可以使用我们的(商业)PDF API 来完成,正如我们记录的 in this blog article。你仍然会得到一个对话框,并且你需要使用一个 Applet(所以实际上你可能会在它第一次运行时得到大约六个对话框)。

这种方法的优点是最终用户不必安装 Acrobat,而且小程序不必对查看者可见。缺点是您需要购买我们的软件,而且它是一个小程序——这意味着它会在第一次运行时一次性下载大约 1MB 和一些安全对话框。

由于浏览器安全级别的提高,您可能在其他地方看到的“使用参数调用 Acrobat”方法现在不太可能奏效。另一种可能有效的方法是,如果您知道 Acrobat Reader 已安装并设置为作为浏览器插件运行,那么您可能能够在 PDF 上运行触发打印的打开操作。当然,您需要一个 PDF API 来修改 PDF 来执行此操作。或者,如果浏览器可以原生显示 PDF,那么 Flexpaper 的答案是一个很好的答案。

干杯...迈克(CTO @ BFO)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多