问题描述
我正在使用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)
})
}
预期产量
请告诉我如何实现预期的输出?
解决方法
这是因为 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)