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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jspdf将HTML和图像转换为pdf相关的知识,希望对你有一定的参考价值。

目前我正在使用asp经典,jquery和html的项目

最近,我使用“from-html.js”成功将html文件转换为pdf,但我有一个问题是:

如何在我创建的pdf中插入一些图像?我现在搜索了很长时间,但我找不到办法。

我试图使用addhtml.js或addimage.js混合我的实际代码,但它不起作用。这就是我目前所做的

<title>Recapitulatif Commande</title>

<script type="text/javascript" src="./examples/js/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="jspdf.js"></script>
<script type="text/javascript" src="./dist/jspdf.min.js"></script>
<script type="text/javascript" src="jspdf.plugin.from_html.js"></script>
<script type="text/javascript" src="jspdf.plugin.standard_fonts_metrics.js"></script> 
<script type="text/javascript" src="jspdf.plugin.split_text_to_size.js"></script> 
<script type="text/javascript" src="jspdf.plugin.addimage.js"></script> 
<script src='./libs/Blob.js/Blob.js' type='text/javascript'></script>
<script src='./libs/FileSaver.js/FileSaver.js' type='text/javascript'></script>
<script src='./libs/png_support/zlib.js' type='text/javascript'></script>
<script src='./libs/png_support/png.js' type='text/javascript'></script>
<script src='./libs/deflate.js' type='text/javascript'></script>
<script src='jspdf.plugin.png_support.js' type='text/javascript'></script>

<script language="JavaScript"> 

  $(document).ready( function(){

    var doc = new jsPDF();      

    var specialElementHandlers = 
    {
        '#editor': function (element, renderer) 
        {
            return true;
        }
    };      

    $('#cmd').click(function () 
    {
        doc.fromHTML($('#mydiv').html(), 15, 15, {
            'width': 170, 
            'elementHandlers': specialElementHandlers,          
        });
        doc.save('RecapCommande.pdf');
    });
});
</script>

<div id="mydiv">
    <h2><center>Bonjour voici un recap des notes</center></h2>
    <table id="table" width="100%" border="2px solid">
        <thead>
            <tr>
                <th width="33%" align="center">date : </th>
                <th width="33%" align="center">montant : </th>
                <th width="33%" align="center">statut : </th>
            </tr>
        </thead>
    </table>        
</div> <!-- /container -->
<table id="table14" width="100%" >
        <thead>
            <tr>
                <th width="33%" align="center"><button id="cmd" align="center" >Imprimer votre commande</button></th>
            </tr>
        </thead>
</table>

如果你能帮助我,我会如此放心,谢谢

答案

你必须将你的表转换成一个画布然后显示它。首先将一个隐藏的画布附加到你的div.Second将你的div复制到隐藏的画布。第三个隐藏你的表并取消隐藏画布。第四个生成pdf。

<Script>
 //first
$("#table").append('<div  id="can" style="background-color:white" >
<canvas id="canvas" width="300" height="320" style="background-color:white"></canvas> </div>');
 //second
canvg('canvas', $("#table").html());
//third
var im = document.getElementById('canvas');
         im.style.display = 'block';
var create = document.getElementById('table');
         create.style.display = 'none';
//fourth..call function for pdf generation


</Script>
另一答案

将您的图像编码为base64,并将数据blob插入img src区域... ...:

<img src="data:image/jpeg;base64,/9j/4AA......9k=" /> 

我知道这是一篇旧文章,但是我今天一直在处理这个问题,并且发现base64图像是HTML到PDF转换输出它们的唯一方法。

以上是关于使用jspdf将HTML和图像转换为pdf的主要内容,如果未能解决你的问题,请参考以下文章

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

javascript中的HTML图像到pdf转换器

使用 jsPDF 将 HTML 输入值导出为 PDF

jsPDF 将html代码中的table导出为pdf文件怎么弄

如何使用 jsPDF-AutoTable 插件自定义 PDF 中的标题单元格?

jspdf中的图像质量太差