Skip to content

PDF 相关 API

PDF 相关接口统一前缀为 /api/v1/pdf,提供 PDF 合并、拆分、压缩能力。均需要 multipart/form-data 方式上传文件。

合并 PDF

POST /api/v1/pdf/merge

将多个 PDF 文件按顺序合并为一个 PDF。

请求参数(form-data)

参数类型必填说明
file_namestring输出文件名(不含扩展名)
pdf_listfile[]要合并的 PDF 列表(可多个)

请求示例

http
POST /api/v1/pdf/merge
Content-Type: multipart/form-data

file_name=合并结果
pdf_list=@a.pdf
pdf_list=@b.pdf
pdf_list=@c.pdf

响应示例

json
{
  "output_path": "D:\\EduAssist\\output\\pdf\\...\\合并结果.pdf"
}

拆分 PDF

POST /api/v1/pdf/split

将单个 PDF 按指定的页码范围拆分成多个 PDF 文件。

请求参数(form-data)

参数类型必填说明
pdf_filefile要拆分的 PDF 文件
split_ranges_strstring拆分区间 JSON 字符串

split_ranges_str 格式

一个 JSON 数组,每个元素包含 startend(均为页码,从 1 开始):

json
[
  { "start": 1, "end": 3 },
  { "start": 5, "end": 8 }
]

校验规则

  • split_ranges_str 必须是合法的 JSON 数组,否则返回 400
  • 数组的每一项必须是字典,且必须包含 startend 键,否则返回 400

请求示例

http
POST /api/v1/pdf/split
Content-Type: multipart/form-data

pdf_file=@原文件.pdf
split_ranges_str=[{"start":1,"end":3},{"start":5,"end":8}]

响应示例

json
{
  "output_path": "D:\\EduAssist\\output\\pdf\\...\\原文件"
}

压缩 PDF

POST /api/v1/pdf/compress

压缩单个 PDF 文件,支持预设方案与高级选项覆盖。

请求参数(form-data)

参数类型必填说明
pdf_filefile要压缩的 PDF 文件
file_namestring输出文件名(不含扩展名)
presetstring压缩预设,默认 moderate
advanced_optionsstring高级选项 JSON,覆盖预设值

preset 可选值

含义
mild轻度:质量优先,略微减小体积
moderate中度:平衡质量与体积(默认)
aggressive重度:大幅压缩,适合邮件发送
extreme极度:极致压缩,适合存储空间紧张

advanced_options 格式

一个 JSON 对象,可选字段如下,用于覆盖所选预设中的对应参数:

json
{
  "stream_level": 3,
  "image_quality": 70,
  "convert_all_to_jpg": true,
  "max_dimension": 1600,
  "remove_metadata": true
}
字段类型说明
stream_levelint流压缩级别(0~3)
image_qualityint图像质量(JPEG,10~100)
convert_all_to_jpgbool是否将所有图片转为 JPG
max_dimensionint图片最长边像素上限
remove_metadatabool是否移除文档信息(作者、标题等)

校验规则

  • advanced_options 必须为合法的 JSON 对象,否则返回 400

请求示例

http
POST /api/v1/pdf/compress
Content-Type: multipart/form-data

pdf_file=@原文件.pdf
file_name=压缩结果
preset=aggressive
advanced_options={"image_quality":60,"remove_metadata":true}

响应示例

json
{
  "output_path": "D:\\EduAssist\\output\\pdf\\...\\压缩结果.pdf"
}
最近更新