图像未使用 jsPDF 在 PDF 上呈现?

Posted

技术标签:

【中文标题】图像未使用 jsPDF 在 PDF 上呈现?【英文标题】:Image not rendering on PDF using jsPDF? 【发布时间】:2015-06-29 16:42:01 【问题描述】:

我已包含以下文件:

<script type="text/javascript" src="libs/png_support/zlib.js"></script>
<script type="text/javascript" src="libs/png_support/png.js"></script>
<script type="text/javascript" src="jspdf.plugin.addimage.js"></script>
<script type="text/javascript" src="jspdf.plugin.png_support.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.standard_fonts_metrics.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.split_text_to_size.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.from_html.js"></script>
<script type="text/javascript" src="jspdf.js"></script>

我只是在测试它是否可以通过 html 渲染图像:

var doc = new jsPDF();
   var elementHandler = 
     '#ignorePDF': function (element, renderer) 
       return true;
     
   ;
   var source = '<img src="/assets/common/image/BG.jpg"/>';
   doc.fromHTML(
       source,
       15,
       15,
       
         'width': 180,'elementHandlers': elementHandler
       );

   doc.output("dataurlnewwindow");

它在控制台上抛出此错误:

jsPDF Warning: rendering issues? provide a callback to fromHTML! (anonymous function)

我使用了PNG格式,因为它不起作用我也尝试了JPG格式,仍然没有运气! 我究竟做错了什么? 提前致谢。

【问题讨论】:

【参考方案1】:

为 fromHTML() 增加一个参数

doc.fromHTML(
    source,
    15,
    15, 
        'width': 180,
        'elementHandlers': elementHandler
    ,

    function(dispose) 
        // dispose: object with X, Y of the last line add to the PDF
        //          this allow the insertion of new lines after html
        // pdf.save('Test.pdf');

        if (navigator.msSaveBlob) 
            var string = doc.output('datauristring');
         else 
            var string = doc.output('bloburi');
        

        $('.previewIFRAME').attr('src', string);
    )

【讨论】:

pdf 在var string = pdf.output('bloburi');中未定义 我没有再收到错误了,所以它确实改变了一些东西,但是生成的 PDF 是空白的。 @klihelp 即使我遇到了与问题陈述相同的问题,你能帮我看看你是如何让它为你工作的吗?似乎 from_html 对 css 的支持有限..这是问题所在吗? 我终于改用wkhtmltopdf了,它是开源的,解决了目的。

以上是关于图像未使用 jsPDF 在 PDF 上呈现?的主要内容,如果未能解决你的问题,请参考以下文章

使用jspdf在pdf中添加图像

使用 jsPDF / HTML5 在 PDF 中插入图像不起作用

使用jspdf将HTML和图像转换为pdf

jspdf中的图像质量太差

在创建 pdf 时,图像未在 Flutter 中显示

在 iOS 上打印 PDF,背景图像不打印