通过Adobe REST API导出PDF为DOCX时本地保存文件损坏问题咨询
问题原因
你观察到的响应前缀内容是标准的multipart/form-data格式分隔符和元数据:Adobe PDF导出接口在任务完成后返回的是多段式响应,第一段是JSON格式的任务状态元数据,第二段才是DOCX文件的真实二进制内容。你直接将完整响应内容写入DOCX文件,等于把边界符、JSON元数据这些无关内容也写入了文件头,最终导致文件损坏。
解决方案
你的请求参数没有问题,只需要修改响应解析和文件写入的逻辑即可,推荐用成熟的多段响应解析工具处理,避免手动拆分边界出现错误:
- 先安装依赖包:
pip install requests-toolbelt
- 替换原有文件保存逻辑:
from requests_toolbelt.multipart.decoder import MultipartDecoder # 轮询确认任务完成、拿到200响应后的逻辑 if response.status_code == 200: print('Export complete, saving file locally.') # 解析多段响应 decoder = MultipartDecoder.from_response(response) for part in decoder.parts: # 匹配到DOCX文件对应的响应段 disp_header = part.headers.get(b'Content-Disposition', b'').decode('utf-8') if docx_filename in disp_header or 'documentOut' in disp_header: # 仅写入文件对应的二进制内容 with open(docx_filename, 'wb') as f: f.write(part.content) break
如果不想引入额外依赖,也可以手动拆分响应内容:先找到第二个边界字符串的位置,跳过后续的Content-Type、Content-Disposition等头部行,取剩下的二进制内容写入文件即可,不过这种方式需要处理边界动态变化的情况,稳定性不如工具包解析。
内容的提问来源于stack exchange,提问作者Marjan Stojanov
相关产品推荐
相关产品推荐

