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

如何使用Node.js为PDF添加自定义元数据(AWS Lambda场景)

方案实现步骤

依赖说明

不需要替换pdf-lib库,该库底层支持直接操作PDF的Info字典添加自定义元数据,只是该功能没有放在公开的文档示例中。需要用到的依赖如下:

  • pdf-lib:核心PDF处理库
  • @aws-sdk/client-s3:AWS S3 SDK(Lambda Node.js 18+运行时自带AWS SDK v3,不需要打包到部署包)

完整实现代码

const { S3Client, GetObjectCommand, PutObjectCommand } = require("@aws-sdk/client-s3");
const { PDFDocument } = require("pdf-lib");
const s3Client = new S3Client({ region: process.env.AWS_REGION });

exports.handler = async (event) => {
  // 1. 从S3读取源PDF文件
  const getParams = {
    Bucket: "你的源存储桶名称",
    Key: "源文件路径/xxx.pdf"
  };
  const s3Response = await s3Client.send(new GetObjectCommand(getParams));
  const pdfBuffer = await s3Response.Body.transformToByteArray();

  // 2. 加载PDF并添加元数据
  const pdfDoc = await PDFDocument.load(pdfBuffer);
  // 标准元数据可继续使用官方提供的API设置
  pdfDoc.setTitle("测试文档");
  pdfDoc.setAuthor("作者名称");
  
  // 核心:直接操作Info字典添加自定义元数据
  // 自定义键行业惯例加X-前缀,避免和标准字段冲突
  pdfDoc.context.lookup(pdfDoc.trailer.get('Info')).set(
    pdfDoc.context.obj('X-Custom-Key1'),
    pdfDoc.context.obj('自定义元数据值1')
  );
  // 可重复以上逻辑添加多个自定义元数据
  pdfDoc.context.lookup(pdfDoc.trailer.get('Info')).set(
    pdfDoc.context.obj('X-Project-ID'),
    pdfDoc.context.obj('P2024001')
  );

  // 3. 保存修改后的PDF
  const modifiedPdfBytes = await pdfDoc.save();

  // 4. 写入S3生成新文件
  const putParams = {
    Bucket: "目标存储桶名称",
    Key: "目标文件路径/xxx_modified.pdf",
    Body: modifiedPdfBytes,
    ContentType: "application/pdf"
  };
  await s3Client.send(new PutObjectCommand(putParams));

  return { statusCode: 200, body: "元数据添加完成" };
};

验证方式

  • 下载生成的PDF,用Adobe Acrobat打开,进入文件属性→自定义面板即可看到添加的自定义字段
  • 用pdf-lib读取生成的PDF,通过相同的Info字典读取逻辑即可获取到自定义元数据值

Lambda环境注意事项

  • 该方案内存占用仅比原PDF文件大30%左右,128M内存的Lambda实例即可处理100M以内的PDF文件
  • 处理大文件时可调整Lambda超时时间和内存配置,内存越大处理速度越快
  • 确保Lambda执行角色配置了对应S3存储桶的s3:GetObject和s3:PutObject权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:57:03