Node.js Canvas元素在多次使用或在循环-PDFMake中使用时会导致不正确的渲染

Node.js Canvas元素在多次使用或在循环-PDFMake中使用时会导致不正确的渲染,node.js,pdfmake,Node.js,Pdfmake,我正在尝试使用生成多个PDF服务器端。每个PDF都有一个特定的部分,该部分在所有要生成的PDF中都是常量,general。然后,该general部分用行隔开,然后将特定于该文档的信息加载到其下方 这在第一个PDF上非常有效。但是,在第二个屏幕上,布局中断。我怎样才能解决这个问题 第一个PDF: 第二个PDF: 所以我问了一个问题,答案是: 一个docDefinition变量只能用于生成PDF一次 虽然这可能是真的,但我确实找到了一个适当的解决办法,即使用一张只有床头线的桌子。这不是我的主意,

我正在尝试使用生成多个PDF服务器端。每个PDF都有一个特定的部分,该部分在所有要生成的PDF中都是常量,
general
。然后,该
general
部分用
行隔开,然后将特定于该文档的信息加载到其下方

这在第一个PDF上非常有效。但是,在第二个屏幕上,布局中断。我怎样才能解决这个问题

第一个PDF:

第二个PDF:


所以我问了一个问题,答案是:

一个
docDefinition
变量只能用于生成PDF一次

虽然这可能是真的,但我确实找到了一个适当的解决办法,即使用一张只有床头线的桌子。这不是我的主意,但我不记得是从哪里来的

function line() {
  //Usually one would use a canvas to draw the line
  //{canvas: [{ type: 'line', x1: 0, y1: 5, x2: 595-2*40, y2: 5, lineWidth: 2 }],margin: [ 0, 10, 0, 0 ]},
  //For some reason, that's not working and the layout just breaks
    return {
      table : {
        headerRows : 1,
        widths: ['100%'],
        body : [
                [''],
                ['']
                ]
        },
        layout : 'headerLineOnly'
    }
} 
然后在
docDefinition
中需要行的任何位置使用
line()

"use strict";
  const fs = require("fs");
  const PdfPrinter = require("pdfmake");

  const fonts = {
    Helvetica: {
      normal: "Helvetica",
      bold: "Helvetica-Bold",
      italics: "Helvetica-Oblique",
      bolditalics: "Helvetica-BoldOblique",
    },
  };

  const printer = new PdfPrinter(fonts);

  const general = [{ text: "This is general text" }];

  const first = [{ text: "This is the text for the first pdf" }];

  const second = [{ text: "This is the text for the second pdf" }];



  let docDefinition = {
    pageSize: "letter",
    defaultStyle: {
      font: "Helvetica"
    }
  };

  docDefinition.content = [general,line(),first];
  let pdfDoc = printer.createPdfKitDocument(docDefinition);
  pdfDoc.pipe(fs.createWriteStream('one.pdf'));
  pdfDoc.end();
"use strict";
  const fs = require("fs");
  const PdfPrinter = require("pdfmake");

  const fonts = {
    Helvetica: {
      normal: "Helvetica",
      bold: "Helvetica-Bold",
      italics: "Helvetica-Oblique",
      bolditalics: "Helvetica-BoldOblique",
    },
  };

  const printer = new PdfPrinter(fonts);

  const general = [{ text: "This is general text" }];

  const first = [{ text: "This is the text for the first pdf" }];

  const second = [{ text: "This is the text for the second pdf" }];



  let docDefinition = {
    pageSize: "letter",
    defaultStyle: {
      font: "Helvetica"
    }
  };

  docDefinition.content = [general,line(),first];
  let pdfDoc = printer.createPdfKitDocument(docDefinition);
  pdfDoc.pipe(fs.createWriteStream('one.pdf'));
  pdfDoc.end();