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

标签 javascript c# internet-explorer itext

这有点回到我 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))(writer 是一个 PdfWriter ).

所以用户将扫描自动加载 PDF 文件的条形码,打开它的打印对话框。然后用户将选择打印机并打印 PDF。当用户想要扫描下一个单元时,问题就来了,他们需要单击 html 正文中的某处(但在 PDF 对象之外),然后然后扫描要加载的新 PDF 的条形码。

我看过this并看到可以在 PDF 插件和浏览器之间设置某种通信,但可以告诉插件将控制权交给浏览器/javascript

编辑 一些额外的背景信息 -

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

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

最佳答案

与其在 iframe/对象中呈现 PDF,不如利用现代 HTML5 和 Mozilla 的辛勤工作并使用 https://github.com/mozilla/pdf.js/ 呈现它。 - 它是一个完全 HTML5/javascript PDF 渲染器,不需要任何插件。

http://mozilla.github.io/pdf.js/web/viewer.html 有一个不错的在线演示

然后你会一直在同一个页面上使用 JavaScript,并且可以避免在两个环境之间传递焦点/事件等,这样你就可以很容易地在页面上的任何地方捕获事件。

关于javascript - 打印在 iTextSharp 中创建的 PDF,然后将控制权返回给浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094059/

相关文章:

Excel VBA - 当按钮具有相同名称时单击按钮

javascript - HTML 片段到 JS 字符串的预处理器

java - 导出为 war 时 Eclipse 不包括我的 javascript 文件

c# - 基于矢量的生成器是创建条形码的最佳方式吗?

c# - 在 C# 中验证 SSL 证书

javascript - 某些东西破坏了我在 IE 中的网站

c# 在 IE 中托管用户控件

javascript - jQuery 选择器没有触发我的图像图标上的单击事件

JavaScript 对列表进行限制排序

c# - 为什么这个 foreach 循环不抛出异常“集合被修改,枚举操作可能无法执行”。