在jsPDF上使用HTML识别页码时如何应用边距

How apply margin when identify page number using HTML on jsPDF

提问人:José Victor 提问时间:8/20/2023 更新时间:8/20/2023 访问量:62

问:

我正在将 HTML 导出为 PDF,我注意到当它有多个页面时,如果我不使用边距,内容就会被剪切。

我想:

  • 通过添加回调函数订阅 jsPDF 的 “addPage” 事件
  • 当创建一个页面时(在第一个页面之后,即> 1),然后我会添加一个“margin-top”,这样内容就不会被切断。

图书馆参考:https://github.com/parallax/jsPDF/blob/master/dist/jspdf.es.js#L3562

我的代码如何使用库的示例:

    const doc = new jsPDF('p', 'mm', 'a4');
    const pdfElement = state.exportContent.get(0);

    doc.html(pdfElement, {
        autoPaging: 'text',
        callback: function (pdf) {
            window.open(pdf.output('bloburl'));
        },
        x: 5,
        y: 5,
        width: 200, //target width in the PDF document
        windowWidth: 900, //window width in CSS pixels
        margin: [10, 0, 10, 0], //I don't want this forever and on every page!!!
    })

然后我尝试直接添加事件,但没有用:

     jsPDF.API.events.push(["addPage", function (addPageData) {
        //make something if the page is bigger than one
     }]

我尝试使用文件创建回调函数(在window.open之前),并带有以下代码:

     var pageCount = doc.internal.getNumberOfPages();
     for(i = 1; i < pageCount; i++) {
        doc.setPage(i);
        doc.setMargin([0, 0, 10, 0]); //problem
     }

但是,我遇到了一个问题,因为“setMargin”方法不存在。https://github.com/parallax/jsPDF/blob/master/dist/jspdf.es.js#L15346

如何只在第一页之后添加“margin-top”?(使用 HTML)

我在 Laravel 中使用以下版本:

  • “html2canvas”: “^1.0.0-rc.1”,
  • “jspdf”: “^2.5.1”,
  • “laravel/framework”: “^9.19”,
javascript jspdf-autotable

评论


答: 暂无答案