You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Hummus.js将生成的PDF写入文件而非HTTP请求响应

hummus.js 保存PDF到本地文件实现方法

要将hummus.js生成的PDF输出为本地文件而非HTTP响应,仅需要对原有响应式代码做少量调整,无需引入额外依赖。

核心改动点

  • 移除所有HTTP响应相关逻辑:包括响应头设置、hummus.PDFStreamForResponse(res) 响应流包装、响应结束调用
  • 调用hummus.createWriter()时直接传入本地文件的存储路径作为参数,库会自动创建文件写入流,完成PDF内容落盘

完整实现代码

const hummus = require("hummus");
const path = require("path");

// 直接指定本地PDF保存路径即可
const savePath = path.join(__dirname, "output.pdf");
const pdfWriter = hummus.createWriter(savePath);

// 以下PDF内容绘制逻辑和原有逻辑完全一致
const page = pdfWriter.createPage(0, 0, 240.94512, 155.9052);
pdfWriter
    .startPageContentContext(page)
    .writeText("Hello World", 0, 100, {
        font: pdfWriter.getFontForFile(path.join(__dirname, "arial.ttf")),
        size: 20,
        colorspace: "gray",
        color: 0x00
    });

const cxt = pdfWriter.startPageContentContext(page);
cxt
    .drawImage(0, 0, path.join(__dirname, "testCard.png"), {
        transformation: { width: 240.94512, height: 155.9052 }
    })
    .drawImage(10, 10, path.join(__dirname, "simple.pdf"));

pdfWriter.writePage(page);
// 调用end方法即完成本地文件写入
pdfWriter.end();

注意:原示例代码中存在重复调用pdfWriter.writePage(page)写入同一个页面对象的冗余逻辑,会导致PDF结构异常,上述代码已移除该重复操作。另外建议使用Node.js原生path.join()处理文件路径,避免Windows/macOS路径分隔符兼容问题。

功能需求匹配说明

hummus.js完全满足你列出的全部PDF处理需求:

  • 支持自定义尺寸页面:createPage方法可自由传入页面边界坐标,自定义任意宽高的页面
  • 支持同页叠加多元素:同一个页面的内容上下文下可连续调用绘制方法,叠加图片、文字、其他PDF页面等任意内容
  • 支持多格式图片输入:jpg、png格式可直接传入文件路径绘制;base64格式图片可先转为Buffer,通过流方式传入绘制
  • 原生支持本地文件写入:即上述演示的能力,无需额外封装流

内容的提问来源于stack exchange,提问作者Suisse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:45:45