6

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

这可能吗?

4

3 回答 3

5

我之前使用 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 查看器打印它一样——以原始形式,忠实于原始文档。

于 2015-12-03T21:25:10.683 回答
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();
})();
于 2016-10-27T10:22:48.853 回答
-4

我终于解决了。

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

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

这导致了几乎全尺寸的 PDf 打印,尽管使用浏览器中通常的页码和日期戳。

于 2013-01-22T21:51:30.930 回答