我正在尝试将打印功能添加到嵌入在使用PDF.js库的网页中的多页 PDF中。这是有问题的,因为我只有一个页面在用户正在查看它时呈现,并且页面实际上呈现为画布元素中的图像。
This question在这种情况下无效,因为它适用于单页PDF,可以接受打印画布的当前内容。与this question相同。我还想避免在另一个选项卡/窗口中打开PDF并告诉用户自己打印,这会将其嵌入到页面中。
通过Mozilla的文档,我没有找到任何只打印PDF的本机函数,但是,我将开始使用renderingIntent
,它似乎可以设置为'print'
编辑:
redingIntent
似乎不会影响任何内容,并且PDF静止图像呈现为“显示”或“打印”的方式相同。
答案 0 :(得分:1)
记住PDF.js只是另一个网页。 ATM,至少不在标准HTML5 API中,网页无法直接将随机信息推送到打印机(但您可以将其推送到云打印服务) - 您只能打印“看到”的内容。 “请参阅”表示DOM中的内容,当前CSS可用于隐藏屏幕或打印机的信息。 DOM也可以更改beforeprint / afterprint事件。
在您的情况下,由于嵌入式PDF视图,您需要伪造DOM以在主网页上显示所有PDF页面/画布,使其可见以进行打印并隐藏屏幕(参见例如[4])。很少有不同的问题需要解决,这可能是偏离主题的:删除边距和非光栅化画布。 Firefox正在处理那些通过moznomarginboxes [1]和mozPrintCallback [2] - 两者都是为了支持PDF.js而创建的,不受其他浏览器的支持。 (另见后者的polyfill [3])