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

如何使用Node.js将base64 PNG转PDF?支持多文件批量转换吗?

Node.js 实现Base64格式PNG转PDF方案

核心能力说明

完全支持Base64格式PNG转PDF,也支持多个Base64编码PNG的批量转换,批量场景可实现两种输出:所有PNG合并为单个多页PDF、每个PNG生成独立的单页PDF。

实现准备

选用Node生态稳定的PDF生成依赖:

  • pdfkit:原生支持位图嵌入的PDF生成库,无需浏览器环境依赖
  • Node内置fs模块:完成生成文件的本地写入操作

单张Base64 PNG转PDF实现

核心逻辑

  1. 剥离Base64字符串的data:image/png;base64,固定前缀,将剩余编码内容转为二进制Buffer
  2. 初始化PDF文档实例,创建与PNG尺寸完全匹配的空白页面,避免出现多余白边
  3. 将解码得到的PNG Buffer作为图像源嵌入页面
  4. 完成文档内容写入后,将PDF流输出为本地文件

示例代码

const PDFDocument = require('pdfkit');
const fs = require('fs');

// 替换为实际使用的Base64 PNG字符串
const base64Png = "data:image/png;base64,这里替换为实际的Base64编码内容";

// 处理Base64为可识别的图像Buffer
const cleanBase64 = base64Png.replace(/^data:image\/png;base64,/, "");
const pngBuffer = Buffer.from(cleanBase64, 'base64');

// 初始化PDF,关闭自动创建的默认首页
const doc = new PDFDocument({ autoFirstPage: false });
doc.pipe(fs.createWriteStream('./single-output.pdf'));

// 新增匹配PNG尺寸的页面,嵌入图像
doc.addPage({ size: [pngBuffer.width, pngBuffer.height] });
doc.image(pngBuffer, 0, 0);

// 结束内容写入,完成PDF生成
doc.end();

多Base64 PNG批量转换实现

根据输出需求可选择两种实现模式:

模式1:所有PNG合并为单个多页PDF

遍历所有Base64 PNG条目,为每个PNG创建独立的PDF页面,最终输出单个包含所有图像的PDF文件。

const PDFDocument = require('pdfkit');
const fs = require('fs');

// 待处理的Base64 PNG数组
const base64PngArray = [
  "data:image/png;base64,xxx1",
  "data:image/png;base64,xxx2",
  "data:image/png;base64,xxx3"
];

const doc = new PDFDocument({ autoFirstPage: false });
doc.pipe(fs.createWriteStream('./combined-batch-output.pdf'));

base64PngArray.forEach(item => {
  // 逐个处理Base64解码
  const cleanBase64 = item.replace(/^data:image\/png;base64,/, "");
  const pngBuffer = Buffer.from(cleanBase64, 'base64');
  // 每个PNG占独立一页
  doc.addPage({ size: [pngBuffer.width, pngBuffer.height] });
  doc.image(pngBuffer, 0, 0);
});

doc.end();

模式2:每个PNG生成独立PDF文件

遍历Base64数组,对每个条目复用单张转换的逻辑,输出文件按序号命名(如output-1.pdf、output-2.pdf)即可,无需额外依赖。

常见踩坑提醒

  • 必须剥离Base64字符串的data:前缀,否则解码得到的Buffer是损坏的,会触发图像解析错误
  • 需要调整边距、自定义页面尺寸时,只需修改addPage的size参数和image的坐标偏移值即可
  • 避免选用仅适配浏览器环境的PDF生成库,这类库在Node环境运行会因缺失浏览器API出现兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 12:15:07