nodejs 实现pdf与图片互转

PDF转图片

效果图
代码
javascript 复制代码
const path = require('path');  
const pdf = require('pdf-poppler');  
const fs = require('fs');  
  
// PDF文件路径  
const pdfFilePath = './path/test.pdf';  
  
// 转换选项  
const opts = {  
  format: 'png', // 输出图片格式,可以是 'jpeg', 'png', 'ppm', 'tiff', 'xps', 'xml', 'xps1', 'xps2' 等  
  out_dir: './path/output', // 输出目录  
  out_prefix: 'outputImg', // 输出文件的前缀  
  page: null // 要转换的页码,可以是具体的页码或者一个页码范围,例如 [1, 3, 5] 或者 '1-5'  
};  
  
// 转换PDF为图片  
pdf.convert(pdfFilePath, opts)  
  .then(res => {  
    console.log('Successfully converted:', res);  
    // res 是一个包含转换后图片文件路径的数组  
    // 例如:['./output/output-1.jpeg', './output/output-2.jpeg']  
  })  
  .catch(error => {  
    console.error('Error converting PDF to images:', error);  
  });

图片转PDF

效果图如下
代码:
javascript 复制代码
const PDFDocument = require('pdfkit');  
const fs = require('fs');  
const path = require('path');  
  
// 创建一个PDF文档  
const doc = new PDFDocument();  
  
// 设置文档元数据(可选)  
doc.info.title = 'My Image to PDF';  
  
// 将PDF文档流写入一个文件  
const outputStream = fs.createWriteStream(path.resolve('./path/output/output.pdf'));  
doc.pipe(outputStream);  
  
// 将图片添加到PDF文档中  
doc.image('./path/zgr.jpg', {  
  width: 500, // 设置图片宽度  
  height: 300, // 设置图片高度  
  fit: [500, 300] // 或者使用fit来适应指定尺寸  
});  
  
// 结束文档并关闭流  
doc.end();  
  
outputStream.on('finish', () => {  
  console.log('PDF生成完成');  
});  
  
outputStream.on('error', (err) => {  
  console.error('PDF生成出错:', err);  
});
相关推荐
To_OC3 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
excel5 小时前
研究 Vue 3 源码的收获
前端·vue.js
可乐鸡翅yeah_7 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx7 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师7 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
前端snow8 小时前
ai agent --- 异步处理之 Rabbit MQ
前端
念何架构之路8 小时前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他8 小时前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
HaipengYu8 小时前
深度解密 OpenCode 2 插件加载机制:Dual-Version (V1/V2) 适配实战与官方文档的“隐形陷阱”
node.js
mantou1328 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端