1

我有一个 PHP 脚本,它在对象元素内显示 PDF。Adobe Reader 插件可以很好地处理这个问题,用户可以使用 Adob​​e 工具栏打印嵌入的 PDF。但是,一些用户坚持使用“文件”菜单(98% 的用户使用 Internet Explorer 8)来打印 HTML 文档。利用 IE 中的这个 File->Print 菜单,可以打印出没有 OBJECT 元素的内容 (PDF) 的HTML 文档。(打印预览)使用此方法在 Chrome 或 FF 中打印文档只会打印对象视口中当前显示的数据。也就是说,一个部分对象而不是实际的 PDF。

我在 StackOverflow 上搜索并阅读了一些 相关 问题,但没有针对这种情况或案例的具体问题。其中一些“解决方案”使用 Javascript 方法或函数通过按钮或链接打印内容。如果我不能让我的用户使用浏览器中的 Adob​​e 工具栏来打印 PDF,我怀疑他们会改变主意使用“打印”按钮。

为什么IE中的File->Print方法会出现空白页?有没有办法让浏览器在使用 File->Print 菜单时打印 Object 元素的内容。没有 JS hack、按钮、“单击此处”的链接、iframe 或“内联显示”的建议等。

作为参考,此“查看 PDF”的代码如下(同样,它可以很好地在对象元素中显示 PDF 内容;没有问题)。

echo "
<html>
 <head>
  <title>View PDF</title>
 </head>
 <body scroll='no'>
  <object data='getFile.php?f={$file_hash}' type='application/pdf' width='100%' height='100%' >
  <h2>Error: No PDF plugin</h2>
  <p>The browser does not have a PDF viewer installed.  In order to view the PDF in the browser, please <a href='http://get.adobe.com/reader'>download Adobe Reader</a>. </p>
  </object>
 </body>
</html>";
4

2 回答 2

1

据我所知,这个问题没有解决方案。我已经看到一些开发人员通过生成 PDF 文件来“解决”问题,该文件在打开时会自动显示打印对话框

另一种选择是在删除工具栏和菜单的新窗口中显示 PDF 文件,以避免视觉模糊。

Window.open(url, "_blank", "location=0,menubar=0,toolbar=0");

我不知道这是否有效,但您可以尝试检测浏览器打印事件,然后调用pdfDoc.printAll();您的 Acrobat Reader 对象。

于 2012-10-10T19:03:55.043 回答
0

只打开 PDF - 没有 HTML 和对象。然后文件->打印将始终有效。

当然,如果 PDF 显示在浏览器中或在新的阅读器窗口中打开,则更多地取决于浏览器/阅读器配置

于 2012-10-10T19:43:36.420 回答