如何解决Nodejs在BE上生成文档并发送给用户FE
我不知道如何处理它,所以我没有要显示的代码,我只需要(我认为)一些指导。 我有一个nodeJs服务器(API)和一个vueJs前端。 我有一个端点,可以给我一个摘要(它随着用户的变化而变化),并且数据来自mongodb,我想导出/生成pdf / doc。我该怎么做?步骤是什么? (我想拥有一个EP来生成文档并下载它)例如,我是否需要使用ejs创建模板?之后呢? 预先感谢
解决方法
您将不得不使用某种类型的节点PDF生成库在后端生成文档。您可以使用ejs创建一个html页面,以遍历所有项目,并使用pdf-creator-node包对其进行PDF制作。链接的文档中显示了大多数示例,这些示例用于制作带有一些标记的PDF。
,选项1
您可以尝试以FrontEnd捕获数据(我假设它是json格式),然后在前端使用一些jquery插件生成所需格式的文档, 示例插件enter link description here
OR
选项2
使用npm软件包(例如This
)生成文档理想且重要的保护方式是选项2
,您将不得不在Node API中创建一个pdf文档,这可能是乏味的工作。但是经过一段时间,您应该可以得到它。
您有2个选项:pdfkit和pdf-creator-node(均为npm软件包)。我会使用pdf-creator-node,因为您可以使用模板(不确定是否可以在pdfkit中这样做)。
-
安装软件包
npm i pdf-creator-node
-
创建template.html
<html> <head> <mate charest="utf-8" /> <title>Hello world</title> </head> <body> <h1>Example List</h1> <ul> {{#each person}} <li>Name: {{this.name}}</li> <li>Age: {{this.age}}</li> <br> {{/each}} </ul> </body> </html>
-
在您的节点文件中添加
var pdf = require("pdf-creator-node") var fs = require('fs') var html = fs.readFileSync('template.html','utf8')
-
为您的PDF创建大小/选项
var options = { format: "A3",orientation: "portrait",border: "10mm" };
检查documentation以获得有关格式的更多详细信息
-
创建您的人员列表
var users = [ { name:"foo",age:"30" },{ name:"bar",age:"22" },{ name:"baz",age:"9" } ] var document = { html: html,data: { users: users },path: "./output.pdf" };
-
然后最后使用
pdf.create
制作pdfpdf.create(document,options) .then(res => { console.log(res) }) .catch(error => { console.error(error) });
然后,您将使用res.sendfile(output.pdf)
之类的东西将其发送到客户端,或者您想这样做
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。