打印PDF在iTextSharp中创建,然后将控制权返回到浏览器

时间:2015-12-04 17:27:26

标签: javascript c# internet-explorer itextsharp

这有点回到了我2012年的问题 - Is it possible to fire a keypress event for an iframe that has been used to load a PDF file,我想我可能错误地接受了答案。

目前的情况是这样的 -

  • 主页的document附加了onkeypress事件,当用户扫描特定条形码时,该事件会将PDF加载到对象中。
  • PDF是使用iTextSharp创建的,并且具有开放式操作集 - writer.SetOpenAction(new PdfAction(PdfAction.PRINTDIALOG))writerPdfWriter)。

因此,用户将扫描条形码,该条形码自动加载PDF文件,打开其打印对话框。然后,用户将选择打印机并打印PDF。当用户想要扫描他们需要在html体内某处(但在PDF对象之外)点击的下一个单元并且然后扫描条形码以获取要加载的新PDF时,就会出现问题。 / p>

我查看了this,看到可以在PDF插件和浏览器之间建立某种通信,但是可以告诉插件将控制权交给浏览器/ javascript

修改  一些额外的背景信息 -

  • 我尝试过使用对象和iframe。
  • 使用调试器,如果我键入document.activeElement.id,则为元素的ID提供适当的元素(但在文本输入的情况下),不会显示任何按键。
  • 使用调试器我可以使用模糊活动元素将焦点带到另一个元素甚至更改输入的值,但当用户键入/扫描时,HTML / javascript不会看到用户输入。
  • 这是一个在Internet Explorer兼容模式下运行的旧应用程序。

总结一下 - 我想要扫描一个条形码,它会打开一个PDF(已经完成),自动打开它的打印对话框(已经完成),用户打印PDF,然后不再与页面进行任何人工交互(即用户在单击打印对话框中的打印按钮后不需要使用鼠标或键盘)用户应该能够扫描另一个条形码,这将打开一个新的PDF。

1 个答案:

答案 0 :(得分:1)

为什么不利用现代HTML5和Mozilla的辛勤工作并使用https://github.com/mozilla/pdf.js/渲染它,而不是在iframe / object中渲染PDF,它是一个完全HTML5 / javascript PDF渲染器,并且不需要任何插件。

http://mozilla.github.io/pdf.js/web/viewer.html

有一个不错的在线演示

然后,您将与JavaScript一直处于同一页面,并且可以避免在两个环境之间传递焦点/事件等,因此您可以轻松地在页面上的任何位置捕获事件。