js生成pdf

js生成pdf

html->img->pdf

下载依赖

npm install html2canvas
npm install jspdf

引入依赖

import html2canvas from "html2canvas"
import jsPDF from 'jspdf';

代码

const A4_WIDTH = 595.28
const A4_HEIGHT = 841.89
//参数 html(dom) imgsrc(封面可不加,直接加到第一个参数) fileName(文件名称)
export const handleHtml2pdf = (html, imgSrc, fileName, cb) => {
    new html2canvas(html, {
        useCORS: true,
        allowTaint: true,
    }).then(canvas => {
        var contentWidth = canvas.width;
        var contentHeight = canvas.height;
        //一页pdf显示html页面生成的canvas高度;
        var pageHeight = contentWidth / A4_WIDTH * A4_HEIGHT;
        //未生成pdf的html页面高度
        var leftHeight = contentHeight;
        //页面偏移
        var position = 0;
        //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
        var imgWidth = A4_WIDTH;
        var imgHeight = A4_WIDTH / contentWidth * contentHeight;
        var pageData = canvas.toDataURL('image/jpeg', 1.0);
        var pdf = new jsPDF('', 'pt', 'a4');
        if (imgSrc) {
            pdf.addImage(imgSrc, 'JPEG', 0, 0, imgWidth, imgHeight);
            pdf.addPage();
        }
        if (leftHeight < pageHeight) {
            pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
        } else {
            while (leftHeight > 0) {
                //arg3-->距离左边距;arg4-->距离上边距;arg5-->宽度;arg6-->高度
                pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                leftHeight -= pageHeight;
                position -= A4_HEIGHT;
                //避免添加空白页
                if (leftHeight > 0) {
                    pdf.addPage();
                }
            }
        }
        pdf.save(fileName || "pdf.pdf");
        cb()
    })
}

相关推荐

  1. js生成pdf

    2024-04-21 19:02:05       103 阅读
  2. js生成pdf并自动上传

    2024-04-21 19:02:05       59 阅读
  3. Puppeteer 生成图片 生成 PDF

    2024-04-21 19:02:05       21 阅读
  4. WKWebView生成PDF

    2024-04-21 19:02:05       33 阅读
  5. android pdf框架-6,文本生成pdf

    2024-04-21 19:02:05       44 阅读
  6. android pdf框架-5,生成pdf

    2024-04-21 19:02:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 19:02:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 19:02:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 19:02:05       82 阅读
  4. Python语言-面向对象

    2024-04-21 19:02:05       91 阅读

热门阅读

  1. Qt解析json格式数据

    2024-04-21 19:02:05       36 阅读
  2. 贪心算法-跳跃游戏

    2024-04-21 19:02:05       37 阅读
  3. mysqlslap压力测试和线程池

    2024-04-21 19:02:05       32 阅读
  4. 类声明是public类型的变量如何赋值

    2024-04-21 19:02:05       31 阅读
  5. Ceph学习 -9.认证管理-用户实践

    2024-04-21 19:02:05       39 阅读
  6. web配置https

    2024-04-21 19:02:05       37 阅读
  7. 基于CppHttpLib的Httpserver

    2024-04-21 19:02:05       45 阅读
  8. Ubuntu上根据关键字模糊查找指定文件夹或文件

    2024-04-21 19:02:05       42 阅读
  9. ceph large omap objects

    2024-04-21 19:02:05       38 阅读
  10. Ceph学习 -10.认证管理-秘钥管理

    2024-04-21 19:02:05       107 阅读