首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Hummus.js编写pdf文件而不是响应http请求

如何用Hummus.js编写pdf文件而不是响应http请求
EN

Stack Overflow用户
提问于 2022-06-23 19:48:08
回答 1查看 50关注 0票数 0

如何用hummus.js保存已创建的PDF文件,而不是将其作为路由的响应发送?我找不到任何例子。

代码语言:javascript
复制
res.writeHead(200, { "Content-Type": "application/pdf" });

var hummus = require("hummus");
var pdfWriter = hummus.createWriter(new hummus.PDFStreamForResponse(res));
var page = pdfWriter.createPage(0, 0, 240.94512, 155.9052);
pdfWriter
    .startPageContentContext(page)
    .writeText("Hello " + (req.query.id ? req.query.id : "World"), 0, 100, {
        font: pdfWriter.getFontForFile(__dirname + "\\arial.ttf"),
        size: 20,
        colorspace: "gray",
        color: 0x00
    });
pdfWriter.writePage(page);

var cxt = pdfWriter.startPageContentContext(page);
cxt
    .drawImage(0, 0, __dirname + "\\testCard.png", {
        transformation: { width: 240.94512, height: 155.9052 }
    })
    // .drawImage(10, 10, __dirname + "\\test.jpg");
    .drawImage(10, 10, __dirname + "\\simple.pdf");

// .drawImage(200,500,'./TestMaterials/images/png/original.png')

pdfWriter.writePage(page);
pdfWriter.end();

res.end();

ps:我试过5种不同的node.js pdf库。不知何故,他们谁也做不了所有这些事情:

  • 创建自定义页面大小
  • 在同一页上附加多个图像
  • jpg、png和base64格式作为图像输入
  • 写入文件
EN

回答 1

Stack Overflow用户

发布于 2022-06-23 20:11:42

由于我不知何故浪费了很多时间来完成这个任务,所以我不会删除我愚蠢的问题,相反,我会为我的愚蠢问题提供一个答案:

与其向编写器提供一个新的hummus.PDFStreamForResponse(res)对象,您只需提供一个路径:

代码语言:javascript
复制
var pdfWriter = hummus.createWriter("./pathAndPdfName.pdf");

所以整个代码如下所示:

代码语言:javascript
复制
var hummus = require("hummus");
var pdfWriter = hummus.createWriter("./outPut.pdf");
var page = pdfWriter.createPage(0, 0, 240.94512, 155.9052);
var cxt = pdfWriter.startPageContentContext(page);
cxt
    .drawImage(0, 0, __dirname + "\\testCard.png", {
        transformation: { width: 240.94512, height: 155.9052 }
    })
    .drawImage(10, 10, __dirname + "\\test.jpg");
pdfWriter.writePage(page);
var page1 = pdfWriter.createPage(0, 0, 240.94512, 155.9052);
var cxt1 = pdfWriter.startPageContentContext(page1);
cxt1.drawImage(0, 0, __dirname + "\\testCard.png", {
    transformation: { width: 240.94512, height: 155.9052 }
});
pdfWriter.writePage(page1);
pdfWriter.end();

ps:如果您知道如何使用base64字符串作为ctx.drawImage()的图像输入,那就太好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72735847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档