使用pdf.js打印PDF

时间:2013-01-18 15:20:21

标签: javascript pdf printing pdf.js

我使用pdf.js在页面中嵌入单页PDF,我希望能够只打印PDF,而不是整个HTML页面。

这可能吗?

3 个答案:

答案 0 :(得分:3)

我之前使用pdf.js将pdf文档加载到画布上

画布只包含一页。所以这对我来说只适用于一个页面:

  var canvas = document.getElementById('pdfPage');
  var win = window.open('', '', '');
  var html = "<img src='" + canvas.toDataURL() + "'>";
  win.document.write(html);
  win.document.close();
  win.focus();
  win.print();
  win.close();

我仍然需要找出多个页面需要什么。如果我这样做,我会编辑这个答案。

我不得不说这种方法不是最佳方法,因为它不会打印pdf页面“相机就绪”或换句话说是原始形式。它打印pdf页面的图像。区别在于不应该存在的边距和不应该存在的页眉/页脚,因为它们不在原始文档中。因此,我将寻找一种方法来打印它,就像pdf.js查看器一样打印它 - 它的原始形式与原始文档的保真度。

答案 1 :(得分:2)

我们可以将以下代码放在 viewer.js 文件的末尾,该文件将自动打印pdf:

(function () {
    function printWhenReady() {
        try{
            if (PDFViewerApplication.initialized) {
                window.print();
            }
            else {
                window.setTimeout(printWhenReady, 3000);
            }
        }catch(ex){
            window.setTimeout(printWhenReady, 3000);
        }
    };

    printWhenReady();
})();

答案 2 :(得分:0)

我终于解决了。

我不能在这里发布我的代码,但这就是我所做的:

我将PDF渲染到2幅画布上,一张用于缩略图,一张用于打印(隐藏)。然后我有了一个打印按钮,打开一个新窗口,其中包含img标签,其中包含使用toImageURL()的大画布的内容。在新窗口中调用print()函数,然后close()在打印后自动关闭它。

这导致了PDF的几乎全尺寸打印,尽管浏览器通常有页面号和日期戳。