25

我有一个嵌入 PDF 的网页。我的代码如下所示:

<embed
    type="application/pdf"
    src="path_to_pdf_document.pdf"
    id="pdfDocument"
    width="100%"
    height="100%">
</embed>

我有这个用于打印我的 PDF 的 javascript 代码:

function printDocument(documentId) {

    //Wait until PDF is ready to print    
    if (typeof document.getElementById(documentId).print == 'undefined') {

        setTimeout(function(){printDocument(documentId);}, 1000);

    } else {

        var x = document.getElementById(documentId);
        x.print();
    }
}

执行此代码时,Acrobat 插件会打开众所周知的打印对话框。像这样的东西:

打印对话框

两个问题:

  • 如何改进检测 PDF 已加载并准备好打印的方法?
  • 如何避免显示打印对话框?

关于我的系统的更多信息:

操作系统: Windows XP

浏览器: Internet Explorer 7

PDF 插件: Acrobat Reader 9

4

4 回答 4

19

您将无法使用普通的旧 JavaScript 静默打印。您希望您的打印机如何开始打印 100000000 页全黑。不是什么好事。如果您想静默打印并使其仅适用于 Internet Explorer,则可以使用 ActiveX 控件。这需要为您的页面和您的用户提供更高的安全设置才能真正信任您的网站。

于 2009-06-10T14:06:57.677 回答
4

这在受信任的 Intranet 环境中是可能的。

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
        <param name="SRC" value="yourdoc.pdf" />
    </object>

<input type="button" ... onclick="pdfDoc.printAll();" />

这将绕过打印对话框并直接发送到默认打印机。

于 2011-03-23T19:11:08.000 回答
1

我想知道您是否真的需要在打印前等待——打印作业不会为您处理吗?我真的希望没有任何现代浏览器允许您(或任何网站)在没有确认对话框的情况下进行打印(很久以前,一些旧浏览器曾经这样做过)。

于 2009-06-10T13:45:36.550 回答
1

您可以在 Firefox 中通过更改about:config. 添加print.always_print_silent并将其设置为true.

于 2010-12-01T20:03:07.097 回答