You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

使用Python调用StirlingPDF API合并PDF时遭遇Error 415错误

解决StirlingPDF API合并PDF时的415错误

错误原因

415「不支持的媒体类型」错误,提示Content-Type 'application/json' is not supported.,是因为你当前用JSON格式提交请求体,但StirlingPDF的合并PDF接口要求使用multipart/form-data格式上传文件,而非JSON。

修正后的代码

import requests

filepaths = [r"C:\Users\Public\Documents\data1.pdf",
             r"C:\Users\Public\Documents\data2.pdf"]

# 构造files参数:多个文件以列表形式传入,每个元素是(参数名, (文件名, 文件二进制流, 内容类型))
files = []
for idx, filepath in enumerate(filepaths):
    with open(filepath, 'rb') as file:
        # 文件名可以自定义,保留原文件名也可
        files.append(('fileInput', (f'data{idx+1}.pdf', file.read(), 'application/pdf')))

url = "https://stirlingpdf.io/api/v1/general/merge-pdfs"
# 非文件参数通过data传递
req_data = {"sortType": "orderProvided", "removeCertSign": False}

# 发送POST请求,同时传递files和data
response = requests.post(url, files=files, data=req_data)

# 处理响应结果
if response.status_code == 200:
    # 保存合并后的PDF文件
    with open("merged_result.pdf", 'wb') as output_file:
        output_file.write(response.content)
    print("PDF合并成功")
else:
    print(f"请求失败,状态码:{response.status_code},响应信息:{response.text}")

关键说明

  • 合并PDF接口仅接受multipart/form-data格式的请求,必须使用requests.postfiles参数传递文件,不能将二进制数据封装进JSON。
  • fileInput是接口定义的文件参数名,多个文件需以列表形式传入该参数下。
  • 排序规则、移除证书签名这类非文件参数,直接通过data参数传递即可。

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

火山引擎 最新活动