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

Node.js Azure Function使用pdf2pic转换PDF时出现write EOF错误如何解决

问题解决:Azure Function中pdf2pic转换PDF报EOF错误

错误原因

  • 依赖配置不匹配:已安装GraphicsMagick,但代码中gm初始化时强制启用ImageMagick模式,两者不兼容导致流写入提前中断
  • 异步逻辑未等待:async函数中调用convert.bulk()未加await,函数在转换完成前提前退出,资源被回收触发EOF
  • 临时目录权限问题:Azure Function运行环境无当前工作目录写入权限,直接使用./tmp/路径会触发写入失败

修复步骤

  1. 移除多余的gm初始化配置,或将imageMagick参数改为false匹配已安装的GraphicsMagick
  2. 给异步转换方法添加await,确保转换完成前函数不会退出
  3. 使用Azure Function系统提供的临时目录路径,若不需要生成本地临时文件可删除文件存储相关配置,直接获取转换后的buffer数据

修正后代码

const pdf2pic = require('pdf2pic');

module.exports = async function (context, pdfBuffer) {
    try {
        if (!context.bindingData.blobTrigger.toLowerCase().endsWith('.pdf')) {
            throw new Error('The uploaded file is not in PDF format')
        }
        const options = {
            format: "jpg",
            density: 100,
            width: 600,
            height: 600,
            // 若需要临时存储文件,取消下方注释使用系统临时目录
            // savePath: process.env.TEMP || '/tmp',
            // saveFilename: "tmp-file"
        };
        context.log('Converting pdf to jpg...');
        const convert = pdf2pic.fromBuffer(pdfBuffer, options);
        // 第二个参数为false表示不写入本地文件,直接返回转换结果
        const output = await convert.bulk(-1, false);
        context.log('OUTPUT:', output);
        // 此处添加将output中的buffer/base64上传到目标存储的逻辑
    }
    catch (error) {
        context.log("ERROR CONVERTING PDF:", error);
        return;
    }
};

额外验证点

  • 确认GraphicsMagick、Ghostscript的安装路径已添加到Azure Function的PATH环境变量中,运行时可正常调用两个命令行工具
  • 若使用Linux消费级计划的Azure Function,需确认运行环境已完成两个依赖的安装,没有缺失运行时库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:04