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

使用Amazon S3 Object Lambda添加水印时PDF文件损坏问题

解决S3 Object Lambda返回水印PDF损坏的问题

你的代码生成水印PDF的逻辑没问题(保存回S3能正常打开),问题出在write_get_object_response的响应处理上,给你两个修复方案:

方案1:传递字节内容而非BytesIO对象

boto3的这个API对BytesIO流的处理偶尔会出问题,把流读成字节串再传:

# 修改write_get_object_response调用部分
s3.write_get_object_response(
    Body=transformed_object.read(),  # 读取流的字节内容
    RequestRoute=request_route,
    RequestToken=request_token,
    ContentType='application/pdf'  # 必须指定PDF的内容类型
)

方案2:添加Content-Type响应头

浏览器需要明确知道返回的是PDF文件,不加这个头会导致解析错误,哪怕用BytesIO也得加上:

s3.write_get_object_response(
    Body=transformed_object,
    RequestRoute=request_route,
    RequestToken=request_token,
    ContentType='application/pdf'
)

额外要检查的地方

  • 确认水印PDF是有效的单页文件,别用水印本身就损坏的文件
  • 把Lambda里的PyPDF4更新到最新稳定版,旧版本可能存在流处理bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:13:18