前端html生成pdf并直接下载

引入所需要的js文件下载js文件

<script src="${ctx}/static/js/html2canvas.js"></script>
<script src="${ctx}/static/js/jspdf.debug.js"></script>

将html 中任意div中的元素生成pdf

<fieldset class="layui-elem-field">
            <legend>雷灾预警报告-申请</legend>
            <div class="layui-field-box">
                <table class="dataTable">
                    <tr>
                        <td>位置:</td>
                        <td>${lzbg.wz}</td>
                        <td>道路:</td>
                        <td>${lzbg.dl}</td>
                    </tr>
                    <tr>
                        <td>申请人:</td>
                        <td>${lzbg.sqrxm}</td>
                        <td>申请时间:</td>
                        <td>${lzbg.cjsj.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))}</td>
                    </tr>
                    <tr>
                        <td>雷灾强度:</td>
                        <td>${lzbg.wz}</td>
                        <td>预计时间:</td>
                        <td>${lzbg.yjsj}</td>
                    </tr>
                    <tr>
                        <td>备注:</td>
                        <td colspan="3">${lzbg.bz}</td>
                    </tr>
                </table>
            </div>
        </fieldset>

使用按钮触发生成pdf事件

<a href="javascript:void(0)" onclick="makeMpdf('检测报告')">下载检测文件</a>

js方法

<script>
    function makeMpdf(pdfName) {
        if(confirm("您确认下载该PDF文件吗?")){
            var target = document.getElementsByClassName("layui-elem-field")[2];
            target.style.background = "#FFFFFF";
            if(pdfName==''||pdfName==undefined) pdfName= getNowFormatDate();

            html2canvas(target, {
                onrendered:function(canvas) {
                    var contentWidth = canvas.width;
                    var contentHeight = canvas.height;

                    //一页pdf显示html页面生成的canvas高度;
                    var pageHeight = contentWidth / 592.28 * 841.89;
                    //未生成pdf的html页面高度
                    var leftHeight = contentHeight;
                    //页面偏移
                    var position = 0;
                    //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
                    var imgWidth = 595.28;
                    var imgHeight = 592.28/contentWidth * contentHeight;

                    var pageData = canvas.toDataURL('image/jpeg', 1.0);

                    var pdf = new jsPDF('', 'pt', 'a4');

                    //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
                    //当内容未超过pdf一页显示的范围,无需分页
                    if (leftHeight < pageHeight) {
                        pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight );
                    } else {
                        while(leftHeight > 0) {
                            pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                            leftHeight -= pageHeight;
                            position -= 841.89;
                            //避免添加空白页
                            if(leftHeight > 0) {
                                pdf.addPage();
                            }
                        }
                    }
                    pdf.save(pdfName+".pdf");
                }
            })
        }
    }
</script>

前端生成PDF文件并提供下载,需要使用特定的库或工具来实现。以下是一种实现方法: 1. 安装相应的库或工具:可以使用jsPDF库来生成PDF文件,它是使用纯JavaScript实现的前端PDF生成库。可以通过npm安装jsPDF库。 2. 创建HTML页面:在HTML页面中添加一个按钮,用于触发生成PDF文件的操作。 3. 编写JavaScript代码:使用jsPDF库来生成PDF文件并提供下载。在按钮的点击事件处理程序中,首先实例化一个jsPDF对象,并设置相关的参数,例如页面大小、文本内容等。然后使用jsPDF提供的方法,将HTML内容转换为PDF文件。最后调用jsPDF提供的save方法,将生成PDF文件保存到本地。 以下是一个简单示例代码: ```html <!DOCTYPE html> <html> <head> <title>生成PDF下载</title> </head> <body> <button onclick="generatePDF()">生成PDF文件</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.3.1/jspdf.umd.min.js"></script> <script> function generatePDF() { var doc = new jsPDF(); doc.text('Hello World!', 10, 10); doc.save('sample.pdf'); } </script> </body> </html> ``` 在上述示例中,点击"生成PDF文件"按钮将会生成一个包含"Hello World!"文本的PDF文件,并自动下载到本地。要使用该示例,只需将HTML代码复制到一个HTML文件中,并在浏览器中打开该文件。 请注意,生成PDF文件的功能可能受到不同浏览器的限制。有些浏览器可能会在自动下载文件之前提示用户是否允许下载。另外,如果需要更复杂的布局或包含图像等更复杂的内容,可能需要进一步学习和调整jsPDF库的使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱代码的小郭

请留下一点心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值