所以我有一堆json,无限多的情况下,每天都有报告生成,我必须生成一个PDF,包含所有必要的信息--一个标签接着一个标签,并排,网格样式。
唯一似乎能解决我需求的npm库是反应-艾弗里,乍一看它似乎是解决我的问题的完美解决方案,因为我使用的是Avery标签,我的前端是基于反应的,所以我可以从后端获取json并生成pdf,但是这个库已经3年没有维护了,文档没有为我清楚地说明如何使用它,当我尝试实现它时,给了我很多错误。
有什么办法让我做到这一点吗?前端聚焦或后端使用Node.js就行了。
我已经尝试了pdfkit,我目前正在使用它来生成pdf,但是当涉及到将项目并排放置时,它并没有起作用。
发布于 2022-03-23 17:20:02
您可以使用pdfme在每个标签位置放置一个文本对象来创建您自己的网格(计算方法是将A4页面除以标签行数和cols数):
const fontSize: number = 12;
const labelWidth: number = 99;
const labelHeight: number = 38;
const sheetHeight: number = 297;
const sheetWidth: number = 210;
const sheetCols: number = 2;
const sheetRows: number = 7;
const template: Template = {
basePdf: BLANK_PDF,
schemas: [
{
0: {
type: "text",
position: { x: (sheetHeight / sheetRows) * 0, y: (sheetWidth / sheetCols) * 0 },
width: labelWidth,
height: labelHeight,
alignment: "center",
fontSize: fontSize,
},
13: {
type: "text",
position: { x: (sheetHeight / sheetRows) * 6, y: (sheetWidth / sheetCols) * 1 },
width: labelWidth,
height: labelHeight,
alignment: "center",
fontSize: fontSize,
},
const inputs = [{ 0: "a", 13: "z" }];
generate({ template, inputs }).then((pdf) => {
console.log(pdf);
});发布于 2022-05-27 16:26:04
您可以使用HTML和CSS设计标签,然后使用paged.js将其呈现为PDF格式。Paged.js是一个javascript库,它实现了W3C分页媒体标准,允许您使用W3C和CSS设计打印。Paged.js既可以作为浏览器中的多边形填充,也可以作为生成PDF的命令行接口。
对于浏览器中标签页的简单设计迭代,然后命令行版本可以用于在生产中生成PDF,这种多填充版本是非常好的。
https://stackoverflow.com/questions/71563736
复制相似问题