|
@@ -57,10 +57,22 @@ async function generatePDFBlob(
|
|
|
const ratio = pageWidth / canvasWidth;
|
|
|
const pagePixelHeight = pageHeight / ratio;
|
|
|
|
|
|
+ // 页边距(像素)
|
|
|
+ const marginTop = 20; // 仅作用于非第一页
|
|
|
+ const marginBottom = 40; // 所有页生效
|
|
|
+
|
|
|
let positionY = 0;
|
|
|
+ let pageIndex = 0;
|
|
|
|
|
|
while (positionY < canvasHeight) {
|
|
|
- const h = Math.min(pagePixelHeight, canvasHeight - positionY);
|
|
|
+ // 判断是否第一页
|
|
|
+ const topMargin = pageIndex === 0 ? 0 : marginTop;
|
|
|
+
|
|
|
+ // 每页实际可容纳的内容高度
|
|
|
+ const h = Math.min(
|
|
|
+ pagePixelHeight - topMargin - marginBottom,
|
|
|
+ canvasHeight - positionY
|
|
|
+ );
|
|
|
|
|
|
const pageCanvas = document.createElement('canvas');
|
|
|
pageCanvas.width = canvasWidth;
|
|
@@ -69,9 +81,13 @@ async function generatePDFBlob(
|
|
|
ctx?.drawImage(canvas, 0, positionY, canvasWidth, h, 0, 0, canvasWidth, h);
|
|
|
|
|
|
const imgData = pageCanvas.toDataURL('image/jpeg', 0.95);
|
|
|
- pdf.addImage(imgData, 'JPEG', 0, 0, pageWidth, h * ratio);
|
|
|
+
|
|
|
+ // 添加到 PDF 时,整体往下偏移 topMargin
|
|
|
+ pdf.addImage(imgData, 'JPEG', 0, topMargin * ratio, pageWidth, h * ratio);
|
|
|
|
|
|
positionY += h;
|
|
|
+ pageIndex++;
|
|
|
+
|
|
|
if (positionY < canvasHeight) pdf.addPage();
|
|
|
}
|
|
|
|