我想使用节点js(express)生成pdf。我需要在页面编号的每个页面上添加页眉和页脚。任何帮助,将不胜感激。
谢谢。
你可以这样做 :
doc.text('This is a footer', 20, doc.page.height - 50, {
lineBreak: false
});
在所有页面上添加页脚
doc.addPage()
let bottom = doc.page.margins.bottom;
doc.page.margins.bottom = 0;
doc.text('Page 1', 0.5 * (doc.page.width - 100), doc.page.height - 50,
{
width: 100,
align: 'center',
lineBreak: false,
})
// Reset text writer position
doc.text('', 50, 50)
doc.page.margins.bottom = bottom;
let pageNumber = 1;
doc.on('pageAdded', () => {
pageNumber++
let bottom = doc.page.margins.bottom;
doc.page.margins.bottom = 0;
doc.text(
'Pág. ' + pageNumber,
0.5 * (doc.page.width - 100),
doc.page.height - 50,
{
width: 100,
align: 'center',
lineBreak: false,
})
// Reset text writer position
doc.text('', 50, 50);
doc.page.margins.bottom = bottom;
})
比pdfKit更好我建议你使用pdfMake。我对pdfmake的经历很棒.https://www.npmjs.com/package/pdfmake
关于这个库,我建议阅读PDF文档,这是很多必须完成的在线HTML文档。
警告:为了能够在主要内容区域之外书写,您必须在文本的函数参数上设置高度和宽度。
所以看到pdf doc你可以这样做:
const doc = new PDFDocument({bufferPages: true})
//addPage X times
const range = doc.bufferedPageRange();
for( let i = range.start; i < (range.start + range.count); i++) {
doc.switchToPage(i);
doc.text(`Page ${i + 1} of ${range.count}`,
200,
doc.page.height - 40,
{ height : 25, width : 100});
}
这对我有用
const doc = new PDFDocument({bufferPages: true})
const range = doc.bufferedPageRange();
for (let i = range.start; i <= (doc._pageBufferStart +
doc._pageBuffer.length - 1); i++) {
doc.switchToPage(i);
doc.font('Times-Roman').fontSize(8).text('Footer', 90,
doc.page.height - 40, {
lineBreak: false
});
}