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

AWS Lambda生成PDF无法在Postman正常显示问题求助

问题分析与解决建议

核心问题1:AWS Lambda 二进制响应配置缺失

你使用aws-serverless-express但未配置允许二进制响应类型,Lambda会默认将二进制数据编码为Base64,导致下载的PDF文件损坏,触发格式无效提示。

解决步骤:

  • 若使用Serverless Framework:在serverless.yml中添加二进制媒体类型配置:
provider:
  apiGateway:
    binaryMediaTypes:
      - 'application/pdf'
  • 若直接在AWS控制台配置:
    1. 进入API Gateway控制台,找到目标API
    2. 切换到「Settings」选项卡,在「Binary Media Types」中添加application/pdf
    3. 重新部署API
  • 调整Express响应发送逻辑:将Uint8Array转换为Buffer后发送,适配aws-serverless-express的处理规则:
// 替换原有的res.send(pdfBytes)
res.status(200).send(Buffer.from(pdfBytes));

核心问题2:pdf-lib 使用错误

你直接将HTML字符串传给drawText方法,但pdf-lib的drawText仅支持纯文本渲染,它会把完整的HTML标签(如<h1>)当作普通文本绘制到PDF中,无法实现HTML转PDF的预期效果。

修正方案:

你的package.json已包含chrome-aws-lambda,可以用它实现可靠的HTML转PDF,示例代码如下:

const chromium = require('chrome-aws-lambda');

exports.getAll = async (req, res) => {
    try {
        const htmlContent = '<html><body><h1>Hello World</h1></body></html>';
        
        // 启动无头Chrome
        const browser = await chromium.puppeteer.launch({
            args: chromium.args,
            defaultViewport: chromium.defaultViewport,
            executablePath: await chromium.executablePath,
            headless: chromium.headless,
        });

        const page = await browser.newPage();
        await page.setContent(htmlContent);
        
        // 生成PDF
        const pdfBytes = await page.pdf({
            format: 'A4',
            printBackground: true
        });

        await browser.close();

        res.setHeader('Content-Type', 'application/pdf');
        res.setHeader('Content-Disposition', 'inline; filename=hello_world.pdf');
        res.status(200).send(Buffer.from(pdfBytes));
        
    } catch (error) {
        console.error('Error:', error);
        res.status(500).json({ error: 'Internal Server Error' });
    }
};

额外验证步骤

  1. 部署修改后的代码后,先在Lambda控制台测试,确认返回的响应为二进制数据
  2. Postman测试时,确保请求头未强制设置Accept: application/json,保持默认或设置Accept: application/pdf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:32:16