前端 / 插件

jsPDF 自定义页面大小

MOMO · 11月26日 · 2025年 · 本文共1748个字 · 预计阅读6分钟 205次已读

使用标准页面尺寸

要使用标准页面尺寸,您可以在创建jsPDF实例时指定页面大小。例如,要创建一个A4大小的PDF,可以这样做:

const doc = new jsPDF({
    orientation: 'portrait', // 页面方向,可以是 'portrait' 或 'landscape'
    unit: 'mm',             // 页面单位,可以是 'pt' (点), 'mm' (毫米), 'cm' (厘米), 'in' (英寸)
    format: 'a4'            // 页面格式,可以是 'a0', 'a1', 'a2', 'a3', 'a4' 等
});

自定义页面尺寸

如果您需要自定义页面尺寸,可以在创建jsPDF实例时指定宽度和高度

const doc = new jsPDF({
    orientation: 'portrait', // 页面方向
    unit: 'mm',             // 页面单位
    format: [width, height] // 自定义页面宽度和高度,例如 [210, 297] 表示A4大小的毫米单位宽度和高度
});

例如,创建一个宽度为210mm、高度为297mm的A4大小的PDF:

const doc = new jsPDF({
    orientation: 'portrait',
    unit: 'mm',
    format: [210, 297]
});

修改已创建文档的页面大小

如果您已经创建了一个jsPDF文档,并希望更改其页面大小(尽管这不是通常的做法,因为一旦文档创建,其页面大小通常是固定的),您可以通过删除当前页面并添加一个新页面来实现:

doc.deletePage(1); // 删除当前页面(如果有多个页面)
doc.addPage([newWidth, newHeight]); // 添加一个新页面,指定新的宽度和高度

例如,将页面大小更改为A5:

doc.deletePage(1); // 删除当前页面(如果有多个页面)
doc.addPage('a5'); // 添加一个A5大小的页面

不断页导出文档

exportPDF: function (name) {
  var element = document.getElementById("print_area");
  html2canvas(element, {
      scale: 2,
      allowTaint: true,
      scale: window.devicePixelRatio || 1,
      scrollY: 0,
      scrollX: 0,
      onrendered: function (canvas) {
          var contentWidth = canvas.width;
          var contentHeight = canvas.height;
          canvas.imageSmoothingQuality = 'high'
          canvas = Controller.sharpenCanvas(canvas)
          var pageData = canvas.toDataURL("image/png", 2.0);
          var pdf = new jsPDF({
              unit: 'mm',
              format: [contentWidth, contentHeight]
          });
          pdf.addImage(pageData, "PNG", 0, 0, contentWidth, contentHeight);
          pdf.save(name);
          parent.layer.closeAll();
          parent.layer.msg("导出成功", {
              icon: 1,
          });
      },
  });
},
sharpenCanvas(canvas) {
  const ctx = canvas.getContext('2d');
  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  ctx.putImageData(imageData, 0, 0);
  return canvas;
}

注意事项

  • 在大多数情况下,一旦文档被创建并添加了内容,更改其页面大小不是一个推荐的做法,因为这可能会破坏已添加内容的布局。通常,最好在文档创建时确定合适的页面大小。
  • 确保在调用addPage之前删除所有现有页面,以避免出现多个页面的情况。如果只是想更改现有页面的大小而不添加新页面,上面的删除和添加新页面的方法可能不是最佳选择。在这种情况下,重新创建文档可能是更简单的方法。

通过以上方法,您可以灵活地设置jsPDF文档的页面大小。

0 条回应