在不创建HTML的情况下将Node.JS中的JSON对象转换为PDF表

问题描述 投票:1回答:3

我正在尝试将导出集成到我的应用程序中的CSV和PDF功能。

我已经使用json2csv库导出到CSV,但是我遇到了PDF导出的问题。

我想要的是将我在node.js代码中的JSON对象导出为表格格式的PDF,同时使用数组对象键(在数组中的所有对象中将相同)作为列标题。

我在网上阅读的大部分资源都建议创建一个用于导出的HTML模板。但是,我想保持我的功能通用,这样我就可以导出任何对象数组,无论数组对象中的键(列)数量如何,所以静态HTML模板的想法显然不适合我的需求

此外,我希望能够以横向模式而不是纵向模式制作PDF。

我怎样才能做到这一点?

提前致谢。

json node.js pdf pdf-generation export-to-pdf
3个回答
0
投票

保持PDF布局独立于数据和HTML表示是一种很好的方法 - 通常它们应该是不同的并且适合目的。这意味着您需要将JSON作为数据发送到PDF创建过程。为此,如果您可以将服务器端包含为生成选项(并且我不能建议任何不通过HTML转换的javascript PDF工具),那么您将拥有最广泛的选项。

这意味着在服务器上使用您的JSON数据,调用PDF创建过程。根据您的服务器平台,您可以使用各种PDF工具,这些工具与平台语言(例如Java / PHP)或与语言无关的Web服务API相关联。如果你提到你的服务器选项,我可能会提出一些建议。

我希望有所帮助。


0
投票

而不是转换为HTML,然后生成PDF。您可以使用“pdfmake”直接生成pdf。我用它和非常好的库。见:https://pdfmake.github.io/docs/


0
投票

安装npm

npm i html-pdf --save

添加到您的文件中

var pdf = require('html-pdf');

在表格中管理您的数据

table += "<table border='1' style='width:100%;word-break:break-word;'>";
table += "<tr>";
table += "<th >Column_Name</th>";
table += "<th >Column_Name";
table += "</tr>";

array.forEach(function(row){
    table += "<tr>";
    table += "<td>"+row.key_one+"</td>";
    table += "<td>"+row.key_tow+"</td>";
    table += "</tr>";
});
table += "</table>";

定义pdf选项

var options = {
  "format": "A4",
  "orientation": "landscape",
  "border": {
    "top": "0.1in",
},
"timeout": "120000"
};

创建pdf文件

pdf.create(table, options).toFile('save_file_path/test.pdf', function(err, result) {
  if (err) return console.log(err);
  console.log("pdf create");
});
© www.soinside.com 2019 - 2024. All rights reserved.