辽宁省网站备案要求,知乎 网站开发工具,猪仔wordpress,制作网站app需求
之前我已经了解过如何在pdf模板中填写字段了
nodejs根据pdf模板填入中文数据并生成新的pdf文件https://blog.csdn.net/ArmadaDK/article/details/132456324 但是当我具体使用的时候#xff0c;我发现我的模板里面有表格#xff0c;表格的长度是不固定的#xff0c;所…需求
之前我已经了解过如何在pdf模板中填写字段了
nodejs根据pdf模板填入中文数据并生成新的pdf文件https://blog.csdn.net/ArmadaDK/article/details/132456324 但是当我具体使用的时候我发现我的模板里面有表格表格的长度是不固定的所以需要动态生成一个表格就要在原方案生成的pdf后面自己画上表格可以在pdflib的官网上看到一些例子PDF-LIB · Create and modify PDF documents in any JavaScript environment.
具体代码
// 创建一个新页面const currentPage pdfDoc.addPage([pdfWidth, pdfHeight]);
用addpage创建一页并将这页保存为变量方便后续进行操作。 // 绘制表格行数据for (let i startRow; i endRow; i) {const rowData arr[i];const y pdfHeight - 100 - (i % rowsPerPage) * cellHeight;currentPage.drawRectangle({// 每行一个长方形x: 50,y, // 手动垂直居中width: tableWidth,height: cellHeight,borderColor: rgb(0, 0, 0),});let idx 0;for (let key in rowData) {currentPage.drawText(rowData[key], {// 填入文字x: 50 idx * cellWidth 10,y: y 5,size: fontSize,font,});currentPage.drawLine({// 竖线start: { x: 50 idx * cellWidth, y },end: { x: 50 idx * cellWidth, y: y cellHeight },thickness: 1,});idx;}}
drawText(文字内容,{文字的一些options注意这里的坐标是左下角})
drawLine({start:{起点坐标},end:{终点坐标},thickness: 粗细}) 这时候发现如果文字是中文的话会出现乱码就需要引入中文字体但和上篇的引入方法不一样这次不能用那个update而是使用setfont直接对整个currentPage字体进行设置如下代码所示 // 设置字体const fontBytes await fs.promises.readFile(xxxx.ttf);pdfDoc.registerFontkit(fontkit);let font await pdfDoc.embedFont(fontBytes);。。。// 每次创建一个新页面就要设置fontconst currentPage pdfDoc.addPage([pdfWidth, pdfHeight]);currentPage.setFont(font);