2014-02-17 104 views
2

今天我收到了一个任务,用* .odt文件生成* .pdf,然后尽可能方便地进行打印。使用打印对话框打印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文件中,这让我花了一个小时的时间访问Google,但没有任何运气如何使用php /如果它甚至可能的话,还有一些涉及Fpdf的其他解决方案 - 但是我需要将我的PDF转换为odt文件,并且我认为这在fpdf中不可行。

任何帮助,或提示赞赏。

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

编辑
我尝试了一些嵌入或iframe解决方案,但我得到了一个错误,在Firefox,说一些关于不足够的授权或东西。将尝试在这台PC上重现问题,所以我可以提供更多细节。

+0

的想法可能有一个小的iFrame也有JavaScript中的打印代码加载你的PDF内容。一旦它被加载,它将弹出打印对话框让用户继续操作。 – NickOpris

+0

好吧,这个想法很好,但大多数解决方案在其中一个主要浏览器中有一些问题,或者被严重解释。这就是为什么我在这里问这个问题:P – Kedor

回答

1

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

+0

好吧,那会抛出我的第一个问题。第二个呢?打印对话框不向用户显示PDF?(他“知道”他选择打印什么) – Kedor

+1

您可以在0%高度和宽度的iframe中打开PDF,然后按以下方式触发打印: http://stackoverflow.com/questions/16239513/ print-pdf-directly-from-javascript 但它不适用于每个浏览器。如果您想要支持所有浏览器,您还可以查看http://flexpaper.devaldi.com或PDFJS –

0

您可以与我们的(商业)PDF API做到这一点,因为我们记录in this blog article。你仍然会得到一个对话框,你需要使用一个Applet(所以实际上你可能会在第一次运行时得到大约六个对话框)。

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

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

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