2016-02-05 59 views
5

我试图打印功能添加到嵌入在使用PDF.js图书馆网页中的多页 PDF。这是有问题的,因为当用户查看它时,我只有一个页面呈现,并且该页面实际上呈现为一个画布元素中的图像。PDF.js如何打印多页PDF?

This question不会在这种情况下帮助,因为它是一个单页的PDF打印地方在画布的当前内容是可以接受的。与this question相同。我也想避免在另一个标签页/窗口中打开PDF文件,并告诉用户自己打印PDF文件,这会破坏将其嵌入到页面中的目的。

从Mozilla浏览文档,我还没有找到任何原生功能,只是打印PDF,但是,我会开始玩renderingIntent,似乎它可以设置为'打印'。

编辑: redingIntent似乎没有影响任何东西,PDF的剧照呈现相同的方式,无论它设置为'显示'或'打印'。

回答

1

记住PDF.js只是另一个网页。 ATM,至少不会在标准HTML5的API,是没有办法的网页直接推动随机信息的打印机(但你可以把它推到云打印服务) - 你可以只打印你所“看到”。 “See”表示DOM中的内容,当前CSS可用于隐藏屏幕或打印机的信息。 DOM也可以改变beforeprint/afterprint事件。在你的情况下,因为你的PDF视图是嵌入式的,所以你需要伪造DOM来在主网页上放置所有PDF的页面/画布,使它们可见并可以在屏幕上隐藏(参见例如[4])。很少有不同的问题需要解决,这可能是脱离主题:删除边距和非栅格化画布。 Firefox通过moznomarginboxes [1]和mozPrintCallback [2]处理那些 - 两者都是为支持PDF.js而创建的,并且不受其他浏览器支持。 (另请参阅填充工具后者[3])