表格与pdfkit的对齐问题?

问题描述

我正在使用PDF KIT绘制pdf内容。我可以创建表格,但是有一些对齐问题。

下面是我的代码

async renderPdf(data: any) {
    return new Promise((resolve,reject) => {
        let doc = new PDFDocument();
        doc.pipe(fs.createWriteStream('out.pdf'));
        let x1 = doc.x;
        let x6 = 310;
        doc.rect(doc.x,doc.y - 50,450,265).stroke()
            .image('images/test.png',doc.x + 10,doc.y - 40,{ width: 60,height: 20 })
            .moveto(doc.x,doc.y - 10).lineto(doc.x + 450,doc.y - 10).stroke()
        let x = doc.x
        doc.fillColor('blue',0.8).text('Basic information',((x + 450 / 2) - 50),doc.y,{ align: 'justify',width: 100,height: doc.currentLineHeight() })
        doc.moveDown()
        console.log(doc.y)
        doc.fillColor('black').font('Helvetica-Bold').text('Amount Requested',x1,{ indent: 5,width:200 })
            doc.font('Helvetica').text(data.lead.amountRequested,x6,doc.y)
            .rect(x1,0.2).stroke()
        console.log(doc.y)

        doc.fillColor('black').font('Helvetica-Bold').text('Business Start Date',{ indent: 5 })
            .font('Helvetica').text(data.lead.business.businessstartDate,0.2).stroke()
        doc.fillColor('black').font('Helvetica-Bold').text('Leagal Structure',{ indent: 5 })
            .font('Helvetica').text(data.lead.business.legalStructure,0.2).stroke()
        doc.fillColor('black').font('Helvetica-Bold').text('Loan Purpose',{ indent: 5 })
            .font('Helvetica').text(data.lead.loanPurpose,0.2).stroke()
        doc.end()
        resolve(doc)
    })
}

代码输出

enter image description here

预期产量

enter image description here

请告诉我如何实现预期的输出

解决方法

这是因为 doc.y 是在每个 .text 之后计算的, 您可以使用一个变量来存储每行 let y1 = doc.y 的值或使用 continued 并使用 x 直到它正常为止,例如:

doc.fillColor('black').font('Helvetica-Bold').text('Business Start Date',x1,doc.y,{ indent: 5,continued: true})
        .font('Helvetica').text(Date(),100,doc.y)