PDF.js 如何打印多页 PDF?

5
我正在尝试向内嵌在网页中并使用PDF.js库的“多页”PDF添加打印功能。这很棘手,因为用户查看页面时每次只有一页呈现,并且页面实际上是在画布元素中以图像形式呈现的。
由于单页PDF仅需要打印画布的当前内容,所以此问题对此无济于事。与此问题相同。我还想避免仅仅在另一个标签/窗口中打开PDF并告诉用户自行打印,这将使嵌入到页面中的目的失去意义。
查阅Mozilla文档后,我没有找到任何本地功能可以直接打印PDF,但我会开始尝试使用renderingIntent进行实验,似乎可以将其设置为“print”。
编辑:redingIntent似乎没有影响任何内容,PDF呈现方式无论设置为“display”还是“print”都没变化。
1个回答

1
请记住,PDF.js只是另一个网页。目前至少在标准HTML5 API中,没有办法让网页直接向打印机推送随机信息(但您可以将其推送到云打印服务)——您只能打印您“看到”的内容。 “看到”意味着DOM中的内容,目前可以使用CSS来隐藏屏幕或打印机上的信息。 DOM还可以通过beforeprint / afterprint事件进行更改。
在您的情况下,由于您的PDF视图是嵌入式的,因此您需要伪造DOM以在主网页上拥有所有PDF页面/画布,使它们可见以进行打印,并在屏幕上隐藏(例如,请参见[4])。还需要解决一些不同的问题,这可能与本文无关:删除边距和非光栅化画布。 Firefox正在通过moznomarginboxes [1]和mozPrintCallback [2]来处理这些问题——两者都是为支持PDF.js而创建的,并不受其他浏览器支持。(还请参见后者的polyfill [3])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接