程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF?

开发过程中遇到使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF的问题如何解决?下面主要结合日常开发的经验,给出你关于使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF的解决方法建议,希望对你解决使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF有所启发或帮助;

经过大量研究之后,我将把我在这里学到的东西发布给将来@R_90_9381@的人。

根据浏览器,浏览器版本,浏览器配置和操作系统,pdf的显示方式有所不同。有很多变量,所以在这里我将讨论最常见的情况。

  • 在所有浏览器上,我无法通过Java脚本调用任何形式的print()方法,而我只能使用pdfActions。OPENACTION将调用print。我使用iText将它们嵌入到pdf中。

  • Chrome使用Adobe的查看器,该查看器无法访问任何形式的print()方法,但会执行嵌入在pdf中的pdfAction。因此,您可以在任何查看那些动作的应用程序中打开“ OpenAction”到pdf中,并在每次打开pdf调用时进行打印。

  • firefox(一定版本之上,尽管是所有最新版本)使用windows中的Adobe查看器,该查看器也可以识别pdfAction。但是,在OSX中,它失去了对Adobe VIEwer的支持,并切换到firefox VIEwer(pdf.Js)中的烘焙版本。哪个不支持pdfActions。

  • IE:我并没有对IE进行太多测试。主要是因为在firefox在OSX上无法使用之后,我放弃了从JavaScript打印pdf(对我来说是一项要求)。

我的pdf是由我控制的服务器生成的,因此最终我在服务器中进行了服务更改,并添加了get PNG服务,该服务基于与pdf生成所使用的相同标记生成了PNG。浏览器处理的图像要比我知道的要好得多的pdf,但是希望我能够重新使用pdf生成服务,因为它已在我的代码的其他地方使用。

它没有回答问题,但它是我所拥有的全部信息。我对以后@R_90_9381@它的任何人的建议是:如果可能的话,放弃pdf并简化操作。否则,如果您知道如何在OSX的FF预览pdf查看器中通过JavaScript调用print(),请更新此问题。

解决方法

我正在将Base64编码的PDF作为字符串从服务器加载到我的JavaScript中。我的客户端应用程序正在使用AngularJS,HTML5。

我的HTML看起来像这样

<div id="printablePdfContainer">
  <iframe id="printablePdf" width="100%" height="100%"></iframe>
</div>

我的JavaScript如下所示:

var pdfName = 'data:application/pdf;base64,' + data[0].PrintImage;
var embeddedPdf = document.getElementById('printablePdf');
embeddedPdf.setAttribute('src',pdf@R_772_8313@;
$scope.printDocument(embeddedPdf);

我的printDocument函数如下所示:

$scope.printDocument = function() {
      var test = document.getElementById('printablePdf');
      if (typeof document.getElementById('printablePdf').print === 'undefined') {

        setTimeout(function(){$scope.printDocument();},1000);

      } else {

        var x = document.getElementById('printablePdf');
        x.print();
      }
    };

printDocument功能取自堆栈溢出中的一个预先存在的问题,这是打印嵌入式PDF的答案。但是,这似乎不再起作用。我总是对“不确定”

typeof document.getElementById('printablePdf').print === 'undefined'

检查。似乎.print不存在。

因此,我的问题是:如何在不打开弹出窗口的情况下使用JavaScript在HTML5中打印嵌入式PDF?

@H_618_68@@H_618_68@
@H_618_68@

大佬总结

以上是大佬教程为你收集整理的使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF全部内容,希望文章能够帮你解决使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。