按购买渠道选择接口参考

文档转 PDF

Office、图片等文件转 PDF,以及合并、拆分、页面整理、内容叠加等文件操作。

选择购买渠道

不同渠道的主机、认证、请求字段和接口版本独立。请在当前渠道内查阅和复制示例。

阿里云接口参考

V2 转换接口 · V1 兼容接口

本渠道认证说明

概述

使用流程

由于转换需要时间,文件越大页数越多,转换越久,故默认采用异步的方式获得转换结果。即调用转换接口后会获得token,随后有2种方式查询转换结果:

  1. 定时轮询结果,调用“查询结果接口”。详细见:查询结果
  2. 回调,设置callbackurl,当转换结束后,系统会回调该URL直接推送转换结果。详细见:回调URL

调用转换接口

v1和v2接口功能相同,调用方式不一样。v2支持同步转换,v1不支持,推荐用v2接口。

v2接口统一为HTTP POST JSON:

  • JSON支持输入:文件url;文件Base64字符串;多张图片的url。见:文档转换_v2
  • v2版本的API除了异步,还支持同步调用,见:同步调用
  • v2版本中的参数如果未出现在v1版本中,v1版本用同样参数也能工作

v1接口包括3种转换方式:

  • 单一文档转为PDF,文档是一个下载链接,用HTTP GET方式,见:文档转换GET_v1
  • 单一文档转为PDF,文档POST到服务器,用HTTP POST Form Data方式,见:文档转换POST_v1
  • 多个图片转为PDF,文档是多个下载链接,用HTTP POST JSON方式,见:多张图片转换POST_v1

调用文件操作接口

  • 文件操作接口v1和v2类似,v2支持同步和异步,v1只支持异步。见文件操作

调用转换API需要签名,详细见文档附录:阿里签名 调用查询结果API无需签名。


阿里云支持从OSS内网直接下载文件,节约流量,见:阿里云独有部分

文档转换_v2

异步url:

https://doc2pdf.market.alicloudapi.com/v2/convert_async

同步url:

https://doc2pdf.market.alicloudapi.com/v2/convert_sync

HTTP方式: POST

Header中的Content-Type传入application/json

Body是JSON格式,支持以下3种输入源文件的方法:

方法1: 文件url,最大1500M:

{"input": ["http://xxx.docx"]}

方法2: 文件Base64字符串,注意需要传入type(源文档类型),Base64字符串最大8M:

{"input": ["base64字符串"], "type": "docx"}

方法3: 多张图片url,注意只能是图片:

{"input": ["http://xxx.jpg", "http://xxx.png"]}

必须签名才能调用成功,签名见阿里签名规则:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

支持以下源文件格式:

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本
网址网页 url 网址,例如:https://www.duhuitech.com

自定义参数:


参数 类型 备注 默认值
type string 要转换的原始文件扩展名,如果不传,则取url中的扩展名,注意如果无法获取扩展名会导致转换异常或出错 空
输出PDF相关
linearization int 是否需要快速web显示(PDF流式显示),默认0否,1是 0
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 0
flatten int 是否扁平化(注释合并到PDF),默认0否,1是 0
imagepdf int 生成图片PDF,默认0否,1是 0
pagesize int

设定页面大小。

如果源文件是Word,TXT,Excel,HTML,Epub此参数会覆盖excelpagesize。默认0:源文档设定值,如无则是A4。

如果源文件是图片,默认0:长图保持原图大小,非长图A4,原图不满A4大小的保持原图大小。

取值:1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger

0
adjustorientation int 调整所有页横屏或是竖屏。默认0不调整。
1: 竖屏,如果页面横屏则顺时针90度变竖屏
2: 竖屏,如果页面横屏则逆时针90度变竖屏
3: 横屏,如果页面竖屏则顺时针90度变横屏
4 :横屏,如果页面竖屏则逆时针90度变横屏
0
pagesplit int 将每一页按长边等分为多页。例如一页是试卷,可以分为左右二页。默认0不分页,2: 分2页,3: 分3页 0
needpagesizeinfo int 是否返回每一页的大小信息,默认0:否,1:是 0
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 空
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 空
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 空
pdffilename string 生成的PDF文件的文件名,默认随机 空
输出水印相关
watermark string 添加水印,字符个数最大15个 空
watermarkfontsize int 水印的字体大小,默认24pt 24
watermarkfontcolor string 水印的颜色,输入颜色码,默认黑色#000000,必须7位 #000000
watermarkfontalpha int 水印的透明度,取值范围1-100,越小越透明,默认20 20
watermarkstyle int 水印的样式,默认0:文档中央一个水印;1: 文档铺满水印 0
输入Office文件相关(源文件为Word,PPT,Excel,WPS等)
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 0
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 0
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 0
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 0
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 0
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 0
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 0
excelpagefitmode int 如果是 Excel 文件,页面缩放方式:0 默认(不使用打印区域时将所有列调整为一页宽;使用打印区域时沿用源文件缩放);1 将所有列调整为一页宽;2 将每张工作表调整为一页;3 将所有行调整为一页高;4 无缩放,按 100% 比例输出。设置为 1、2、3、4 时,与 exceluseprintarea=1 同时使用仍会保留打印区域 0
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 0
powerpointoutputtype int 如果是PPT文件,设定导出样式,默认幻灯片。0:幻灯片,0以上是讲义模式:1:每页一个幻灯片,2:每页二个幻灯片,3:每页三个幻灯片,4:每页四个幻灯片,5:每页六个幻灯片,6:每页九个幻灯片 0
powerpointhandoutorder int 如果是PPT文件,当设置为讲义时,设定顺序,默认0水平,1垂直 0
powerpointhandoutorientation int 如果是PPT文件,当设置为讲义时,输出文件的方向,默认0不改变,1横向,2纵向 0
pageorientation int 如果是Word,TXT,Excel,HTML,设定页面横向还是竖向,此参数会覆盖excelislandscape。默认0不变,1横向,2 竖向 0
输入图片,扫描版PDF相关(源文件jpg,png,pdf等)
ocr int 是否识别图中文字或扫描版PDF文字,在输出的PDF中变为可选可搜索的文字,默认0否,1是 0
language int 如果开启OCR,识别语言选项,默认2简体中文:
1:英语
2:简体中文
3:繁体中文
4:法语
5:德语
6:意大利语
7:俄语
8:日文
9:韩文
10:西班牙语
11:葡萄牙语
12:丹麦语
13:荷兰语
14:芬兰语
15:挪威语
16:瑞典语
17:土耳其语
2
dewarp int 是否切边矫正,默认0否,1是。如果打开,每次只允许传入一张图(图片分辨率短边大于20,长边小于10000) 0
deskew int 是否将斜的文字矫正,默认0否,1是 0
clean int 是否清除图像背景只显示文字,默认0否,1是 0
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 0
text int 如果开启ocr,是否使用矢量文字替换图片内文字,使得即使图片中的文字模糊,pdf放大后文字仍然清晰。默认0否,1是 0
split2p int 如果开启ocr,横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 0
imagesize int 统一每页为固定宽,默认0否,输入数字即每页宽度,最大4096。设置该值将导致pagesize失效。 0
网址网页相关(type传url, html, md等)
ismobileurl int 如果type是url,html,md,是否移动端显示。默认0:桌面端网页,1:移动端网页 0
urldesktopwidth int 如果type是url,html,md,桌面端显示。设定网页最大的宽度,默认:1440,最大:1920 0
htmlpagemargin string 如果type是url,html,md,生成的页面边距。输入的是字符串,按照顺序:left top right bottom。单位可以是:px,in,cm,mm。例如左上右下分别是1px,2px,3px,4px,传的字符串就是:1px 2px 3px 4px。默认值:左右0,上下各1cm 空
urlwait int 如果type是url,停留一段时间再抓取页面,单位秒。默认0:不停留,最大30。比如10就是延迟10秒 0
urltimeout int 如果type是url,加载资源的超时时间。默认0:40秒,最大120秒。比如10就是10秒 0
urlonepage int 如果type是url,html,md,是否生成单页的长PDF。默认0:否, 1:是。注意打开这个选项后htmlpagemargin失效 0
markdownTheme string 仅当输入为 Markdown 时,设置 Markdown 渲染主题。可选值:monet(莫奈)、vangogh(梵高)、rembrandt(伦勃朗)、vermeer(维米尔)、picasso(毕加索)、kandinsky(康定斯基)、davinci(达·芬奇) 不传或传空时使用默认样式
输入网页HTML相关(源文件HTML)
htmloutline int 如果是HTML,是否根据h1,h2等html标记生成outline,默认0否,1是 0
输入EPUB相关(type传epub等)
epubfontsize int 如果type是epub等,输出的字体大小(单位pt,磅)。默认0自动 0
epublineheight int 如果type是epub等,输出的行高(单位百分比)。例如120表示行高是字体大小的120%。默认0自动 0
epubpagesize string 如果type是epub等,输出的页面自定义大小(单位厘米)。此参数如果设置会覆盖pagesize。默认空自动。例如7.2x15.5 空
epubmargin string 如果type是epub等,输出的页面边距(单位pt,磅)。默认空自动。页边距格式:左 上 右 下,用空格分隔。例如5 5 5 5 空
输入CAD文件相关(源文件dwg, dwf等)
cadlayer int 如果是CAD文件,是否生成Layer层,默认0否,1是 0
cadisdisplay int 如果是CAD文件,是否按照Display显示,默认0不按照,1按照Display 0
cadquality int 如果是CAD文件,生成的文件品质,默认3。取值从1-5品质从低到高。 3
caddetectempty int 如果是CAD文件,是否删除空页,默认0不删除,1删除。 0
其他
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 空
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 空

请求示例:

  • 例1: 把word文件转为PDF,并设置1级压缩
{"input": ["http://xxx.docx"], "compress":1}
  • 例2: 把2张图片转为PDF,并识别图中文字,去除图片,转为矢量文字可选的PDF
{"input":["http://xxx.jpg", "http://xxx.png"], "ocr":1, "clean":1, "text":1}
  • 例3: 把Excel文件转为PDF,并只包含有内容的单元格,加上水印"度慧科技",设置PDF打开密码为123
{"input":["http://xxx.xlsx"], "exceluseprintarea":2, "watermark":"度慧科技", "userpassword":"YOUR_PASSWORD"}
  • 例4: 把 Excel 文件转为 PDF,并将每张工作表调整为一页
{"input":["http://xxx.xlsx"], "excelpagefitmode":2}

返回数据结构【异步】:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态)【异步】:

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态)【异步】:

{
	"code":40001,
	"msg":"ParmNotRight"
}

同步调用

同步调用的最大返回时间是60秒,如果60秒内转换结束则直接返回结果。否则会返回token,之后和异步方式一样可以调用查询结果接口查询该token的转换结果。所以同步调用如果传入的文件过大,无法保证在60秒内结束,则转为异步流程。

返回数据结构【同步】:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
token string 是 请求的token
result Dictionary 否 成功后返回

result:

名称 含义 类型 是否必须返回 备注
pdfurl pdf文件地址 string 否(status为Done时返回) 转换出来的PDF地址,http和https都支持
count 总页数 integer 否(status为Done时返回) PDF页面总数
filesize 文件大小 integer 否(status为Done时返回) PDF文件大小
status 状态 string 是 Done:转换成功
Failed:转换失败

返回示例(成功状态)【同步】:

{
	"code": 10000,
	"msg": "",
	"result": {
		"count": 1,
		"filesize": 17747,
		"pdfurl": "https://file.duhuitech.com/o/xxx/xxx.pdf",
		"status": "Done"
	},
	"token": "YOUR_CREDENTIAL"
}

返回示例(超时状态)【同步】:

{
	"code": 40500,
	"msg": "Timeout, query token later",
	"token": "YOUR_CREDENTIAL"
}

文件操作_v1/v2

v1和v2的文件操作功能基本相同,共用以下action、请求参数和示例。区别仅在调用入口和返回方式:

  • v1请求url是 https://doc2pdf.market.alicloudapi.com/v1/pdfaction,仅支持异步调用
  • v2请求url分为异步和同步:异步是 https://doc2pdf.market.alicloudapi.com/v2/action_async,同步是 https://doc2pdf.market.alicloudapi.com/v2/action_sync
  • v2同步调用最多等待60秒,超时后会返回token,转入和异步相同的查询结果流程,详细见 同步调用
  • 下面的action说明、JSON Body参数和示例,v1/v2通用

支持以下操作:

类型 操作
文件处理 文件合并、文件拆分、转为图片PDF、文件修复、文件扁平化、文件线性化、PDF压缩、PDF净化、PDF灰度化
内容叠加与排版 图片签名、文件加水印、文件去水印、PDF前景叠加、PDF背景叠加、页眉页脚、页面加页码、PDF多页拼版 / n-up、PDF小册子排版
页面处理 页面删除、页面插入、页面提取、页面重排、页面倒序、页面复制、空白页插入、自动删除空白页、页面旋转、PDF裁边、PDF页数查询、PDF页面信息
内容提取与结构 提取图片、PDF文本提取、PDF元数据读取/修改、PDF目录导出、PDF目录导入
安全与权限 文件加密、文件解密、文件是否加密

POST Body传入JSON,Header中的Content-Type传入application/json

通过指定action,对PDF文件进行不同的操作,详细如下:

文件处理

  • 文件合并:

专属参数:无。

示例:

{"action":"merge","url":["https://xxx/xxx.pdf", "https://xxx/xxx.pdf"]}

会合并为一个PDF文件。url数组需传2个以上PDF地址。

  • 文件拆分:

支持的专属参数:splitcount(按固定页数拆分)、pageranges(按多个页段拆分,使用竖线分隔;和 splitcount 同时传时优先按 splitcount)。

参数 类型 备注 是否必须发送
splitcount number 按固定页数拆分;和 pageranges 同时传时优先按本参数处理 条件必传
pageranges string 按多个页段拆分,使用竖线分隔,如 `1-3 4-10

示例:

{"action":"split","url":["https://xxx/xxx.pdf"],"splitcount":2}

会把PDF拆分为多个PDF,每个PDF是2页。

{"action":"split","url":["https://xxx/xxx.pdf"],"pageranges":"1-3|4-10|11-12"}

会按 pageranges 指定的页段拆分为多个PDF,依次输出为1.pdf、2.pdf、3.pdf。

pdffilename 不支持;拆分结果文件会按 1.pdf、2.pdf、3.pdf 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.pdfurls string数组 拆分后 PDF 地址数组,按输出顺序返回
result.count number 拆分后 PDF 数量

返回结果示例:

{"result":{"status":"done","count":3,"pdfurls":["https://file.duhuitech.com/o/xxx/1.pdf","https://file.duhuitech.com/o/xxx/2.pdf","https://file.duhuitech.com/o/xxx/3.pdf"]}}
  • 转为图片PDF:

支持的专属参数:compress(可选,默认0不压缩)。

参数 类型 备注 是否必须发送
compress number 压缩等级;可选,默认 0 不压缩 否

示例:

{"action":"imagepdf","url":["https://xxx/xxx.pdf"],"compress":2}

会把PDF每一页转成图片后再重新生成一个图片型PDF。

  • 文件修复:

专属参数:无。

示例:

{"action":"repairpdf","url":["https://xxx/xxx.pdf"]}

会尝试修复PDF结构问题,并输出修复后的PDF。

  • 文件扁平化:

专属参数:无。

示例:

{"action":"flatten","url":["https://xxx/xxx.pdf"]}

会把PDF中的批注等可交互内容扁平化到页面内容里。

  • 文件线性化:

专属参数:无。

示例:

{"action":"linearize","url":["https://xxx/xxx.pdf"]}

会把PDF做快速网页预览优化。

  • PDF压缩:

支持的专属参数:compress(必传,支持1、2、3,也支持直接传目标图片分辨率)。

参数 类型 备注 是否必须发送
compress number 压缩等级;支持 1、2、3,也支持直接传目标图片分辨率 是

示例:

{"action":"compresspdf","url":["https://xxx/xxx.pdf"],"compress":2}

压缩PDF;如果压缩结果不比原文件更小,会保留较小版本输出。

  • PDF净化:

专属参数:无。

示例:

{"action":"pdfsanitize","url":["https://xxx/xxx.pdf"]}

会重写PDF结构并清空常见元数据字段,输出净化后的PDF。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 净化后 PDF 地址
result.count number 净化后 PDF 总页数
result.data object 净化后的元数据对象;字段结构与 pdfmeta 读取返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/sanitize.pdf","data":{}}}
  • PDF灰度化:

专属参数:无。

示例:

{"action":"grayscale","url":["https://xxx/xxx.pdf"]}

会把PDF转换为灰度版,并输出新的PDF。

内容叠加与排版

  • 图片签名:

支持的专属参数:pageindex(签名页码)、stampurl(签名图片地址)、stamprect(签名位置和大小,格式 x,y,width,height)。

参数 类型 备注 是否必须发送
pageindex number 签名页码,示例为第 1 页 是
stampurl string 签名图片 URL 是
stamprect string 签名位置和大小,格式 x,y,width,height,单位像素 是

示例:

{"action":"stampsignature","url":["https://xxx/xxx.pdf"],"pageindex":1,"stampurl":"http://xxx/xxx.png","stamprect":"10,10,100,50"}

会把PDF的第一页加上图片签名,签名位置在x=10,y=10,宽度=100,高度=50,单位像素。

  • 文件加水印:

支持的专属参数:watermark、watermarkstyle、watermarkfontsize、watermarkfontcolor、watermarkfontalpha。

参数 类型 备注 是否必须发送
watermark string 水印文字内容 是
watermarkstyle number 水印样式编号 按需
watermarkfontsize number 水印字体大小 按需
watermarkfontcolor string 水印字体颜色,格式如 #000000 按需
watermarkfontalpha number 水印透明度 按需

示例:

{"action":"watermark","url":["https://xxx/xxx.pdf"],"watermark":"CONFIDENTIAL","watermarkstyle":1,"watermarkfontsize":24,"watermarkfontcolor":"#000000","watermarkfontalpha":20}

会给PDF每一页添加文字水印。

  • 文件去水印:

专属参数:无。

示例:

{"action":"removewatermark","url":["https://xxx/xxx.pdf"]}

会尝试移除PDF中的水印内容,并输出新的PDF。

  • PDF前景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"overlaypdf","url":["https://xxx/base.pdf","https://xxx/overlay.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做前景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为前景叠加到第1个PDF上,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • PDF背景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"underlaypdf","url":["https://xxx/base.pdf","https://xxx/background.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做背景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为背景叠加到第1个PDF下方,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • 页眉页脚:

支持的专属参数:data.header、data.footer、data.fontsize、data.fontcolor、data.fontalpha。

参数 类型 备注 是否必须发送
data.header string 页眉文字;和 data.footer 至少传一个 条件必传
data.footer string 页脚文字;和 data.header 至少传一个 条件必传
data.fontsize number 文字大小 按需
data.fontcolor string 文字颜色,格式如 #333333 按需
data.fontalpha number 文字透明度 按需

示例:

{"action":"headerfooter","url":["https://xxx/xxx.pdf"],"data":{"header":"Confidential","footer":"第 {{page}} / {{total}} 页","fontsize":12,"fontcolor":"#333333","fontalpha":80}}

会给每一页叠加文字页眉页脚。

  • 页面加页码:

专属参数:无。

示例:

{"action":"pageaddnumber","url":["https://xxx/xxx.pdf"]}

会把PDF每一页右下角添加页码。

  • PDF多页拼版 / n-up:

支持的专属参数:data.nup、data.paper、data.landscape、data.frame、data.scale。

参数 类型 备注 是否必须发送
data.nup string 每张输出纸放几页;格式为 列x行,如 2x1、2x2、3x2。2x1 表示一张纸放 2 页,2x2 表示一张纸放 4 页 是
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向。横向通常更适合 2x1、2x2 这类布局 按需
data.frame number 是否给每个小页面画边框。1 表示画边框,方便区分每个子页;省略或 0 表示不画 按需
data.scale number 每个小页面的缩放比例,必须大于 0。常用 0.9 到 1.0;数值越小,页面四周留白越多 按需

常见纸张说明:

  • a4paper:最常见的办公打印纸;如果不确定,优先用它。
  • a3paper:比 A4 更大,适合一次拼更多页。
  • a5paper:比 A4 更小,适合输出更小的页面。
  • letterpaper:北美常见纸型。
  • legalpaper:比 letterpaper 更长,常用于合同、表格。

示例 1:一张纸放 4 页,适合做讲义或速读版

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a4paper","landscape":1,"frame":1,"scale":0.95}}

示例 2:一张纸放 2 页,保留更大的阅读字号

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x1","paper":"a4paper"}}

示例 3:放到更大的纸上,减少内容拥挤

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a3paper","scale":0.9}}

这个操作会把多页 PDF 重新排到一张纸上。原文件里的超链接、书签、表单等交互信息可能不会保留。

  • PDF小册子排版:

支持的专属参数:data.paper、data.landscape、data.scale、data.signature、data.flipotheredge。

参数 类型 备注 是否必须发送
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向;做双面打印小册子时,横向纸面通常更常见 按需
data.scale number 页面缩放比例,必须大于 0。常用 0.9 到 1.0;如果担心装订后内容太靠边,可以适当调小 按需
data.signature number 每个装订单元包含多少页,必须是 4 的倍数,如 4、8、16、32。省略时会把整份文件当成一个完整小册子自动排版 按需
data.flipotheredge number 是否切换双面打印的翻页边。1 表示开启;如果你试打后发现背面上下颠倒,可以尝试开启这个参数 按需

signature 可以简单理解为“分几本小册子来装订”:

  • signature=16:每 16 页做成一个装订单元。
  • signature=32:每 32 页做成一个装订单元。
  • 不传:整份 PDF 当成一个小册子,系统会自动补空白页到 4 的倍数。

示例 1:整份 PDF 直接做成一本小册子

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper"}}

示例 2:每 16 页做一个装订单元,适合页数较多的文档

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1,"scale":0.95}}

示例 3:如果双面打印背面方向不对,可尝试切换翻页边

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1}}

这个操作会按小册子阅读顺序重新排页,并在需要时自动补空白页,适合双面打印后对折装订。原文件里的超链接、书签、表单等交互信息可能不会保留。

页面处理

  • 页面删除:

支持的专属参数:pageindexes(要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排)。

参数 类型 备注 是否必须发送
pageindexes string 要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排 是

示例:

{"action":"pageremove","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页删除;若传入 3,1 或 1,3,4-5,也是按页码集合选中后删除,不会因为输入顺序改变删除逻辑。

  • 页面插入:

支持的专属参数:pageindex(插入位置)、pageinserturl(插入的PDF地址)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;示例为在第 1 页后插入 是
pageinserturl string 待插入 PDF 的 URL 是

示例:

{"action":"pageinsert","url":["https://xxx/xxx.pdf"],"pageindex":1,"pageinserturl":"https://xxx/xxx.pdf"}

会在PDF的第一页后面插入 pageinserturl 这个地址的PDF。

  • 页面提取:

支持的专属参数:pageindexes(要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出)。

参数 类型 备注 是否必须发送
pageindexes string 要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出 是

示例:

{"action":"pageextract","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页提取出来作为一个PDF文件;也支持如 3,1,2,5-6 这样的页序写法。

  • 页面重排:

支持的专属参数:pageindexes(最终页序,支持乱序、范围和列表/区间混合)。

参数 类型 备注 是否必须发送
pageindexes string 最终页序,支持乱序、范围和列表/区间混合 是

示例:

{"action":"pageorder","url":["https://xxx/xxx.pdf"],"pageindexes":"3,1,2,5-6"}

会按给定顺序重新生成一个PDF文件。

  • 页面倒序:

专属参数:无。

示例:

{"action":"pagereverse","url":["https://xxx/xxx.pdf"]}

会把PDF所有页面整体倒序输出。

  • 页面复制:

支持的专属参数:pageindexes(可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合 否

示例:

{"action":"pageduplicate","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3,5-6"}

会在原页面后面插入对应页面副本;若传入 3,1,仍按原PDF页序在第1页、第3页后插入副本。

  • 空白页插入:

支持的专属参数:pageindex(插入位置,0表示插到第一页前)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;0 表示插到第一页前 是

示例:

{"action":"blankpageinsert","url":["https://xxx/xxx.pdf"],"pageindex":2}

会在第2页后插入1个同尺寸空白页。

  • 自动删除空白页:

专属参数:无。

示例:

{"action":"removeblankpages","url":["https://xxx/xxx.pdf"]}

会自动识别接近纯白的页面并删除,适合扫描件里的空白隔页清理。

  • 页面旋转:

支持的专属参数:pagerotateangle(旋转角度)、pageindexes(可选,按原PDF页序筛选指定页面)。

参数 类型 备注 是否必须发送
pagerotateangle number 旋转角度,如 90 是
pageindexes string 可选;仅按原PDF页序筛选并旋转指定页面,支持区间组合 否

示例:

{"action":"pagerotate","url":["https://xxx/xxx.pdf"],"pagerotateangle":90,"pageindexes":"2,4-6"}

会把PDF整本或指定页面按给定角度旋转;若传入 3,1,会旋转第1页和第3页,但不会重排页面。

  • PDF裁边:

支持的专属参数:pageindexes、data.left、data.right、data.top、data.bottom。

参数 类型 备注 是否必须发送
pageindexes string 需要裁边的页码范围,支持区间组合;按原PDF页序处理选中页 按需
data.left number 左边裁剪量 按需
data.right number 右边裁剪量 按需
data.top number 上边裁剪量 按需
data.bottom number 下边裁剪量 按需

示例:

{"action":"pdfcrop","url":["https://xxx/xxx.pdf"],"pageindexes":"2-10","data":{"left":18,"right":18,"top":24,"bottom":24}}

会按统一边距修改选中页面的CropBox,并输出新的pdfurl。pageindexes 仅用于筛选要裁边的页面,不会因为输入顺序而重排页面。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 裁边后 PDF 地址
result.count number 裁边后 PDF 总页数
result.data object 裁边后整份 PDF 的页面信息;结构与 pageinfo 返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/crop.pdf","data":{"uniform":true,"pages":[{"page":1,"width":559.28,"height":805.89,"orientation":"portrait"}]}}}
  • PDF页数查询:

专属参数:无。

示例:

{"action":"pagecountinfo","url":["https://xxx/xxx.pdf"]}

会只查询PDF页数。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数

返回结果示例:

{"result":{"status":"done","count":12}}
  • PDF页面信息:

支持的专属参数:pageindexes(可选;不传返回全部页面,传则按原PDF页序返回指定页)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传返回全部页面,传则按原PDF页序返回指定页 否

示例:

{"action":"pageinfo","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3-4"}

会返回每一页的宽高和横竖版信息;若传入 3,1,返回结果仍按第1页、第3页的原PDF页序排列。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number 返回的页面条数;不传 pageindexes 时等于 PDF 总页数
result.data.uniform boolean 返回页面尺寸是否全部一致
result.data.pages array 页面信息数组,按原 PDF 页序返回
result.data.pages[].page number 页码,从 1 开始
result.data.pages[].width number 页面宽度,单位 pt
result.data.pages[].height number 页面高度,单位 pt
result.data.pages[].orientation string 页面方向:portrait、landscape 或 square

返回结果示例:

{"result":{"status":"done","count":3,"data":{"uniform":false,"pages":[{"page":1,"width":595.28,"height":841.89,"orientation":"portrait"},{"page":3,"width":841.89,"height":595.28,"orientation":"landscape"},{"page":4,"width":595.28,"height":595.28,"orientation":"square"}]}}}

内容提取与结构

  • 提取图片:

专属参数:无。

示例:

{"action":"extractimg","url":["https://xxx/xxx.pdf"]}

会把PDF里的图片提取出来。

pdffilename 不支持;导出的图片文件会按 1.png、2.png 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.imageurls string数组 提取出的图片地址数组,按输出顺序返回
result.count number 提取出的图片数量

返回结果示例:

{"result":{"status":"done","count":2,"imageurls":["https://file.duhuitech.com/o/xxx/1.png","https://file.duhuitech.com/o/xxx/2.png"]}}
  • PDF文本提取:

支持的专属参数:pageindexes、outfilename、data.textwithformat、data.textperpage。

参数 类型 备注 是否必须发送
pageindexes string 需要提取文字的页码范围,支持区间组合、乱序和列表/区间混合;会先按给定页序筛页,再提取文字 按需
outfilename string 输出文件名;默认随机 按需
data.textwithformat number 是否尽量保留排版信息;1 表示保留 按需
data.textperpage number 是否按页拆分输出;1 表示每页单独输出并打包 按需

示例:

{"action":"extracttext","url":["https://xxx/xxx.pdf"],"pageindexes":"1-3","outfilename":"chapter1","data":{"textwithformat":1,"textperpage":1}}

会提取PDF文字内容;默认输出一个txt文件,textperpage 为1时输出按筛选后页序分拆的zip文件。

pdffilename 不适用,请使用 outfilename 控制输出文件名前缀。

返回结果重点字段:

字段 类型 说明
result.fileurl string 提取结果文件地址;可能是 txt,也可能是按页拆分后的 zip
result.count number 实际提取的页数;不传 pageindexes 时等于 PDF 总页数
result.filesize number 输出文件大小

返回结果示例:

{"result":{"status":"done","count":3,"filesize":2048,"fileurl":"https://file.duhuitech.com/o/xxx/chapter1.zip"}}
  • PDF元数据读取/修改:

支持的专属参数:meta.title、meta.author、meta.subject、meta.keywords、meta.creator、meta.producer。

参数 类型 备注 是否必须发送
meta.title string PDF 标题 按需
meta.author string PDF 作者 按需
meta.subject string PDF 主题 按需
meta.keywords string PDF 关键词 按需
meta.creator string 生成工具 按需
meta.producer string 生产程序 按需

示例:

{"action":"pdfmeta","url":["https://xxx/xxx.pdf"],"meta":{"title":"Quarterly Report","author":"Duhui"}}

不传 meta 时会读取当前PDF的常用元数据;传 meta 时会更新对应字段并返回新的pdfurl和更新后的data。

读取模式下 pdffilename 不适用;写入模式下支持 pdffilename。

返回结果重点字段:

字段 类型 说明
result.data object 元数据对象
result.data.title string 标题,存在时返回
result.data.author string 作者,存在时返回
result.data.subject string 主题,存在时返回
result.data.keywords string 关键词,存在时返回
result.data.creator string 生成工具,存在时返回
result.data.producer string 生产程序,存在时返回
result.data.creationdate string 创建时间,存在时返回
result.data.moddate string 修改时间,存在时返回
result.data.tagged string 是否带标签,存在时返回
result.data.encrypted string 是否加密,存在时返回

返回结果示例(读取):

{"result":{"status":"done","count":12,"data":{"title":"Quarterly Report","author":"Duhui","creator":"Word","producer":"Skia/PDF m123"}}}

更新模式下,返回结果会额外包含 result.pdfurl。

  • PDF目录导出:

专属参数:无。

示例:

{"action":"outlineexport","url":["https://xxx/xxx.pdf"]}

会读取PDF目录书签。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数
result.data.named_dests object 命名目标映射
result.data.outline array 目录树数组
result.data.outline[].title string 目录标题
result.data.outline[].dest.page_index number 目标页索引,从 0 开始
result.data.outline[].dest.dest array 目标定位参数,如 ["/Fit"]
result.data.outline[].kids array 子目录数组;没有子目录时可省略

目录节点还可能包含 dest_name、color、flags、count、is_open 等可选字段。

返回结果示例:

{"result":{"status":"done","count":12,"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]},"kids":[{"title":"Section 1.1","dest":{"page_index":1,"dest":["/Fit"]}}]}]}}}
  • PDF目录导入:

支持的专属参数:data(目录 JSON 对象,建议先调用 outlineexport 获取后原样传回)。

参数 类型 备注 是否必须发送
data JSON对象 目录 JSON 对象;建议先调用 outlineexport 获取后原样传回 是

示例:

{"action":"outlineimport","url":["https://xxx/xxx.pdf"],"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]}}]}}

会把目录JSON写回PDF,并输出新的pdfurl。data 顶层应包含 named_dests 和 outline;其中 page_index 从 0 开始计数。

安全与权限

  • 文件加密:

支持的专属参数:userpassword、ownerpassword、pdfrestriction。

参数 类型 备注 是否必须发送
userpassword string 用户密码;和 ownerpassword 至少传一个 条件必传
ownerpassword string 所有者密码;和 userpassword 至少传一个 条件必传
pdfrestriction string PDF 权限限制编码,如 110 按需

示例:

{"action":"encrypt","url":["https://xxx/xxx.pdf"],"userpassword":"YOUR_PASSWORD","ownerpassword":"YOUR_PASSWORD","pdfrestriction":"110"}

userpassword 和 ownerpassword 至少传一个。该操作会给PDF加密码和权限限制。

  • 文件解密(文件加密转换接口中已有):

支持的专属参数:password(解密密码,可以为空)。

参数 类型 备注 是否必须发送
password string 解密密码;如果原文件无密码可传空字符串 按需

示例:

{"action":"decrypt","url":["https://xxx/xxx.pdf"],"password":""}

会把PDF解密。

  • 文件是否加密:

专属参数:无。

示例:

{"action":"checkencrypt","url":["https://xxx/xxx.pdf"]}

会检查PDF是否加密。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.data.encrypted boolean true 表示已加密,false 表示未加密

返回结果示例:

{"result":{"status":"done","data":{"encrypted":true}}}

通用请求参数BODY(JSON):

参数 类型 备注 是否必须发送
action string 操作类型,取值见上方各 action 小节 是
url string数组 待处理的PDF URL数组,支持http(s)、ftp;每个action对url数量和含义的要求见对应 action 小节 是
pdffilename string 生成输出文件的文件名,默认随机;是否支持及具体含义见对应 action 小节 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

其余参数均为 action 专属参数,见对应 action 小节。

请求:

v1异步url:

https://doc2pdf.market.alicloudapi.com/v1/pdfaction

v2异步url:

https://doc2pdf.market.alicloudapi.com/v2/action_async

v2同步url:

https://doc2pdf.market.alicloudapi.com/v2/action_sync

HTTP方式:POST

Header中的Content-Type必须是application/json

传入的Body为JSON格式,见上方详细操作。

必须签名才能调用成功,签名见阿里签名规则:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

返回数据结构【v1异步 / v2异步】:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

异步任务完成后的通用说明:

  • 所有 action 都支持 callbackurl。
  • 大多数生成 PDF 的 action 都支持 pdffilename;任务完成后,可在 查询结果 或回调结果里看到 result.pdfurl、result.count,通常还会返回 result.filesize。
  • 特殊 action 的最终返回字段见对应 action 小节,例如:split 返回 result.pdfurls,extractimg 返回 result.imageurls,extracttext 返回 result.fileurl,pagecountinfo、pageinfo、outlineexport、checkencrypt 等返回结构化数据。

返回示例(成功状态)【异步】:

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态)【异步】:

{
	"code":40001,
	"msg":"ParmNotRight"
}

返回数据结构【v2同步】:

v2同步调用会在60秒内尽量直接返回结果,超时则返回token并转入查询结果流程;返回结构参照上文 同步调用。

查询结果

请求参数:

参数 类型 备注 是否必须发送
token string 调用转换接口拿到的token 是

请求示例:

https://api.duhuitech.com/q?token=YOUR_TOKEN

无需签名,无调用次数限制

由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。 查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
token string 是 请求的token
result Dictionary 否 成功后返回

result:

名称 含义 类型 是否必须返回 备注
status 状态 string 是 Pending:还未开始
Doing:正在转换
Done:转换成功
Failed:转换失败
progress 进度 number 否(status为Doing时返回) 范围:0.00 - 1.00, 比如0.88表示88%
pdfurl pdf文件地址 string 否(status为Done时返回) 转换出来的PDF地址,http和https都支持
count 总页数 integer 否(status为Done时返回) PDF页面总数
filesize 文件大小 integer 否(status为Done时返回) 输出文件大小
reason 失败原因 string 否(status为Failed时可能返回) 转换失败的原因

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"token":"YOUR_CREDENTIAL",
	"result":
	{
		"progress":0.02,
		"status":"Doing"
	}
}
{
	"code":10000,
	"msg":"",
	"token":"YOUR_CREDENTIAL",
	"result":
	{
		"status":"Done",
		"pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf",
		"count":10,
		"filesize":17747
	}
}

返回示例(失败状态):

{
	"code":40000,
	"msg":"No such token"
}

备注:

  • 文件url方式支持文件大小 1500M。
  • 如果图片开启OCR,最大支持的图片大小长边不超过8000像素。
  • 最大转换时长:1小时,超过时间未完成则自动失败。
  • 转换完成后,下载链接有效时间:1小时。

上述最后2项有延长需求请联系客服: 客服二维码


回调URL:

用途: 客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询查询结果。

当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:

以POST方式调用该URL,Header头中Content-Type: application/json

Body为JSON格式,内容和查询结果的结果相同,例如:

{
	"code":10000,
	"msg":"",
	"token":"YOUR_CREDENTIAL",
	"result":
	{
		"status":"Done",
		"pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf",
		"count":10,
		"filesize":17747
	}
}

服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:

系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。

回调URL超时时间10秒。


关于下载转换后的文件需支持302跳转

接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。

以下方式默认会跟随跳转,一般无需额外配置:

wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)

少数默认不跟随,需手动打开:

  • curl:加 -L,如 curl -L -o out.bin "下载地址"
  • Java java.net.http.HttpClient:设置 .followRedirects(HttpClient.Redirect.NORMAL)
  • PHP curl 扩展:设置 CURLOPT_FOLLOWLOCATION => true

若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。


阿里云独有部分:

支持从阿里云OSS内网直接下载文件,目前支持的是上海地区的阿里云OSS内网:

oss-cn-shanghai-internal.aliyuncs.com

文档转换GET或多张图片转换POST里的url地址包含上述域名则自动支持


错误码表:

返回的code如果是10000,代表成功,其余是失败

JSON里返回的code 错误信息
40000 通用错误
40001 参数错误
40002 参数不符合规范
40500 同步调用超时

附录:阿里签名方式

参考链接:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

在调用API商品时,首先您需要了解采用哪种API认证方式,云市场API商品的认证方式主要有以下两种方式。两种方式可同时使用,您可以根据不同情况来选择。

  • 简单身份认证(AppCode)

  • 签名认证

简单身份认证(AppCode)

简单认证(AppCode)调用API,有两种方式,一种是将AppCode放在Header中进行调用,一种是将AppCode放在Query参数中进行调用。

方式一:将AppCode放在Header中

在请求Header中添加一个Authorization参数。

Authorization字段的值的格式为APPCODE + 半角空格 +APPCODE值。格式如下:

Authorization:APPCODE AppCode值

示例:

Authorization:APPCODE YOUR_CREDENTIAL

方式二:将AppCode放在Query中

在请求Query中添加AppCode参数(同时支持appcode , appCode , APPCODE , APPCode四种写法)。

AppCode参数的值为AppCode的值。

示例:

http://www.aliyum.com?AppCode=YOUR_CREDENTIAL

参考链接:https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/user-guide/call-an-api-operation-by-using-an-appcode

签名认证

比较复杂,推荐用阿里自己的SDK来调用,参考链接:https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/user-guide/use-digest-authentication-to-call-an-api

附录:旧v1接口

文档转换GET_v1

将文档下载地址url转换为PDF,type是源文档的type,比如要把docx转为pdf,type就是docx

请求参数:

参数 类型 备注 是否必须发送
url string 文件url,支持http(s),ftp开头,需要URL Encoding 是
type string 要转换的原始文件扩展名,如果不传,则取url中的扩展名,注意如果获取失败会导致转换异常或出错 否
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 否
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
powerpointoutputtype int 如果是PPT文件,设定导出样式,默认幻灯片。0:幻灯片,0以上是讲义模式:1:每页一个幻灯片,2:每页二个幻灯片,3:每页三个幻灯片,4:每页四个幻灯片,5:每页六个幻灯片,6:每页九个幻灯片 否
powerpointhandoutorder int 如果是PPT文件,当设置为讲义时,设定顺序,默认0水平,1垂直 否
powerpointhandoutorientation int 如果是PPT文件,当设置为讲义时,输出文件的方向,默认0不改变,1横向,2纵向 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
ismobileurl int 如果type是“url”才有效,抓取的网页是否移动端显示。默认0:桌面端网页,1:移动端网页 否
urlmargin string 如果type是url,生成的页面边距。输入的是URLEncoding后的字符串,按照顺序:left top right bottom。单位可以是:px,in,cm,mm。例如左上右下分别是1px,2px,3px,4px,传的字符串就是:1px%202px%203px%204px。默认值:左右0,上下各1cm 否
pagesize int 如果是Word,TXT,Excel,HTML,设定页面大小,此参数会覆盖excelpagesize。默认0:源文档设定值,如无则是A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
pageorientation int 如果是Word,TXT,Excel,HTML,设定页面横向还是竖向,此参数会覆盖excelislandscape。默认0不变,1横向,2 竖向 否
pagesplit int 将每一页按长边等分为多页。例如一页是试卷,可以分为左右二页。默认0不分页,2: 分2页,3: 分3页 否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个,需要URL Encoding 否
watermarkfontsize int 水印的字体大小,默认24pt 否
watermarkfontcolor string 水印的颜色,输入颜色码,默认黑色#000000,必须7位,需要URL Encoding 否
watermarkfontalpha int 水印的透明度,取值范围1-100,越小越透明,默认20 否
watermarkstyle int 水印的样式,默认0:文档中央一个水印;1: 文档铺满水印 否
imagepdf int 生成图片PDF,默认0否,1是 否
htmloutline int 如果是HTML,是否根据h1,h2等html标记生成outline,默认0否,1是 否
cadlayer int 如果是CAD文件,是否生成Layer层,默认0否,1是 否
cadisdisplay int 如果是CAD文件,是否按照Display显示,默认0不按照,1按照Display 否
cadquality int 如果是CAD文件,生成的文件品质,默认3。取值从1-5品质从低到高。 否
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见 回调URL 否

请求示例:

https://doc2pdf.market.alicloudapi.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.docx

将所在url地址的docx文件转为PDF,type就是源文件的type,这个例子里就是docx

必须签名才能调用成功,签名见阿里签名规则:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

支持多种文件格式,type可传入如下格式:

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本
网址网页 url 网址,例如:https://www.duhuitech.com

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

文档转换POST_v1

直接将单个文档POST到服务器,大小限制8M

请求参数:

参数 类型 备注 是否必须发送
file file 要转换的文档,Content-Type使用multipart/form-data,最大8M 是
type string 要转换的原始文件扩展名,如果不传,则取file中的文件扩展名,注意如果获取失败会导致转换异常或出错 否
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 否
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
powerpointoutputtype int 如果是PPT文件,设定导出样式,默认幻灯片。0:幻灯片,0以上是讲义模式:1:每页一个幻灯片,2:每页二个幻灯片,3:每页三个幻灯片,4:每页四个幻灯片,5:每页六个幻灯片,6:每页九个幻灯片 否
powerpointhandoutorder int 如果是PPT文件,当设置为讲义时,设定顺序,默认0水平,1垂直 否
powerpointhandoutorientation int 如果是PPT文件,当设置为讲义时,输出文件的方向,默认0不改变,1横向,2纵向 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
pagesize int 如果是Word,TXT,Excel,HTML,设定页面大小,此参数会覆盖excelpagesize。默认0:源文档设定值,如无则是A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
pageorientation int 如果是Word,TXT,Excel,HTML,设定页面横向还是竖向,此参数会覆盖excelislandscape。默认0不变,1横向,2 竖向 否
pagesplit int 将每一页按长边等分为多页。例如一页是试卷,可以分为左右二页。默认0不分页,2: 分2页,3: 分3页 否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个,需要URL Encoding 否
watermarkfontsize int 水印的字体大小,默认24pt 否
watermarkfontcolor string 水印的颜色,输入颜色码,默认黑色#000000,必须7位,需要URL Encoding 否
watermarkfontalpha int 水印的透明度,取值范围1-100,越小越透明,默认20 否
watermarkstyle int 水印的样式,默认0:文档中央一个水印;1: 文档铺满水印 否
imagepdf int 生成图片PDF,默认0否,1是 否
htmloutline int 如果是HTML,是否根据h1,h2等html标记生成outline,默认0否,1是 否
cadlayer int 如果是CAD文件,是否生成Layer层,默认0否,1是 否
cadisdisplay int 如果是CAD文件,是否按照Display显示,默认0不按照,1按照Display 否
cadquality int 如果是CAD文件,生成的文件品质,默认3。取值从1-5品质从低到高。 否
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

https://doc2pdf.market.alicloudapi.com/v1/convert_post

Header中的Content-Type必须是multipart/form-data

必须签名才能调用成功,签名见阿里签名规则:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

支持多种文件格式,type可传入如下格式:

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

多张图片转换POST_v1

将多张图片转换为pdf,url传入多张图片的地址,传入非图片格式无效

Header中的Content-Type传入application/json

POST Body传入JSON,格式如下:

请求参数BODY:


参数 类型 备注 是否必须发送
url string数组 要转换的图片URL数组,支持http(s),ftp开头 是
type string 固定传img 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
ocr int 是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
deskew int 是否将斜的文字矫正,默认0否,1是 否
clean int 是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
text int 如果开启ocr,是否使用矢量文字替换图片内文字,使得即使图片中的文字模糊,pdf放大后文字仍然清晰。默认0否,1是 否
split2p int 如果开启ocr,横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 否
imagesize int 统一每页为固定宽,默认0否,输入数字即每页宽度,最大4096。设置该值将导致pagesize失效。 否
pagesize int 设定页面大小。默认0:长图保持原图大小,非长图A4,原图不满A4大小的保持原图大小。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
language int 如果开启OCR,识别语言选项,默认2简体中文:
1:英语
2:简体中文
3:繁体中文
4:法语
5:德语
6:意大利语
7:俄语
8:日文
9:韩文
10:西班牙语
11:葡萄牙语
12:丹麦语
13:荷兰语
14:芬兰语
15:挪威语
16:瑞典语
17:土耳其语
否
adjustorientation int 调整所有页横屏或是竖屏。默认0不调整。
1: 竖屏,如果页面横屏则顺时针90度变竖屏
2: 竖屏,如果页面横屏则逆时针90度变竖屏
3: 横屏,如果页面竖屏则顺时针90度变横屏
4 :横屏,如果页面竖屏则逆时针90度变横屏
否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个 否
watermarkfontsize int 水印的字体大小,默认24pt 否
watermarkfontcolor string 水印的颜色,输入颜色码,默认黑色#000000,必须7位 否
watermarkfontalpha int 水印的透明度,取值范围1-100,越小越透明,默认20 否
watermarkstyle int 水印的样式,默认0:文档中央一个水印;1: 文档铺满水印 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

https://doc2pdf.market.alicloudapi.com/v1/convert

传入的Body为JSON格式,如下:

{ "url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"], "type": "img" }

必须签名才能调用成功,签名见阿里签名规则:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

例如要把多张图片OCR,变为文字可选的PDF,并且将斜的文字矫正,将图片背景去除,那么JSON就是:

{ "url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"], "type": "img", "ocr": 1, "deskew": 1, "clean": 1}

支持几乎所有图片格式

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

附录:废弃接口

合并PDF文件POST(废弃,用文件操作代替)

将多个PDF文件合并为一个PDF,url传入多个PDF文件的地址

Header中的Content-Type传入application/json

POST Body传入JSON,格式如下:

请求参数BODY:

参数 类型 备注 是否必须发送
url string数组 要合并的PDF URL数组,支持http(s),ftp开头 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个 否
watermarkfontsize int 水印的字体大小,默认24pt 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

https://doc2pdf.market.alicloudapi.com/v1/merge

传入的Body为JSON格式,如下:

{ "url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"]}

必须签名才能调用成功,签名见阿里签名规则:

https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis

例如要把多个PDF合并为一个,并且开启快速web显示,加上水印,那么JSON就是:

{ "url": ["http://xxx/xxx1.png","http://xxx/xxx2.png"], "linearization":1, "watermark":"测试水印"}

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}
百度智能云接口参考

V1 转换接口 · 请求方式与参数按本渠道正文

本渠道认证说明

概述

2种转换方式

  • 单一文档转为PDF,文档是一个下载链接,用HTTP GET方式,见:文档转换GET
  • 多个图片转为PDF,文档是多个下载链接,用HTTP POST方式,见:多张图片转换POST

基本用法

由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:

  1. 用HTTP GET方式,轮询“查询 query接口”获得结果。详细见:查询 QUERY
  2. 设置callbackurl,当转换结束后,系统会回调该URL直接推送转换结果。详细见:回调URL

API调用需要签名,详细见文档附录:百度签名

文档转换GET

将文档下载地址url转换为PDF,type是源文档的type,比如要把docx转为pdf,type就是docx

请求参数:

参数 类型 备注 是否必须发送
url string 文件url,支持http(s),ftp开头,需要URL Encoding 是
type string 要转换的原始文件扩展名,如果不传,则取url中的扩展名,注意如果获取失败会导致转换异常或出错 否
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 否
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
userpassword string 生成PDF文件的User Password,默认无 否
ownerpassword string 生成PDF文件的Owner Password,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大10个 否
imagepdf int 生成图片PDF,默认0否,1是 否
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见 回调URL 否

请求示例:

https://pdfconvert.api.bdymkt.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.docx

将所在url地址的docx文件转为PDF,type就是源文件的type,这个例子里就是docx

必须签名才能调用成功,签名见百度签名规则:

https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4

支持多种文件格式,具体如下(type可传入如下格式):

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本
网址网页 url 网址,例如:https://www.duhuitech.com

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
token string 是 用于query接口

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
    "code":40001,
    "msg":"ParmNotRight"
}

多张图片转换POST

将多张图片转换为pdf,url传入多张图片的地址,传入非图片格式无效

Header中的Content-Type传入application/json

POST Body传入JSON,格式如下:

请求参数BODY:

参数 类型 备注 是否必须发送
url string数组 要转换的图片URL数组,支持http(s),ftp开头 是
type string 固定传img 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
ocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
deskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
clean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
userpassword string 生成PDF文件的User Password,默认无 否
ownerpassword string 生成PDF文件的Owner Password,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大10个 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

https://pdfconvert.api.bdymkt.com/v1/convert

传入的Body为JSON格式,如下:

{ "url": [ "http://xxx/xxx1.png","http://xxx/xxx2.png" ], "type": "png" }

必须签名才能调用成功,签名见百度签名规则:

https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4

例如要把多张图片OCR,变为文字可选的PDF,并且将斜的文字矫正,将图片背景去除,那么JSON就是:

{ "url": [ "http://xxx/xxx1.png","http://xxx/xxx2.png" ], "type": "img", "ocr": 1, "deskew": 1, "clean": 1 }

支持几乎所有图片格式

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
token string 是 用于query接口

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
    "code":40001,
    "msg":"ParmNotRight"
}

文件操作POST

支持以下操作:

类型 操作
文件处理 文件合并、文件拆分、转为图片PDF、文件修复、文件扁平化、文件线性化、PDF压缩、PDF净化、PDF灰度化
内容叠加与排版 图片签名、文件加水印、文件去水印、PDF前景叠加、PDF背景叠加、页眉页脚、页面加页码、PDF多页拼版 / n-up、PDF小册子排版
页面处理 页面删除、页面插入、页面提取、页面重排、页面倒序、页面复制、空白页插入、自动删除空白页、页面旋转、PDF裁边、PDF页数查询、PDF页面信息
内容提取与结构 提取图片、PDF文本提取、PDF元数据读取/修改、PDF目录导出、PDF目录导入
安全与权限 文件加密、文件解密、文件是否加密

POST Body传入JSON,Header中的Content-Type传入application/json

通过指定action,对PDF文件进行不同的操作,详细如下:

文件处理

  • 文件合并:

专属参数:无。

示例:

{"action":"merge","url":["https://xxx/xxx.pdf", "https://xxx/xxx.pdf"]}

会合并为一个PDF文件。url数组需传2个以上PDF地址。

  • 文件拆分:

支持的专属参数:splitcount(按固定页数拆分)、pageranges(按多个页段拆分,使用竖线分隔;和 splitcount 同时传时优先按 splitcount)。

参数 类型 备注 是否必须发送
splitcount number 按固定页数拆分;和 pageranges 同时传时优先按本参数处理 条件必传
pageranges string 按多个页段拆分,使用竖线分隔,如 `1-3 4-10

示例:

{"action":"split","url":["https://xxx/xxx.pdf"],"splitcount":2}

会把PDF拆分为多个PDF,每个PDF是2页。

{"action":"split","url":["https://xxx/xxx.pdf"],"pageranges":"1-3|4-10|11-12"}

会按 pageranges 指定的页段拆分为多个PDF,依次输出为1.pdf、2.pdf、3.pdf。

pdffilename 不支持;拆分结果文件会按 1.pdf、2.pdf、3.pdf 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.pdfurls string数组 拆分后 PDF 地址数组,按输出顺序返回
result.count number 拆分后 PDF 数量

返回结果示例:

{"result":{"status":"done","count":3,"pdfurls":["https://file.duhuitech.com/o/xxx/1.pdf","https://file.duhuitech.com/o/xxx/2.pdf","https://file.duhuitech.com/o/xxx/3.pdf"]}}
  • 转为图片PDF:

支持的专属参数:compress(可选,默认0不压缩)。

参数 类型 备注 是否必须发送
compress number 压缩等级;可选,默认 0 不压缩 否

示例:

{"action":"imagepdf","url":["https://xxx/xxx.pdf"],"compress":2}

会把PDF每一页转成图片后再重新生成一个图片型PDF。

  • 文件修复:

专属参数:无。

示例:

{"action":"repairpdf","url":["https://xxx/xxx.pdf"]}

会尝试修复PDF结构问题,并输出修复后的PDF。

  • 文件扁平化:

专属参数:无。

示例:

{"action":"flatten","url":["https://xxx/xxx.pdf"]}

会把PDF中的批注等可交互内容扁平化到页面内容里。

  • 文件线性化:

专属参数:无。

示例:

{"action":"linearize","url":["https://xxx/xxx.pdf"]}

会把PDF做快速网页预览优化。

  • PDF压缩:

支持的专属参数:compress(必传,支持1、2、3,也支持直接传目标图片分辨率)。

参数 类型 备注 是否必须发送
compress number 压缩等级;支持 1、2、3,也支持直接传目标图片分辨率 是

示例:

{"action":"compresspdf","url":["https://xxx/xxx.pdf"],"compress":2}

压缩PDF;如果压缩结果不比原文件更小,会保留较小版本输出。

  • PDF净化:

专属参数:无。

示例:

{"action":"pdfsanitize","url":["https://xxx/xxx.pdf"]}

会重写PDF结构并清空常见元数据字段,输出净化后的PDF。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 净化后 PDF 地址
result.count number 净化后 PDF 总页数
result.data object 净化后的元数据对象;字段结构与 pdfmeta 读取返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/sanitize.pdf","data":{}}}
  • PDF灰度化:

专属参数:无。

示例:

{"action":"grayscale","url":["https://xxx/xxx.pdf"]}

会把PDF转换为灰度版,并输出新的PDF。

内容叠加与排版

  • 图片签名:

支持的专属参数:pageindex(签名页码)、stampurl(签名图片地址)、stamprect(签名位置和大小,格式 x,y,width,height)。

参数 类型 备注 是否必须发送
pageindex number 签名页码,示例为第 1 页 是
stampurl string 签名图片 URL 是
stamprect string 签名位置和大小,格式 x,y,width,height,单位像素 是

示例:

{"action":"stampsignature","url":["https://xxx/xxx.pdf"],"pageindex":1,"stampurl":"http://xxx/xxx.png","stamprect":"10,10,100,50"}

会把PDF的第一页加上图片签名,签名位置在x=10,y=10,宽度=100,高度=50,单位像素。

  • 文件加水印:

支持的专属参数:watermark、watermarkstyle、watermarkfontsize、watermarkfontcolor、watermarkfontalpha。

参数 类型 备注 是否必须发送
watermark string 水印文字内容 是
watermarkstyle number 水印样式编号 按需
watermarkfontsize number 水印字体大小 按需
watermarkfontcolor string 水印字体颜色,格式如 #000000 按需
watermarkfontalpha number 水印透明度 按需

示例:

{"action":"watermark","url":["https://xxx/xxx.pdf"],"watermark":"CONFIDENTIAL","watermarkstyle":1,"watermarkfontsize":24,"watermarkfontcolor":"#000000","watermarkfontalpha":20}

会给PDF每一页添加文字水印。

  • 文件去水印:

专属参数:无。

示例:

{"action":"removewatermark","url":["https://xxx/xxx.pdf"]}

会尝试移除PDF中的水印内容,并输出新的PDF。

  • PDF前景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"overlaypdf","url":["https://xxx/base.pdf","https://xxx/overlay.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做前景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为前景叠加到第1个PDF上,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • PDF背景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"underlaypdf","url":["https://xxx/base.pdf","https://xxx/background.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做背景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为背景叠加到第1个PDF下方,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • 页眉页脚:

支持的专属参数:data.header、data.footer、data.fontsize、data.fontcolor、data.fontalpha。

参数 类型 备注 是否必须发送
data.header string 页眉文字;和 data.footer 至少传一个 条件必传
data.footer string 页脚文字;和 data.header 至少传一个 条件必传
data.fontsize number 文字大小 按需
data.fontcolor string 文字颜色,格式如 #333333 按需
data.fontalpha number 文字透明度 按需

示例:

{"action":"headerfooter","url":["https://xxx/xxx.pdf"],"data":{"header":"Confidential","footer":"第 {{page}} / {{total}} 页","fontsize":12,"fontcolor":"#333333","fontalpha":80}}

会给每一页叠加文字页眉页脚。

  • 页面加页码:

专属参数:无。

示例:

{"action":"pageaddnumber","url":["https://xxx/xxx.pdf"]}

会把PDF每一页右下角添加页码。

  • PDF多页拼版 / n-up:

支持的专属参数:data.nup、data.paper、data.landscape、data.frame、data.scale。

参数 类型 备注 是否必须发送
data.nup string 每张输出纸放几页;格式为 列x行,如 2x1、2x2、3x2。2x1 表示一张纸放 2 页,2x2 表示一张纸放 4 页 是
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向。横向通常更适合 2x1、2x2 这类布局 按需
data.frame number 是否给每个小页面画边框。1 表示画边框,方便区分每个子页;省略或 0 表示不画 按需
data.scale number 每个小页面的缩放比例,必须大于 0。常用 0.9 到 1.0;数值越小,页面四周留白越多 按需

常见纸张说明:

  • a4paper:最常见的办公打印纸;如果不确定,优先用它。
  • a3paper:比 A4 更大,适合一次拼更多页。
  • a5paper:比 A4 更小,适合输出更小的页面。
  • letterpaper:北美常见纸型。
  • legalpaper:比 letterpaper 更长,常用于合同、表格。

示例 1:一张纸放 4 页,适合做讲义或速读版

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a4paper","landscape":1,"frame":1,"scale":0.95}}

示例 2:一张纸放 2 页,保留更大的阅读字号

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x1","paper":"a4paper"}}

示例 3:放到更大的纸上,减少内容拥挤

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a3paper","scale":0.9}}

这个操作会把多页 PDF 重新排到一张纸上。原文件里的超链接、书签、表单等交互信息可能不会保留。

  • PDF小册子排版:

支持的专属参数:data.paper、data.landscape、data.scale、data.signature、data.flipotheredge。

参数 类型 备注 是否必须发送
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向;做双面打印小册子时,横向纸面通常更常见 按需
data.scale number 页面缩放比例,必须大于 0。常用 0.9 到 1.0;如果担心装订后内容太靠边,可以适当调小 按需
data.signature number 每个装订单元包含多少页,必须是 4 的倍数,如 4、8、16、32。省略时会把整份文件当成一个完整小册子自动排版 按需
data.flipotheredge number 是否切换双面打印的翻页边。1 表示开启;如果你试打后发现背面上下颠倒,可以尝试开启这个参数 按需

signature 可以简单理解为“分几本小册子来装订”:

  • signature=16:每 16 页做成一个装订单元。
  • signature=32:每 32 页做成一个装订单元。
  • 不传:整份 PDF 当成一个小册子,系统会自动补空白页到 4 的倍数。

示例 1:整份 PDF 直接做成一本小册子

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper"}}

示例 2:每 16 页做一个装订单元,适合页数较多的文档

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1,"scale":0.95}}

示例 3:如果双面打印背面方向不对,可尝试切换翻页边

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1}}

这个操作会按小册子阅读顺序重新排页,并在需要时自动补空白页,适合双面打印后对折装订。原文件里的超链接、书签、表单等交互信息可能不会保留。

页面处理

  • 页面删除:

支持的专属参数:pageindexes(要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排)。

参数 类型 备注 是否必须发送
pageindexes string 要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排 是

示例:

{"action":"pageremove","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页删除;若传入 3,1 或 1,3,4-5,也是按页码集合选中后删除,不会因为输入顺序改变删除逻辑。

  • 页面插入:

支持的专属参数:pageindex(插入位置)、pageinserturl(插入的PDF地址)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;示例为在第 1 页后插入 是
pageinserturl string 待插入 PDF 的 URL 是

示例:

{"action":"pageinsert","url":["https://xxx/xxx.pdf"],"pageindex":1,"pageinserturl":"https://xxx/xxx.pdf"}

会在PDF的第一页后面插入 pageinserturl 这个地址的PDF。

  • 页面提取:

支持的专属参数:pageindexes(要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出)。

参数 类型 备注 是否必须发送
pageindexes string 要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出 是

示例:

{"action":"pageextract","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页提取出来作为一个PDF文件;也支持如 3,1,2,5-6 这样的页序写法。

  • 页面重排:

支持的专属参数:pageindexes(最终页序,支持乱序、范围和列表/区间混合)。

参数 类型 备注 是否必须发送
pageindexes string 最终页序,支持乱序、范围和列表/区间混合 是

示例:

{"action":"pageorder","url":["https://xxx/xxx.pdf"],"pageindexes":"3,1,2,5-6"}

会按给定顺序重新生成一个PDF文件。

  • 页面倒序:

专属参数:无。

示例:

{"action":"pagereverse","url":["https://xxx/xxx.pdf"]}

会把PDF所有页面整体倒序输出。

  • 页面复制:

支持的专属参数:pageindexes(可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合 否

示例:

{"action":"pageduplicate","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3,5-6"}

会在原页面后面插入对应页面副本;若传入 3,1,仍按原PDF页序在第1页、第3页后插入副本。

  • 空白页插入:

支持的专属参数:pageindex(插入位置,0表示插到第一页前)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;0 表示插到第一页前 是

示例:

{"action":"blankpageinsert","url":["https://xxx/xxx.pdf"],"pageindex":2}

会在第2页后插入1个同尺寸空白页。

  • 自动删除空白页:

专属参数:无。

示例:

{"action":"removeblankpages","url":["https://xxx/xxx.pdf"]}

会自动识别接近纯白的页面并删除,适合扫描件里的空白隔页清理。

  • 页面旋转:

支持的专属参数:pagerotateangle(旋转角度)、pageindexes(可选,按原PDF页序筛选指定页面)。

参数 类型 备注 是否必须发送
pagerotateangle number 旋转角度,如 90 是
pageindexes string 可选;仅按原PDF页序筛选并旋转指定页面,支持区间组合 否

示例:

{"action":"pagerotate","url":["https://xxx/xxx.pdf"],"pagerotateangle":90,"pageindexes":"2,4-6"}

会把PDF整本或指定页面按给定角度旋转;若传入 3,1,会旋转第1页和第3页,但不会重排页面。

  • PDF裁边:

支持的专属参数:pageindexes、data.left、data.right、data.top、data.bottom。

参数 类型 备注 是否必须发送
pageindexes string 需要裁边的页码范围,支持区间组合;按原PDF页序处理选中页 按需
data.left number 左边裁剪量 按需
data.right number 右边裁剪量 按需
data.top number 上边裁剪量 按需
data.bottom number 下边裁剪量 按需

示例:

{"action":"pdfcrop","url":["https://xxx/xxx.pdf"],"pageindexes":"2-10","data":{"left":18,"right":18,"top":24,"bottom":24}}

会按统一边距修改选中页面的CropBox,并输出新的pdfurl。pageindexes 仅用于筛选要裁边的页面,不会因为输入顺序而重排页面。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 裁边后 PDF 地址
result.count number 裁边后 PDF 总页数
result.data object 裁边后整份 PDF 的页面信息;结构与 pageinfo 返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/crop.pdf","data":{"uniform":true,"pages":[{"page":1,"width":559.28,"height":805.89,"orientation":"portrait"}]}}}
  • PDF页数查询:

专属参数:无。

示例:

{"action":"pagecountinfo","url":["https://xxx/xxx.pdf"]}

会只查询PDF页数。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数

返回结果示例:

{"result":{"status":"done","count":12}}
  • PDF页面信息:

支持的专属参数:pageindexes(可选;不传返回全部页面,传则按原PDF页序返回指定页)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传返回全部页面,传则按原PDF页序返回指定页 否

示例:

{"action":"pageinfo","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3-4"}

会返回每一页的宽高和横竖版信息;若传入 3,1,返回结果仍按第1页、第3页的原PDF页序排列。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number 返回的页面条数;不传 pageindexes 时等于 PDF 总页数
result.data.uniform boolean 返回页面尺寸是否全部一致
result.data.pages array 页面信息数组,按原 PDF 页序返回
result.data.pages[].page number 页码,从 1 开始
result.data.pages[].width number 页面宽度,单位 pt
result.data.pages[].height number 页面高度,单位 pt
result.data.pages[].orientation string 页面方向:portrait、landscape 或 square

返回结果示例:

{"result":{"status":"done","count":3,"data":{"uniform":false,"pages":[{"page":1,"width":595.28,"height":841.89,"orientation":"portrait"},{"page":3,"width":841.89,"height":595.28,"orientation":"landscape"},{"page":4,"width":595.28,"height":595.28,"orientation":"square"}]}}}

内容提取与结构

  • 提取图片:

专属参数:无。

示例:

{"action":"extractimg","url":["https://xxx/xxx.pdf"]}

会把PDF里的图片提取出来。

pdffilename 不支持;导出的图片文件会按 1.png、2.png 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.imageurls string数组 提取出的图片地址数组,按输出顺序返回
result.count number 提取出的图片数量

返回结果示例:

{"result":{"status":"done","count":2,"imageurls":["https://file.duhuitech.com/o/xxx/1.png","https://file.duhuitech.com/o/xxx/2.png"]}}
  • PDF文本提取:

支持的专属参数:pageindexes、outfilename、data.textwithformat、data.textperpage。

参数 类型 备注 是否必须发送
pageindexes string 需要提取文字的页码范围,支持区间组合、乱序和列表/区间混合;会先按给定页序筛页,再提取文字 按需
outfilename string 输出文件名;默认随机 按需
data.textwithformat number 是否尽量保留排版信息;1 表示保留 按需
data.textperpage number 是否按页拆分输出;1 表示每页单独输出并打包 按需

示例:

{"action":"extracttext","url":["https://xxx/xxx.pdf"],"pageindexes":"1-3","outfilename":"chapter1","data":{"textwithformat":1,"textperpage":1}}

会提取PDF文字内容;默认输出一个txt文件,textperpage 为1时输出按筛选后页序分拆的zip文件。

pdffilename 不适用,请使用 outfilename 控制输出文件名前缀。

返回结果重点字段:

字段 类型 说明
result.fileurl string 提取结果文件地址;可能是 txt,也可能是按页拆分后的 zip
result.count number 实际提取的页数;不传 pageindexes 时等于 PDF 总页数
result.filesize number 输出文件大小

返回结果示例:

{"result":{"status":"done","count":3,"filesize":2048,"fileurl":"https://file.duhuitech.com/o/xxx/chapter1.zip"}}
  • PDF元数据读取/修改:

支持的专属参数:meta.title、meta.author、meta.subject、meta.keywords、meta.creator、meta.producer。

参数 类型 备注 是否必须发送
meta.title string PDF 标题 按需
meta.author string PDF 作者 按需
meta.subject string PDF 主题 按需
meta.keywords string PDF 关键词 按需
meta.creator string 生成工具 按需
meta.producer string 生产程序 按需

示例:

{"action":"pdfmeta","url":["https://xxx/xxx.pdf"],"meta":{"title":"Quarterly Report","author":"Duhui"}}

不传 meta 时会读取当前PDF的常用元数据;传 meta 时会更新对应字段并返回新的pdfurl和更新后的data。

读取模式下 pdffilename 不适用;写入模式下支持 pdffilename。

返回结果重点字段:

字段 类型 说明
result.data object 元数据对象
result.data.title string 标题,存在时返回
result.data.author string 作者,存在时返回
result.data.subject string 主题,存在时返回
result.data.keywords string 关键词,存在时返回
result.data.creator string 生成工具,存在时返回
result.data.producer string 生产程序,存在时返回
result.data.creationdate string 创建时间,存在时返回
result.data.moddate string 修改时间,存在时返回
result.data.tagged string 是否带标签,存在时返回
result.data.encrypted string 是否加密,存在时返回

返回结果示例(读取):

{"result":{"status":"done","count":12,"data":{"title":"Quarterly Report","author":"Duhui","creator":"Word","producer":"Skia/PDF m123"}}}

更新模式下,返回结果会额外包含 result.pdfurl。

  • PDF目录导出:

专属参数:无。

示例:

{"action":"outlineexport","url":["https://xxx/xxx.pdf"]}

会读取PDF目录书签。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数
result.data.named_dests object 命名目标映射
result.data.outline array 目录树数组
result.data.outline[].title string 目录标题
result.data.outline[].dest.page_index number 目标页索引,从 0 开始
result.data.outline[].dest.dest array 目标定位参数,如 ["/Fit"]
result.data.outline[].kids array 子目录数组;没有子目录时可省略

目录节点还可能包含 dest_name、color、flags、count、is_open 等可选字段。

返回结果示例:

{"result":{"status":"done","count":12,"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]},"kids":[{"title":"Section 1.1","dest":{"page_index":1,"dest":["/Fit"]}}]}]}}}
  • PDF目录导入:

支持的专属参数:data(目录 JSON 对象,建议先调用 outlineexport 获取后原样传回)。

参数 类型 备注 是否必须发送
data JSON对象 目录 JSON 对象;建议先调用 outlineexport 获取后原样传回 是

示例:

{"action":"outlineimport","url":["https://xxx/xxx.pdf"],"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]}}]}}

会把目录JSON写回PDF,并输出新的pdfurl。data 顶层应包含 named_dests 和 outline;其中 page_index 从 0 开始计数。

安全与权限

  • 文件加密:

支持的专属参数:userpassword、ownerpassword、pdfrestriction。

参数 类型 备注 是否必须发送
userpassword string 用户密码;和 ownerpassword 至少传一个 条件必传
ownerpassword string 所有者密码;和 userpassword 至少传一个 条件必传
pdfrestriction string PDF 权限限制编码,如 110 按需

示例:

{"action":"encrypt","url":["https://xxx/xxx.pdf"],"userpassword":"YOUR_PASSWORD","ownerpassword":"YOUR_PASSWORD","pdfrestriction":"110"}

userpassword 和 ownerpassword 至少传一个。该操作会给PDF加密码和权限限制。

  • 文件解密(文件加密转换接口中已有):

支持的专属参数:password(解密密码,可以为空)。

参数 类型 备注 是否必须发送
password string 解密密码;如果原文件无密码可传空字符串 按需

示例:

{"action":"decrypt","url":["https://xxx/xxx.pdf"],"password":""}

会把PDF解密。

  • 文件是否加密:

专属参数:无。

示例:

{"action":"checkencrypt","url":["https://xxx/xxx.pdf"]}

会检查PDF是否加密。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.data.encrypted boolean true 表示已加密,false 表示未加密

返回结果示例:

{"result":{"status":"done","data":{"encrypted":true}}}

通用请求参数BODY(JSON):

参数 类型 备注 是否必须发送
action string 操作类型,取值见上方各 action 小节 是
url string数组 待处理的PDF URL数组,支持http(s)、ftp;每个action对url数量和含义的要求见对应 action 小节 是
pdffilename string 生成输出文件的文件名,默认随机;是否支持及具体含义见对应 action 小节 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

其余参数均为 action 专属参数,见对应 action 小节。

请求示例:

https://pdfconvert.api.bdymkt.com/v1/pdfaction

传入的Body为JSON格式,见上方详细操作。

必须签名才能调用成功,签名见百度签名规则:

https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

异步任务完成后的通用说明:

  • 所有 action 都支持 callbackurl。
  • 大多数生成 PDF 的 action 都支持 pdffilename;任务完成后,可在 查询结果 或回调结果里看到 result.pdfurl、result.count,通常还会返回 result.filesize。
  • 特殊 action 的最终返回字段见对应 action 小节,例如:split 返回 result.pdfurls,extractimg 返回 result.imageurls,extracttext 返回 result.fileurl,pagecountinfo、pageinfo、outlineexport、checkencrypt 等返回结构化数据。

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

查询 QUERY

请求参数:

参数 类型及范围 备注 是否必须发送
token string 是

请求示例:

https://api.duhuitech.com/q?token=YOUR_TOKEN

无需签名,无调用次数限制

由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
token string 是 请求的token
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
status 状态 string 是 Pending:还未开始
Doing:正在转换
Done:转换成功
Failed:转换失败
progress 进度 number(0.00 - 1.00) 否(status为Doing时返回) 比如0.88表示88%
pdfurl pdf文件地址 string 否(status为Done时返回) 转换出来的PDF地址,http和https都支持
count 总页数 integer 否(status为Done时返回) PDF页面总数
reason 失败原因 string 否(status为Failed时可能返回) 转换失败的原因

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "token":"YOUR_CREDENTIAL",
    "result":
    {
        "progress":0.02,
        "status":"Doing"
    }
}
{
    "code":10000,
    "msg":"",
    "token":"YOUR_CREDENTIAL",
    "result":
    {
        "status":"Done",
        "pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf",
        "count":10
    }
}

返回示例(失败状态):

{
    "code":40000,
    "msg":"No such token"
}

注意:

  • 上传文件大小不能超过1500M。
  • 最大转换时长:1小时,超过时间未完成则自动失败。
  • 转换完成后,下载链接有效时间:1小时。

上述最后2项有延长需求请联系客服: 客服二维码

回调URL:

用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。

当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:

以POST方式调用该URL,Header头中Content-Type: application/json

Body为JSON格式,内容和Query的结果相同,例如:

{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf","count":10}}

服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:

系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。

回调URL超时时间10秒。


关于下载转换后的文件需支持302跳转

接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。

以下方式默认会跟随跳转,一般无需额外配置:

wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)

少数默认不跟随,需手动打开:

  • curl:加 -L,如 curl -L -o out.bin "下载地址"
  • Java java.net.http.HttpClient:设置 .followRedirects(HttpClient.Redirect.NORMAL)
  • PHP curl 扩展:设置 CURLOPT_FOLLOWLOCATION => true

若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。


错误码表:

JSON里返回的code 错误信息
40000 通用错误
40001 参数错误
40002 参数不符合规范

附录:百度签名方式

参考链接:

https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4

在调用API商品时,首先您需要了解采用哪种API认证方式,云市场API商品的认证方式主要有以下两种方式。两种方式可同时使用,您可以根据不同情况来选择。

  • 简单身份认证(AppCode)
  • 签名认证

简单身份认证(AppCode)

简单认证(AppCode)调用API,将AppCode放在Header中

在请求Header中添加一个X-Bce-Signature参数。

示例:

X-Bce-Signature: AppCode/YOUR_APPCODE

签名认证

比较复杂,推荐用百度自己的SDK来调用,参考链接:https://cloud.baidu.com/doc/Reference/s/njwvz1yfu

华为云接口参考

V1 转换接口 · 请求方式与参数按本渠道正文

本渠道认证说明

概述

3种转换方式

  • 单一文档转为PDF,文档是一个下载链接,用HTTP GET方式,见:文档转换GET
  • 单一文档转为PDF,文档POST到服务器,用HTTP POST方式,见:文档转换POST
  • 多个图片转为PDF,文档是多个下载链接,用HTTP POST方式,见:多张图片转换POST

基本用法

由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:

  1. 用HTTP GET方式,轮询“查询 query接口”获得结果。详细见:查询 QUERY
  2. 设置callbackurl,当转换结束后,系统会回调该URL直接推送转换结果。详细见:回调URL

API调用需要签名,详细见华为官方签名:

https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html

文档转换GET

将文档下载地址url转换为PDF,type是源文档的type,比如要把docx转为pdf,type就是docx

请求参数:

参数 类型 备注 是否必须发送
url string 文件url,支持http(s),ftp开头,需要URL Encoding 是
type string 要转换的文档扩展名 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用 否
excelpagefitmode int 如果是 Excel 文件,页面缩放方式:0 默认(不使用打印区域时将所有列调整为一页宽;使用打印区域时沿用源文件缩放);1 将所有列调整为一页宽;2 将每张工作表调整为一页;3 将所有行调整为一页高;4 无缩放,按 100% 比例输出。设置为 1、2、3、4 时,与 exceluseprintarea=1 同时使用仍会保留打印区域 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
userpassword string 生成PDF文件的User Password,默认无 否
ownerpassword string 生成PDF文件的Owner Password,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大10个 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见 回调URL 否

请求示例:

http://all2pdf.apistore.huaweicloud.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.docx&type=docx

将所在url地址的docx文件转为PDF,type就是源文件的type,这个例子里就是docx

必须签名才能调用成功,签名见华为签名规则:

https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html

支持多种文件格式,具体如下(type可传入如下格式):

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本
网址网页 url 网址,例如:https://www.duhuitech.com

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
token string 是 用于query接口

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
    "code":40001,
    "msg":"ParmNotRight"
}

文档转换POST

直接将单个文档POST到服务器,大小限制12M

请求参数:

参数 类型 备注 是否必须发送
file file 要转换的文档,Content-Type使用multipart/form-data,最大12M 是
type string 要转换的文档扩展名 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用 否
excelpagefitmode int 如果是 Excel 文件,页面缩放方式:0 默认(不使用打印区域时将所有列调整为一页宽;使用打印区域时沿用源文件缩放);1 将所有列调整为一页宽;2 将每张工作表调整为一页;3 将所有行调整为一页高;4 无缩放,按 100% 比例输出。设置为 1、2、3、4 时,与 exceluseprintarea=1 同时使用仍会保留打印区域 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
userpassword string 生成PDF文件的User Password,默认无 否
ownerpassword string 生成PDF文件的Owner Password,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大10个 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

http://all2pdf.apistore.huaweicloud.com/v1/convert_post

Header中的Content-Type必须是multipart/form-data

必须签名才能调用成功,签名见华为签名规则:

https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html

支持多种文件格式,具体如下(type可传入如下格式):

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
token string 是 用于query接口

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
    "code":40001,
    "msg":"ParmNotRight"
}

多张图片转换POST

将多张图片转换为pdf,url传入多张图片的地址,传入非图片格式无效

Header中的Content-Type传入application/json

POST Body传入JSON,格式如下:

请求参数BODY:

参数 类型 备注 是否必须发送
url string数组 要转换的图片URL数组,支持http(s),ftp开头 是
type string 固定传img 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
ocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
deskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
clean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
userpassword string 生成PDF文件的User Password,默认无 否
ownerpassword string 生成PDF文件的Owner Password,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大10个 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

http://all2pdf.apistore.huaweicloud.com/v1/convert

传入的Body为JSON格式,如下:

{ "url": [ "http://xxx/xxx1.png","http://xxx/xxx2.png" ], "type": "png" }

必须签名才能调用成功,签名见华为签名规则:

https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html

例如要把多张图片OCR,变为文字可选的PDF,并且将斜的文字矫正,将图片背景去除,那么JSON就是:

{ "url": [ "http://xxx/xxx1.png","http://xxx/xxx2.png" ], "type": "img", "ocr": 1, "deskew": 1, "clean": 1 }

支持几乎所有图片格式

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
token string 是 用于query接口

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
    "code":40001,
    "msg":"ParmNotRight"
}

文件操作POST

支持以下操作:

类型 操作
文件处理 文件合并、文件拆分、转为图片PDF、文件修复、文件扁平化、文件线性化、PDF压缩、PDF净化、PDF灰度化
内容叠加与排版 图片签名、文件加水印、文件去水印、PDF前景叠加、PDF背景叠加、页眉页脚、页面加页码、PDF多页拼版 / n-up、PDF小册子排版
页面处理 页面删除、页面插入、页面提取、页面重排、页面倒序、页面复制、空白页插入、自动删除空白页、页面旋转、PDF裁边、PDF页数查询、PDF页面信息
内容提取与结构 提取图片、PDF文本提取、PDF元数据读取/修改、PDF目录导出、PDF目录导入
安全与权限 文件加密、文件解密、文件是否加密

POST Body传入JSON,Header中的Content-Type传入application/json

通过指定action,对PDF文件进行不同的操作,详细如下:

文件处理

  • 文件合并:

专属参数:无。

示例:

{"action":"merge","url":["https://xxx/xxx.pdf", "https://xxx/xxx.pdf"]}

会合并为一个PDF文件。url数组需传2个以上PDF地址。

  • 文件拆分:

支持的专属参数:splitcount(按固定页数拆分)、pageranges(按多个页段拆分,使用竖线分隔;和 splitcount 同时传时优先按 splitcount)。

参数 类型 备注 是否必须发送
splitcount number 按固定页数拆分;和 pageranges 同时传时优先按本参数处理 条件必传
pageranges string 按多个页段拆分,使用竖线分隔,如 `1-3 4-10

示例:

{"action":"split","url":["https://xxx/xxx.pdf"],"splitcount":2}

会把PDF拆分为多个PDF,每个PDF是2页。

{"action":"split","url":["https://xxx/xxx.pdf"],"pageranges":"1-3|4-10|11-12"}

会按 pageranges 指定的页段拆分为多个PDF,依次输出为1.pdf、2.pdf、3.pdf。

pdffilename 不支持;拆分结果文件会按 1.pdf、2.pdf、3.pdf 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.pdfurls string数组 拆分后 PDF 地址数组,按输出顺序返回
result.count number 拆分后 PDF 数量

返回结果示例:

{"result":{"status":"done","count":3,"pdfurls":["https://file.duhuitech.com/o/xxx/1.pdf","https://file.duhuitech.com/o/xxx/2.pdf","https://file.duhuitech.com/o/xxx/3.pdf"]}}
  • 转为图片PDF:

支持的专属参数:compress(可选,默认0不压缩)。

参数 类型 备注 是否必须发送
compress number 压缩等级;可选,默认 0 不压缩 否

示例:

{"action":"imagepdf","url":["https://xxx/xxx.pdf"],"compress":2}

会把PDF每一页转成图片后再重新生成一个图片型PDF。

  • 文件修复:

专属参数:无。

示例:

{"action":"repairpdf","url":["https://xxx/xxx.pdf"]}

会尝试修复PDF结构问题,并输出修复后的PDF。

  • 文件扁平化:

专属参数:无。

示例:

{"action":"flatten","url":["https://xxx/xxx.pdf"]}

会把PDF中的批注等可交互内容扁平化到页面内容里。

  • 文件线性化:

专属参数:无。

示例:

{"action":"linearize","url":["https://xxx/xxx.pdf"]}

会把PDF做快速网页预览优化。

  • PDF压缩:

支持的专属参数:compress(必传,支持1、2、3,也支持直接传目标图片分辨率)。

参数 类型 备注 是否必须发送
compress number 压缩等级;支持 1、2、3,也支持直接传目标图片分辨率 是

示例:

{"action":"compresspdf","url":["https://xxx/xxx.pdf"],"compress":2}

压缩PDF;如果压缩结果不比原文件更小,会保留较小版本输出。

  • PDF净化:

专属参数:无。

示例:

{"action":"pdfsanitize","url":["https://xxx/xxx.pdf"]}

会重写PDF结构并清空常见元数据字段,输出净化后的PDF。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 净化后 PDF 地址
result.count number 净化后 PDF 总页数
result.data object 净化后的元数据对象;字段结构与 pdfmeta 读取返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/sanitize.pdf","data":{}}}
  • PDF灰度化:

专属参数:无。

示例:

{"action":"grayscale","url":["https://xxx/xxx.pdf"]}

会把PDF转换为灰度版,并输出新的PDF。

内容叠加与排版

  • 图片签名:

支持的专属参数:pageindex(签名页码)、stampurl(签名图片地址)、stamprect(签名位置和大小,格式 x,y,width,height)。

参数 类型 备注 是否必须发送
pageindex number 签名页码,示例为第 1 页 是
stampurl string 签名图片 URL 是
stamprect string 签名位置和大小,格式 x,y,width,height,单位像素 是

示例:

{"action":"stampsignature","url":["https://xxx/xxx.pdf"],"pageindex":1,"stampurl":"http://xxx/xxx.png","stamprect":"10,10,100,50"}

会把PDF的第一页加上图片签名,签名位置在x=10,y=10,宽度=100,高度=50,单位像素。

  • 文件加水印:

支持的专属参数:watermark、watermarkstyle、watermarkfontsize、watermarkfontcolor、watermarkfontalpha。

参数 类型 备注 是否必须发送
watermark string 水印文字内容 是
watermarkstyle number 水印样式编号 按需
watermarkfontsize number 水印字体大小 按需
watermarkfontcolor string 水印字体颜色,格式如 #000000 按需
watermarkfontalpha number 水印透明度 按需

示例:

{"action":"watermark","url":["https://xxx/xxx.pdf"],"watermark":"CONFIDENTIAL","watermarkstyle":1,"watermarkfontsize":24,"watermarkfontcolor":"#000000","watermarkfontalpha":20}

会给PDF每一页添加文字水印。

  • 文件去水印:

专属参数:无。

示例:

{"action":"removewatermark","url":["https://xxx/xxx.pdf"]}

会尝试移除PDF中的水印内容,并输出新的PDF。

  • PDF前景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"overlaypdf","url":["https://xxx/base.pdf","https://xxx/overlay.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做前景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为前景叠加到第1个PDF上,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • PDF背景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"underlaypdf","url":["https://xxx/base.pdf","https://xxx/background.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做背景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为背景叠加到第1个PDF下方,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • 页眉页脚:

支持的专属参数:data.header、data.footer、data.fontsize、data.fontcolor、data.fontalpha。

参数 类型 备注 是否必须发送
data.header string 页眉文字;和 data.footer 至少传一个 条件必传
data.footer string 页脚文字;和 data.header 至少传一个 条件必传
data.fontsize number 文字大小 按需
data.fontcolor string 文字颜色,格式如 #333333 按需
data.fontalpha number 文字透明度 按需

示例:

{"action":"headerfooter","url":["https://xxx/xxx.pdf"],"data":{"header":"Confidential","footer":"第 {{page}} / {{total}} 页","fontsize":12,"fontcolor":"#333333","fontalpha":80}}

会给每一页叠加文字页眉页脚。

  • 页面加页码:

专属参数:无。

示例:

{"action":"pageaddnumber","url":["https://xxx/xxx.pdf"]}

会把PDF每一页右下角添加页码。

  • PDF多页拼版 / n-up:

支持的专属参数:data.nup、data.paper、data.landscape、data.frame、data.scale。

参数 类型 备注 是否必须发送
data.nup string 每张输出纸放几页;格式为 列x行,如 2x1、2x2、3x2。2x1 表示一张纸放 2 页,2x2 表示一张纸放 4 页 是
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向。横向通常更适合 2x1、2x2 这类布局 按需
data.frame number 是否给每个小页面画边框。1 表示画边框,方便区分每个子页;省略或 0 表示不画 按需
data.scale number 每个小页面的缩放比例,必须大于 0。常用 0.9 到 1.0;数值越小,页面四周留白越多 按需

常见纸张说明:

  • a4paper:最常见的办公打印纸;如果不确定,优先用它。
  • a3paper:比 A4 更大,适合一次拼更多页。
  • a5paper:比 A4 更小,适合输出更小的页面。
  • letterpaper:北美常见纸型。
  • legalpaper:比 letterpaper 更长,常用于合同、表格。

示例 1:一张纸放 4 页,适合做讲义或速读版

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a4paper","landscape":1,"frame":1,"scale":0.95}}

示例 2:一张纸放 2 页,保留更大的阅读字号

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x1","paper":"a4paper"}}

示例 3:放到更大的纸上,减少内容拥挤

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a3paper","scale":0.9}}

这个操作会把多页 PDF 重新排到一张纸上。原文件里的超链接、书签、表单等交互信息可能不会保留。

  • PDF小册子排版:

支持的专属参数:data.paper、data.landscape、data.scale、data.signature、data.flipotheredge。

参数 类型 备注 是否必须发送
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向;做双面打印小册子时,横向纸面通常更常见 按需
data.scale number 页面缩放比例,必须大于 0。常用 0.9 到 1.0;如果担心装订后内容太靠边,可以适当调小 按需
data.signature number 每个装订单元包含多少页,必须是 4 的倍数,如 4、8、16、32。省略时会把整份文件当成一个完整小册子自动排版 按需
data.flipotheredge number 是否切换双面打印的翻页边。1 表示开启;如果你试打后发现背面上下颠倒,可以尝试开启这个参数 按需

signature 可以简单理解为“分几本小册子来装订”:

  • signature=16:每 16 页做成一个装订单元。
  • signature=32:每 32 页做成一个装订单元。
  • 不传:整份 PDF 当成一个小册子,系统会自动补空白页到 4 的倍数。

示例 1:整份 PDF 直接做成一本小册子

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper"}}

示例 2:每 16 页做一个装订单元,适合页数较多的文档

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1,"scale":0.95}}

示例 3:如果双面打印背面方向不对,可尝试切换翻页边

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1}}

这个操作会按小册子阅读顺序重新排页,并在需要时自动补空白页,适合双面打印后对折装订。原文件里的超链接、书签、表单等交互信息可能不会保留。

页面处理

  • 页面删除:

支持的专属参数:pageindexes(要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排)。

参数 类型 备注 是否必须发送
pageindexes string 要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排 是

示例:

{"action":"pageremove","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页删除;若传入 3,1 或 1,3,4-5,也是按页码集合选中后删除,不会因为输入顺序改变删除逻辑。

  • 页面插入:

支持的专属参数:pageindex(插入位置)、pageinserturl(插入的PDF地址)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;示例为在第 1 页后插入 是
pageinserturl string 待插入 PDF 的 URL 是

示例:

{"action":"pageinsert","url":["https://xxx/xxx.pdf"],"pageindex":1,"pageinserturl":"https://xxx/xxx.pdf"}

会在PDF的第一页后面插入 pageinserturl 这个地址的PDF。

  • 页面提取:

支持的专属参数:pageindexes(要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出)。

参数 类型 备注 是否必须发送
pageindexes string 要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出 是

示例:

{"action":"pageextract","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页提取出来作为一个PDF文件;也支持如 3,1,2,5-6 这样的页序写法。

  • 页面重排:

支持的专属参数:pageindexes(最终页序,支持乱序、范围和列表/区间混合)。

参数 类型 备注 是否必须发送
pageindexes string 最终页序,支持乱序、范围和列表/区间混合 是

示例:

{"action":"pageorder","url":["https://xxx/xxx.pdf"],"pageindexes":"3,1,2,5-6"}

会按给定顺序重新生成一个PDF文件。

  • 页面倒序:

专属参数:无。

示例:

{"action":"pagereverse","url":["https://xxx/xxx.pdf"]}

会把PDF所有页面整体倒序输出。

  • 页面复制:

支持的专属参数:pageindexes(可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合 否

示例:

{"action":"pageduplicate","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3,5-6"}

会在原页面后面插入对应页面副本;若传入 3,1,仍按原PDF页序在第1页、第3页后插入副本。

  • 空白页插入:

支持的专属参数:pageindex(插入位置,0表示插到第一页前)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;0 表示插到第一页前 是

示例:

{"action":"blankpageinsert","url":["https://xxx/xxx.pdf"],"pageindex":2}

会在第2页后插入1个同尺寸空白页。

  • 自动删除空白页:

专属参数:无。

示例:

{"action":"removeblankpages","url":["https://xxx/xxx.pdf"]}

会自动识别接近纯白的页面并删除,适合扫描件里的空白隔页清理。

  • 页面旋转:

支持的专属参数:pagerotateangle(旋转角度)、pageindexes(可选,按原PDF页序筛选指定页面)。

参数 类型 备注 是否必须发送
pagerotateangle number 旋转角度,如 90 是
pageindexes string 可选;仅按原PDF页序筛选并旋转指定页面,支持区间组合 否

示例:

{"action":"pagerotate","url":["https://xxx/xxx.pdf"],"pagerotateangle":90,"pageindexes":"2,4-6"}

会把PDF整本或指定页面按给定角度旋转;若传入 3,1,会旋转第1页和第3页,但不会重排页面。

  • PDF裁边:

支持的专属参数:pageindexes、data.left、data.right、data.top、data.bottom。

参数 类型 备注 是否必须发送
pageindexes string 需要裁边的页码范围,支持区间组合;按原PDF页序处理选中页 按需
data.left number 左边裁剪量 按需
data.right number 右边裁剪量 按需
data.top number 上边裁剪量 按需
data.bottom number 下边裁剪量 按需

示例:

{"action":"pdfcrop","url":["https://xxx/xxx.pdf"],"pageindexes":"2-10","data":{"left":18,"right":18,"top":24,"bottom":24}}

会按统一边距修改选中页面的CropBox,并输出新的pdfurl。pageindexes 仅用于筛选要裁边的页面,不会因为输入顺序而重排页面。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 裁边后 PDF 地址
result.count number 裁边后 PDF 总页数
result.data object 裁边后整份 PDF 的页面信息;结构与 pageinfo 返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/crop.pdf","data":{"uniform":true,"pages":[{"page":1,"width":559.28,"height":805.89,"orientation":"portrait"}]}}}
  • PDF页数查询:

专属参数:无。

示例:

{"action":"pagecountinfo","url":["https://xxx/xxx.pdf"]}

会只查询PDF页数。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数

返回结果示例:

{"result":{"status":"done","count":12}}
  • PDF页面信息:

支持的专属参数:pageindexes(可选;不传返回全部页面,传则按原PDF页序返回指定页)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传返回全部页面,传则按原PDF页序返回指定页 否

示例:

{"action":"pageinfo","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3-4"}

会返回每一页的宽高和横竖版信息;若传入 3,1,返回结果仍按第1页、第3页的原PDF页序排列。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number 返回的页面条数;不传 pageindexes 时等于 PDF 总页数
result.data.uniform boolean 返回页面尺寸是否全部一致
result.data.pages array 页面信息数组,按原 PDF 页序返回
result.data.pages[].page number 页码,从 1 开始
result.data.pages[].width number 页面宽度,单位 pt
result.data.pages[].height number 页面高度,单位 pt
result.data.pages[].orientation string 页面方向:portrait、landscape 或 square

返回结果示例:

{"result":{"status":"done","count":3,"data":{"uniform":false,"pages":[{"page":1,"width":595.28,"height":841.89,"orientation":"portrait"},{"page":3,"width":841.89,"height":595.28,"orientation":"landscape"},{"page":4,"width":595.28,"height":595.28,"orientation":"square"}]}}}

内容提取与结构

  • 提取图片:

专属参数:无。

示例:

{"action":"extractimg","url":["https://xxx/xxx.pdf"]}

会把PDF里的图片提取出来。

pdffilename 不支持;导出的图片文件会按 1.png、2.png 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.imageurls string数组 提取出的图片地址数组,按输出顺序返回
result.count number 提取出的图片数量

返回结果示例:

{"result":{"status":"done","count":2,"imageurls":["https://file.duhuitech.com/o/xxx/1.png","https://file.duhuitech.com/o/xxx/2.png"]}}
  • PDF文本提取:

支持的专属参数:pageindexes、outfilename、data.textwithformat、data.textperpage。

参数 类型 备注 是否必须发送
pageindexes string 需要提取文字的页码范围,支持区间组合、乱序和列表/区间混合;会先按给定页序筛页,再提取文字 按需
outfilename string 输出文件名;默认随机 按需
data.textwithformat number 是否尽量保留排版信息;1 表示保留 按需
data.textperpage number 是否按页拆分输出;1 表示每页单独输出并打包 按需

示例:

{"action":"extracttext","url":["https://xxx/xxx.pdf"],"pageindexes":"1-3","outfilename":"chapter1","data":{"textwithformat":1,"textperpage":1}}

会提取PDF文字内容;默认输出一个txt文件,textperpage 为1时输出按筛选后页序分拆的zip文件。

pdffilename 不适用,请使用 outfilename 控制输出文件名前缀。

返回结果重点字段:

字段 类型 说明
result.fileurl string 提取结果文件地址;可能是 txt,也可能是按页拆分后的 zip
result.count number 实际提取的页数;不传 pageindexes 时等于 PDF 总页数
result.filesize number 输出文件大小

返回结果示例:

{"result":{"status":"done","count":3,"filesize":2048,"fileurl":"https://file.duhuitech.com/o/xxx/chapter1.zip"}}
  • PDF元数据读取/修改:

支持的专属参数:meta.title、meta.author、meta.subject、meta.keywords、meta.creator、meta.producer。

参数 类型 备注 是否必须发送
meta.title string PDF 标题 按需
meta.author string PDF 作者 按需
meta.subject string PDF 主题 按需
meta.keywords string PDF 关键词 按需
meta.creator string 生成工具 按需
meta.producer string 生产程序 按需

示例:

{"action":"pdfmeta","url":["https://xxx/xxx.pdf"],"meta":{"title":"Quarterly Report","author":"Duhui"}}

不传 meta 时会读取当前PDF的常用元数据;传 meta 时会更新对应字段并返回新的pdfurl和更新后的data。

读取模式下 pdffilename 不适用;写入模式下支持 pdffilename。

返回结果重点字段:

字段 类型 说明
result.data object 元数据对象
result.data.title string 标题,存在时返回
result.data.author string 作者,存在时返回
result.data.subject string 主题,存在时返回
result.data.keywords string 关键词,存在时返回
result.data.creator string 生成工具,存在时返回
result.data.producer string 生产程序,存在时返回
result.data.creationdate string 创建时间,存在时返回
result.data.moddate string 修改时间,存在时返回
result.data.tagged string 是否带标签,存在时返回
result.data.encrypted string 是否加密,存在时返回

返回结果示例(读取):

{"result":{"status":"done","count":12,"data":{"title":"Quarterly Report","author":"Duhui","creator":"Word","producer":"Skia/PDF m123"}}}

更新模式下,返回结果会额外包含 result.pdfurl。

  • PDF目录导出:

专属参数:无。

示例:

{"action":"outlineexport","url":["https://xxx/xxx.pdf"]}

会读取PDF目录书签。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数
result.data.named_dests object 命名目标映射
result.data.outline array 目录树数组
result.data.outline[].title string 目录标题
result.data.outline[].dest.page_index number 目标页索引,从 0 开始
result.data.outline[].dest.dest array 目标定位参数,如 ["/Fit"]
result.data.outline[].kids array 子目录数组;没有子目录时可省略

目录节点还可能包含 dest_name、color、flags、count、is_open 等可选字段。

返回结果示例:

{"result":{"status":"done","count":12,"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]},"kids":[{"title":"Section 1.1","dest":{"page_index":1,"dest":["/Fit"]}}]}]}}}
  • PDF目录导入:

支持的专属参数:data(目录 JSON 对象,建议先调用 outlineexport 获取后原样传回)。

参数 类型 备注 是否必须发送
data JSON对象 目录 JSON 对象;建议先调用 outlineexport 获取后原样传回 是

示例:

{"action":"outlineimport","url":["https://xxx/xxx.pdf"],"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]}}]}}

会把目录JSON写回PDF,并输出新的pdfurl。data 顶层应包含 named_dests 和 outline;其中 page_index 从 0 开始计数。

安全与权限

  • 文件加密:

支持的专属参数:userpassword、ownerpassword、pdfrestriction。

参数 类型 备注 是否必须发送
userpassword string 用户密码;和 ownerpassword 至少传一个 条件必传
ownerpassword string 所有者密码;和 userpassword 至少传一个 条件必传
pdfrestriction string PDF 权限限制编码,如 110 按需

示例:

{"action":"encrypt","url":["https://xxx/xxx.pdf"],"userpassword":"YOUR_PASSWORD","ownerpassword":"YOUR_PASSWORD","pdfrestriction":"110"}

userpassword 和 ownerpassword 至少传一个。该操作会给PDF加密码和权限限制。

  • 文件解密(文件加密转换接口中已有):

支持的专属参数:password(解密密码,可以为空)。

参数 类型 备注 是否必须发送
password string 解密密码;如果原文件无密码可传空字符串 按需

示例:

{"action":"decrypt","url":["https://xxx/xxx.pdf"],"password":""}

会把PDF解密。

  • 文件是否加密:

专属参数:无。

示例:

{"action":"checkencrypt","url":["https://xxx/xxx.pdf"]}

会检查PDF是否加密。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.data.encrypted boolean true 表示已加密,false 表示未加密

返回结果示例:

{"result":{"status":"done","data":{"encrypted":true}}}

通用请求参数BODY(JSON):

参数 类型 备注 是否必须发送
action string 操作类型,取值见上方各 action 小节 是
url string数组 待处理的PDF URL数组,支持http(s)、ftp;每个action对url数量和含义的要求见对应 action 小节 是
pdffilename string 生成输出文件的文件名,默认随机;是否支持及具体含义见对应 action 小节 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

其余参数均为 action 专属参数,见对应 action 小节。

请求示例:

http://all2pdf.apistore.huaweicloud.com/v1/pdfaction

传入的Body为JSON格式,见上方详细操作。

必须签名才能调用成功,签名见华为签名规则:

https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

异步任务完成后的通用说明:

  • 所有 action 都支持 callbackurl。
  • 大多数生成 PDF 的 action 都支持 pdffilename;任务完成后,可在 查询结果 或回调结果里看到 result.pdfurl、result.count,通常还会返回 result.filesize。
  • 特殊 action 的最终返回字段见对应 action 小节,例如:split 返回 result.pdfurls,extractimg 返回 result.imageurls,extracttext 返回 result.fileurl,pagecountinfo、pageinfo、outlineexport、checkencrypt 等返回结构化数据。

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

查询 QUERY

请求参数:

参数 类型及范围 备注 是否必须发送
token string 是

请求示例:

https://api.duhuitech.com/q?token=YOUR_TOKEN

无需签名,无调用次数限制

由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。

返回数据结构:

名称 含义 类型及范围 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
token string 是 请求的token
result Dictionary 否 成功后返回

result:

名称 含义 类型及范围 是否必须返回 备注
status 状态 string 是 Pending:还未开始
Doing:正在转换
Done:转换成功
Failed:转换失败
progress 进度 number(0.00 - 1.00) 否(status为Doing时返回) 比如0.88表示88%
pdfurl pdf文件地址 string 否(status为Done时返回) 转换出来的PDF地址,http和https都支持
count 总页数 integer 否(status为Done时返回) PDF页面总数
reason 失败原因 string 否(status为Failed时可能返回) 转换失败的原因

返回示例(成功状态):

{
    "code":10000,
    "msg":"",
    "token":"YOUR_CREDENTIAL",
    "result":
    {
        "progress":0.02,
        "status":"Doing"
    }
}
{
    "code":10000,
    "msg":"",
    "token":"YOUR_CREDENTIAL",
    "result":
    {
        "status":"Done",
        "pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf",
        "count":10
    }
}

返回示例(失败状态):

{
    "code":40000,
    "msg":"No such token"
}

注意:

  • 上传文件大小不能超过1500M。
  • 最大转换时长:1小时,超过时间未完成则自动失败。
  • 转换完成后,下载链接有效时间:1小时。

上述最后2项有延长需求请联系客服: 客服二维码

回调URL:

用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。

当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:

以POST方式调用该URL,Header头中Content-Type: application/json

Body为JSON格式,内容和Query的结果相同,例如:

{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf","count":10}}

服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:

系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。

回调URL超时时间10秒。


关于下载转换后的文件需支持302跳转

接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。

以下方式默认会跟随跳转,一般无需额外配置:

wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)

少数默认不跟随,需手动打开:

  • curl:加 -L,如 curl -L -o out.bin "下载地址"
  • Java java.net.http.HttpClient:设置 .followRedirects(HttpClient.Redirect.NORMAL)
  • PHP curl 扩展:设置 CURLOPT_FOLLOWLOCATION => true

若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。


错误码表:

JSON里返回的code 错误信息
40000 通用错误
40001 参数错误
40002 参数不符合规范
腾讯云接口参考

V2 全参数转换 · 文件操作

本渠道认证说明

概述

使用流程

由于转换需要时间,文件越大页数越多,转换越久,故默认采用异步的方式获得转换结果。即调用转换接口后会获得token,随后有2种方式查询转换结果:

  1. 定时轮询结果,调用“查询结果接口”。详细见:查询结果
  2. 回调,设置callbackurl,当转换结束后,系统会回调该URL直接推送转换结果。详细见:回调URL

调用转换接口

由于腾讯云网关迁移的关系,故新老用户拿到的 SecretID 不同,老用户SecretID以AKID开头的,请使用V1域名和签名。新用户使用v2域名和签名。 注意:v1和v2调用api的域名不一样。 注意:v1文档和v2文档调用api的url不一样。

腾讯云新旧网关界面示意

由于腾讯云GET方式支持参数数量有限,故优先建议使用 文档转换-全参数 接口,该接口直接HTTP POST JSON:

  • JSON支持输入:文件url;文件Base64字符串;多张图片的url。见:文档转换-全参数
  • 支持全量参数

旧转换接口包括3种转换方式:

  • 单一文档转为PDF,文档是一个下载链接,用HTTP GET方式,见:文档转换GET
  • 单一文档转为PDF,文档POST到服务器,用HTTP POST Form Data方式,见:文档转换POST
  • 多个图片转为PDF,文档是多个下载链接,用HTTP POST JSON方式,见:多张图片转换POST

调用文件操作接口

调用转换API需要签名,详细见文档附录:腾讯签名规则 调用查询结果API无需签名。

文档转换-全参数

v2域名:

http&https://ap-shanghai.cloudmarket-apigw.com/service-gsefnc5p/v2/convert_async

v1域名:

http&https://service-gsefnc5p-1256652084.sh.apigw.tencentcs.com/release/v2/convert_async

HTTP方式: POST

Header中的Content-Type传入application/json

Body是JSON格式,支持以下3种输入源文件的方法:

方法1: 文件url,最大1500M:

{"input": ["http://xxx.docx"]}

方法2: 文件Base64字符串,注意需要传入type(源文档类型),Base64字符串最大10M:

{"input": ["base64字符串"], "type": "docx"}

方法3: 多张图片url,注意只能是图片:

{"input": ["http://xxx.jpg", "http://xxx.png"]}

必须签名才能调用成功,签名见腾讯签名规则:

支持以下源文件格式:

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本
网址网页 url 网址,例如:https://www.duhuitech.com

自定义参数:


参数 类型 备注 默认值
type string 要转换的原始文件扩展名,如果不传,则取url中的扩展名,注意如果无法获取扩展名会导致转换异常或出错 空
输出PDF相关
linearization int 是否需要快速web显示(PDF流式显示),默认0否,1是 0
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 0
flatten int 是否扁平化(注释合并到PDF),默认0否,1是 0
imagepdf int 生成图片PDF,默认0否,1是 0
pagesize int

设定页面大小。

如果源文件是Word,TXT,Excel,HTML,Epub此参数会覆盖excelpagesize。默认0:源文档设定值,如无则是A4。

如果源文件是图片,默认0:长图保持原图大小,非长图A4,原图不满A4大小的保持原图大小。

取值:1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger

0
adjustorientation int 调整所有页横屏或是竖屏。默认0不调整。
1: 竖屏,如果页面横屏则顺时针90度变竖屏
2: 竖屏,如果页面横屏则逆时针90度变竖屏
3: 横屏,如果页面竖屏则顺时针90度变横屏
4 :横屏,如果页面竖屏则逆时针90度变横屏
0
pagesplit int 将每一页按长边等分为多页。例如一页是试卷,可以分为左右二页。默认0不分页,2: 分2页,3: 分3页 0
needpagesizeinfo int 是否返回每一页的大小信息,默认0:否,1:是 0
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 空
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 空
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 空
pdffilename string 生成的PDF文件的文件名,默认随机 空
输出水印相关
watermark string 添加水印,字符个数最大15个 空
watermarkfontsize int 水印的字体大小,默认24pt 24
watermarkfontcolor string 水印的颜色,输入颜色码,默认黑色#000000,必须7位 #000000
watermarkfontalpha int 水印的透明度,取值范围1-100,越小越透明,默认20 20
watermarkstyle int 水印的样式,默认0:文档中央一个水印;1: 文档铺满水印 0
输入Office文件相关(源文件为Word,PPT,Excel,WPS等)
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 0
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 0
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 0
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 0
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 0
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 0
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 0
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 0
powerpointoutputtype int 如果是PPT文件,设定导出样式,默认幻灯片。0:幻灯片,0以上是讲义模式:1:每页一个幻灯片,2:每页二个幻灯片,3:每页三个幻灯片,4:每页四个幻灯片,5:每页六个幻灯片,6:每页九个幻灯片 0
powerpointhandoutorder int 如果是PPT文件,当设置为讲义时,设定顺序,默认0水平,1垂直 0
powerpointhandoutorientation int 如果是PPT文件,当设置为讲义时,输出文件的方向,默认0不改变,1横向,2纵向 0
pageorientation int 如果是Word,TXT,Excel,HTML,设定页面横向还是竖向,此参数会覆盖excelislandscape。默认0不变,1横向,2 竖向 0
输入图片,扫描版PDF相关(源文件jpg,png,pdf等)
ocr int 是否识别图中文字或扫描版PDF文字,在输出的PDF中变为可选可搜索的文字,默认0否,1是 0
language int 如果开启OCR,识别语言选项,默认2简体中文:
1:英语
2:简体中文
3:繁体中文
4:法语
5:德语
6:意大利语
7:俄语
8:日文
9:韩文
10:西班牙语
11:葡萄牙语
12:丹麦语
13:荷兰语
14:芬兰语
15:挪威语
16:瑞典语
17:土耳其语
2
dewarp int 是否切边矫正,默认0否,1是。如果打开,每次只允许传入一张图(图片分辨率短边大于20,长边小于10000) 0
deskew int 是否将斜的文字矫正,默认0否,1是 0
clean int 是否清除图像背景只显示文字,默认0否,1是 0
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 0
text int 如果开启ocr,是否使用矢量文字替换图片内文字,使得即使图片中的文字模糊,pdf放大后文字仍然清晰。默认0否,1是 0
split2p int 如果开启ocr,横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 0
imagesize int 统一每页为固定宽,默认0否,输入数字即每页宽度,最大4096。设置该值将导致pagesize失效。 0
网址网页相关(type传url, html, md等)
ismobileurl int 如果type是url,html,md,是否移动端显示。默认0:桌面端网页,1:移动端网页 0
urldesktopwidth int 如果type是url,html,md,桌面端显示。设定网页最大的宽度,默认:1440,最大:1920 0
htmlpagemargin string 如果type是url,html,md,生成的页面边距。输入的是字符串,按照顺序:left top right bottom。单位可以是:px,in,cm,mm。例如左上右下分别是1px,2px,3px,4px,传的字符串就是:1px 2px 3px 4px。默认值:左右0,上下各1cm 空
urlwait int 如果type是url,停留一段时间再抓取页面,单位秒。默认0:不停留,最大30。比如10就是延迟10秒 0
urltimeout int 如果type是url,加载资源的超时时间。默认0:40秒,最大120秒。比如10就是10秒 0
urlonepage int 如果type是url,html,md,是否生成单页的长PDF。默认0:否, 1:是。注意打开这个选项后htmlpagemargin失效 0
输入网页HTML相关(源文件HTML)
htmloutline int 如果是HTML,是否根据h1,h2等html标记生成outline,默认0否,1是 0
输入EPUB相关(type传epub等)
epubfontsize int 如果type是epub等,输出的字体大小(单位pt,磅)。默认0自动 0
epublineheight int 如果type是epub等,输出的行高(单位百分比)。例如120表示行高是字体大小的120%。默认0自动 0
epubpagesize string 如果type是epub等,输出的页面自定义大小(单位厘米)。此参数如果设置会覆盖pagesize。默认空自动。例如7.2x15.5 空
epubmargin string 如果type是epub等,输出的页面边距(单位pt,磅)。默认空自动。页边距格式:左 上 右 下,用空格分隔。例如5 5 5 5 空
输入CAD文件相关(源文件dwg, dwf等)
cadlayer int 如果是CAD文件,是否生成Layer层,默认0否,1是 0
cadisdisplay int 如果是CAD文件,是否按照Display显示,默认0不按照,1按照Display 0
cadquality int 如果是CAD文件,生成的文件品质,默认3。取值从1-5品质从低到高。 3
caddetectempty int 如果是CAD文件,是否删除空页,默认0不删除,1删除。 0
其他
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 空
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 空

请求示例:

  • 例1: 把word文件转为PDF,并设置1级压缩
{"input": ["http://xxx.docx"], "compress":1}
  • 例2: 把2张图片转为PDF,并识别图中文字,去除图片,转为矢量文字可选的PDF
{"input":["http://xxx.jpg", "http://xxx.png"], "ocr":1, "clean":1, "text":1}
  • 例3: 把Excel文件转为PDF,并只包含有内容的单元格,加上水印"度慧科技",设置PDF打开密码为123
{"input":["http://xxx.xlsx"], "exceluseprintarea":2, "watermark":"度慧科技", "userpassword":"YOUR_PASSWORD"}

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

文件操作POST

支持以下操作:

类型 操作
文件处理 文件合并、文件拆分、转为图片PDF、文件修复、文件扁平化、文件线性化、PDF压缩、PDF净化、PDF灰度化
内容叠加与排版 图片签名、文件加水印、文件去水印、PDF前景叠加、PDF背景叠加、页眉页脚、页面加页码、PDF多页拼版 / n-up、PDF小册子排版
页面处理 页面删除、页面插入、页面提取、页面重排、页面倒序、页面复制、空白页插入、自动删除空白页、页面旋转、PDF裁边、PDF页数查询、PDF页面信息
内容提取与结构 提取图片、PDF文本提取、PDF元数据读取/修改、PDF目录导出、PDF目录导入
安全与权限 文件加密、文件解密、文件是否加密

POST Body传入JSON,Header中的Content-Type传入application/json

通过指定action,对PDF文件进行不同的操作,详细如下:

文件处理

  • 文件合并:

专属参数:无。

示例:

{"action":"merge","url":["https://xxx/xxx.pdf", "https://xxx/xxx.pdf"]}

会合并为一个PDF文件。url数组需传2个以上PDF地址。

  • 文件拆分:

支持的专属参数:splitcount(按固定页数拆分)、pageranges(按多个页段拆分,使用竖线分隔;和 splitcount 同时传时优先按 splitcount)。

参数 类型 备注 是否必须发送
splitcount number 按固定页数拆分;和 pageranges 同时传时优先按本参数处理 条件必传
pageranges string 按多个页段拆分,使用竖线分隔,如 `1-3 4-10

示例:

{"action":"split","url":["https://xxx/xxx.pdf"],"splitcount":2}

会把PDF拆分为多个PDF,每个PDF是2页。

{"action":"split","url":["https://xxx/xxx.pdf"],"pageranges":"1-3|4-10|11-12"}

会按 pageranges 指定的页段拆分为多个PDF,依次输出为1.pdf、2.pdf、3.pdf。

pdffilename 不支持;拆分结果文件会按 1.pdf、2.pdf、3.pdf 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.pdfurls string数组 拆分后 PDF 地址数组,按输出顺序返回
result.count number 拆分后 PDF 数量

返回结果示例:

{"result":{"status":"done","count":3,"pdfurls":["https://file.duhuitech.com/o/xxx/1.pdf","https://file.duhuitech.com/o/xxx/2.pdf","https://file.duhuitech.com/o/xxx/3.pdf"]}}
  • 转为图片PDF:

支持的专属参数:compress(可选,默认0不压缩)。

参数 类型 备注 是否必须发送
compress number 压缩等级;可选,默认 0 不压缩 否

示例:

{"action":"imagepdf","url":["https://xxx/xxx.pdf"],"compress":2}

会把PDF每一页转成图片后再重新生成一个图片型PDF。

  • 文件修复:

专属参数:无。

示例:

{"action":"repairpdf","url":["https://xxx/xxx.pdf"]}

会尝试修复PDF结构问题,并输出修复后的PDF。

  • 文件扁平化:

专属参数:无。

示例:

{"action":"flatten","url":["https://xxx/xxx.pdf"]}

会把PDF中的批注等可交互内容扁平化到页面内容里。

  • 文件线性化:

专属参数:无。

示例:

{"action":"linearize","url":["https://xxx/xxx.pdf"]}

会把PDF做快速网页预览优化。

  • PDF压缩:

支持的专属参数:compress(必传,支持1、2、3,也支持直接传目标图片分辨率)。

参数 类型 备注 是否必须发送
compress number 压缩等级;支持 1、2、3,也支持直接传目标图片分辨率 是

示例:

{"action":"compresspdf","url":["https://xxx/xxx.pdf"],"compress":2}

压缩PDF;如果压缩结果不比原文件更小,会保留较小版本输出。

  • PDF净化:

专属参数:无。

示例:

{"action":"pdfsanitize","url":["https://xxx/xxx.pdf"]}

会重写PDF结构并清空常见元数据字段,输出净化后的PDF。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 净化后 PDF 地址
result.count number 净化后 PDF 总页数
result.data object 净化后的元数据对象;字段结构与 pdfmeta 读取返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/sanitize.pdf","data":{}}}
  • PDF灰度化:

专属参数:无。

示例:

{"action":"grayscale","url":["https://xxx/xxx.pdf"]}

会把PDF转换为灰度版,并输出新的PDF。

内容叠加与排版

  • 图片签名:

支持的专属参数:pageindex(签名页码)、stampurl(签名图片地址)、stamprect(签名位置和大小,格式 x,y,width,height)。

参数 类型 备注 是否必须发送
pageindex number 签名页码,示例为第 1 页 是
stampurl string 签名图片 URL 是
stamprect string 签名位置和大小,格式 x,y,width,height,单位像素 是

示例:

{"action":"stampsignature","url":["https://xxx/xxx.pdf"],"pageindex":1,"stampurl":"http://xxx/xxx.png","stamprect":"10,10,100,50"}

会把PDF的第一页加上图片签名,签名位置在x=10,y=10,宽度=100,高度=50,单位像素。

  • 文件加水印:

支持的专属参数:watermark、watermarkstyle、watermarkfontsize、watermarkfontcolor、watermarkfontalpha。

参数 类型 备注 是否必须发送
watermark string 水印文字内容 是
watermarkstyle number 水印样式编号 按需
watermarkfontsize number 水印字体大小 按需
watermarkfontcolor string 水印字体颜色,格式如 #000000 按需
watermarkfontalpha number 水印透明度 按需

示例:

{"action":"watermark","url":["https://xxx/xxx.pdf"],"watermark":"CONFIDENTIAL","watermarkstyle":1,"watermarkfontsize":24,"watermarkfontcolor":"#000000","watermarkfontalpha":20}

会给PDF每一页添加文字水印。

  • 文件去水印:

专属参数:无。

示例:

{"action":"removewatermark","url":["https://xxx/xxx.pdf"]}

会尝试移除PDF中的水印内容,并输出新的PDF。

  • PDF前景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"overlaypdf","url":["https://xxx/base.pdf","https://xxx/overlay.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做前景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为前景叠加到第1个PDF上,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • PDF背景叠加:

支持的专属参数:data.repeat(可选,控制是否把第 2 个 PDF 按页序循环铺到所有页面)。

参数 类型 备注 是否必须发送
data.repeat number 可选;传 1 时把第 2 个 PDF 按页序循环铺到所有页面;不传时默认只按第 2 个 PDF 的实际页数逐页叠加 否

示例:

{"action":"underlaypdf","url":["https://xxx/base.pdf","https://xxx/background.pdf"],"data":{"repeat":1}}

行为说明:不传 data.repeat 时,默认只会按第 2 个 PDF 的实际页数逐页做背景叠加,超出的底稿页不再叠加;传 1 时会按页序循环铺到所有页面。若第 2 个 PDF 只有 1 页,即使不传 data.repeat,系统也会自动把这一页铺到所有页面。

会把第2个PDF作为背景叠加到第1个PDF下方,并输出新的PDF。url固定传2个PDF,第1个是底稿PDF。

  • 页眉页脚:

支持的专属参数:data.header、data.footer、data.fontsize、data.fontcolor、data.fontalpha。

参数 类型 备注 是否必须发送
data.header string 页眉文字;和 data.footer 至少传一个 条件必传
data.footer string 页脚文字;和 data.header 至少传一个 条件必传
data.fontsize number 文字大小 按需
data.fontcolor string 文字颜色,格式如 #333333 按需
data.fontalpha number 文字透明度 按需

示例:

{"action":"headerfooter","url":["https://xxx/xxx.pdf"],"data":{"header":"Confidential","footer":"第 {{page}} / {{total}} 页","fontsize":12,"fontcolor":"#333333","fontalpha":80}}

会给每一页叠加文字页眉页脚。

  • 页面加页码:

专属参数:无。

示例:

{"action":"pageaddnumber","url":["https://xxx/xxx.pdf"]}

会把PDF每一页右下角添加页码。

  • PDF多页拼版 / n-up:

支持的专属参数:data.nup、data.paper、data.landscape、data.frame、data.scale。

参数 类型 备注 是否必须发送
data.nup string 每张输出纸放几页;格式为 列x行,如 2x1、2x2、3x2。2x1 表示一张纸放 2 页,2x2 表示一张纸放 4 页 是
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向。横向通常更适合 2x1、2x2 这类布局 按需
data.frame number 是否给每个小页面画边框。1 表示画边框,方便区分每个子页;省略或 0 表示不画 按需
data.scale number 每个小页面的缩放比例,必须大于 0。常用 0.9 到 1.0;数值越小,页面四周留白越多 按需

常见纸张说明:

  • a4paper:最常见的办公打印纸;如果不确定,优先用它。
  • a3paper:比 A4 更大,适合一次拼更多页。
  • a5paper:比 A4 更小,适合输出更小的页面。
  • letterpaper:北美常见纸型。
  • legalpaper:比 letterpaper 更长,常用于合同、表格。

示例 1:一张纸放 4 页,适合做讲义或速读版

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a4paper","landscape":1,"frame":1,"scale":0.95}}

示例 2:一张纸放 2 页,保留更大的阅读字号

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x1","paper":"a4paper"}}

示例 3:放到更大的纸上,减少内容拥挤

{"action":"pdfnup","url":["https://xxx/xxx.pdf"],"data":{"nup":"2x2","paper":"a3paper","scale":0.9}}

这个操作会把多页 PDF 重新排到一张纸上。原文件里的超链接、书签、表单等交互信息可能不会保留。

  • PDF小册子排版:

支持的专属参数:data.paper、data.landscape、data.scale、data.signature、data.flipotheredge。

参数 类型 备注 是否必须发送
data.paper string 输出纸张大小。建议值:a3paper、a4paper、a5paper、b4paper、b5paper、letterpaper、legalpaper。默认值为 a4paper 按需
data.landscape number 输出纸张是否横向。1 为横向,省略或 0 为纵向;做双面打印小册子时,横向纸面通常更常见 按需
data.scale number 页面缩放比例,必须大于 0。常用 0.9 到 1.0;如果担心装订后内容太靠边,可以适当调小 按需
data.signature number 每个装订单元包含多少页,必须是 4 的倍数,如 4、8、16、32。省略时会把整份文件当成一个完整小册子自动排版 按需
data.flipotheredge number 是否切换双面打印的翻页边。1 表示开启;如果你试打后发现背面上下颠倒,可以尝试开启这个参数 按需

signature 可以简单理解为“分几本小册子来装订”:

  • signature=16:每 16 页做成一个装订单元。
  • signature=32:每 32 页做成一个装订单元。
  • 不传:整份 PDF 当成一个小册子,系统会自动补空白页到 4 的倍数。

示例 1:整份 PDF 直接做成一本小册子

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper"}}

示例 2:每 16 页做一个装订单元,适合页数较多的文档

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1,"scale":0.95}}

示例 3:如果双面打印背面方向不对,可尝试切换翻页边

{"action":"pdfbooklet","url":["https://xxx/xxx.pdf"],"data":{"paper":"a4paper","signature":16,"flipotheredge":1}}

这个操作会按小册子阅读顺序重新排页,并在需要时自动补空白页,适合双面打印后对折装订。原文件里的超链接、书签、表单等交互信息可能不会保留。

页面处理

  • 页面删除:

支持的专属参数:pageindexes(要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排)。

参数 类型 备注 是否必须发送
pageindexes string 要删除的页码字符串,支持区间组合;按页码集合删除选中页,不按输入顺序重排 是

示例:

{"action":"pageremove","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页删除;若传入 3,1 或 1,3,4-5,也是按页码集合选中后删除,不会因为输入顺序改变删除逻辑。

  • 页面插入:

支持的专属参数:pageindex(插入位置)、pageinserturl(插入的PDF地址)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;示例为在第 1 页后插入 是
pageinserturl string 待插入 PDF 的 URL 是

示例:

{"action":"pageinsert","url":["https://xxx/xxx.pdf"],"pageindex":1,"pageinserturl":"https://xxx/xxx.pdf"}

会在PDF的第一页后面插入 pageinserturl 这个地址的PDF。

  • 页面提取:

支持的专属参数:pageindexes(要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出)。

参数 类型 备注 是否必须发送
pageindexes string 要提取的页码字符串,支持区间组合、乱序和列表/区间混合;结果按给定顺序输出 是

示例:

{"action":"pageextract","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3"}

会把PDF里的第一页、第三页提取出来作为一个PDF文件;也支持如 3,1,2,5-6 这样的页序写法。

  • 页面重排:

支持的专属参数:pageindexes(最终页序,支持乱序、范围和列表/区间混合)。

参数 类型 备注 是否必须发送
pageindexes string 最终页序,支持乱序、范围和列表/区间混合 是

示例:

{"action":"pageorder","url":["https://xxx/xxx.pdf"],"pageindexes":"3,1,2,5-6"}

会按给定顺序重新生成一个PDF文件。

  • 页面倒序:

专属参数:无。

示例:

{"action":"pagereverse","url":["https://xxx/xxx.pdf"]}

会把PDF所有页面整体倒序输出。

  • 页面复制:

支持的专属参数:pageindexes(可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传则每页复制一遍,传则按原PDF页序在原位复制指定页,支持区间组合 否

示例:

{"action":"pageduplicate","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3,5-6"}

会在原页面后面插入对应页面副本;若传入 3,1,仍按原PDF页序在第1页、第3页后插入副本。

  • 空白页插入:

支持的专属参数:pageindex(插入位置,0表示插到第一页前)。

参数 类型 备注 是否必须发送
pageindex number 插入位置;0 表示插到第一页前 是

示例:

{"action":"blankpageinsert","url":["https://xxx/xxx.pdf"],"pageindex":2}

会在第2页后插入1个同尺寸空白页。

  • 自动删除空白页:

专属参数:无。

示例:

{"action":"removeblankpages","url":["https://xxx/xxx.pdf"]}

会自动识别接近纯白的页面并删除,适合扫描件里的空白隔页清理。

  • 页面旋转:

支持的专属参数:pagerotateangle(旋转角度)、pageindexes(可选,按原PDF页序筛选指定页面)。

参数 类型 备注 是否必须发送
pagerotateangle number 旋转角度,如 90 是
pageindexes string 可选;仅按原PDF页序筛选并旋转指定页面,支持区间组合 否

示例:

{"action":"pagerotate","url":["https://xxx/xxx.pdf"],"pagerotateangle":90,"pageindexes":"2,4-6"}

会把PDF整本或指定页面按给定角度旋转;若传入 3,1,会旋转第1页和第3页,但不会重排页面。

  • PDF裁边:

支持的专属参数:pageindexes、data.left、data.right、data.top、data.bottom。

参数 类型 备注 是否必须发送
pageindexes string 需要裁边的页码范围,支持区间组合;按原PDF页序处理选中页 按需
data.left number 左边裁剪量 按需
data.right number 右边裁剪量 按需
data.top number 上边裁剪量 按需
data.bottom number 下边裁剪量 按需

示例:

{"action":"pdfcrop","url":["https://xxx/xxx.pdf"],"pageindexes":"2-10","data":{"left":18,"right":18,"top":24,"bottom":24}}

会按统一边距修改选中页面的CropBox,并输出新的pdfurl。pageindexes 仅用于筛选要裁边的页面,不会因为输入顺序而重排页面。

返回结果重点字段:

字段 类型 说明
result.pdfurl string 裁边后 PDF 地址
result.count number 裁边后 PDF 总页数
result.data object 裁边后整份 PDF 的页面信息;结构与 pageinfo 返回的 result.data 一致

返回结果示例:

{"result":{"status":"done","count":12,"pdfurl":"https://file.duhuitech.com/o/xxx/crop.pdf","data":{"uniform":true,"pages":[{"page":1,"width":559.28,"height":805.89,"orientation":"portrait"}]}}}
  • PDF页数查询:

专属参数:无。

示例:

{"action":"pagecountinfo","url":["https://xxx/xxx.pdf"]}

会只查询PDF页数。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数

返回结果示例:

{"result":{"status":"done","count":12}}
  • PDF页面信息:

支持的专属参数:pageindexes(可选;不传返回全部页面,传则按原PDF页序返回指定页)。

参数 类型 备注 是否必须发送
pageindexes string 可选;不传返回全部页面,传则按原PDF页序返回指定页 否

示例:

{"action":"pageinfo","url":["https://xxx/xxx.pdf"],"pageindexes":"1,3-4"}

会返回每一页的宽高和横竖版信息;若传入 3,1,返回结果仍按第1页、第3页的原PDF页序排列。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number 返回的页面条数;不传 pageindexes 时等于 PDF 总页数
result.data.uniform boolean 返回页面尺寸是否全部一致
result.data.pages array 页面信息数组,按原 PDF 页序返回
result.data.pages[].page number 页码,从 1 开始
result.data.pages[].width number 页面宽度,单位 pt
result.data.pages[].height number 页面高度,单位 pt
result.data.pages[].orientation string 页面方向:portrait、landscape 或 square

返回结果示例:

{"result":{"status":"done","count":3,"data":{"uniform":false,"pages":[{"page":1,"width":595.28,"height":841.89,"orientation":"portrait"},{"page":3,"width":841.89,"height":595.28,"orientation":"landscape"},{"page":4,"width":595.28,"height":595.28,"orientation":"square"}]}}}

内容提取与结构

  • 提取图片:

专属参数:无。

示例:

{"action":"extractimg","url":["https://xxx/xxx.pdf"]}

会把PDF里的图片提取出来。

pdffilename 不支持;导出的图片文件会按 1.png、2.png 这类顺序命名。

返回结果重点字段:

字段 类型 说明
result.imageurls string数组 提取出的图片地址数组,按输出顺序返回
result.count number 提取出的图片数量

返回结果示例:

{"result":{"status":"done","count":2,"imageurls":["https://file.duhuitech.com/o/xxx/1.png","https://file.duhuitech.com/o/xxx/2.png"]}}
  • PDF文本提取:

支持的专属参数:pageindexes、outfilename、data.textwithformat、data.textperpage。

参数 类型 备注 是否必须发送
pageindexes string 需要提取文字的页码范围,支持区间组合、乱序和列表/区间混合;会先按给定页序筛页,再提取文字 按需
outfilename string 输出文件名;默认随机 按需
data.textwithformat number 是否尽量保留排版信息;1 表示保留 按需
data.textperpage number 是否按页拆分输出;1 表示每页单独输出并打包 按需

示例:

{"action":"extracttext","url":["https://xxx/xxx.pdf"],"pageindexes":"1-3","outfilename":"chapter1","data":{"textwithformat":1,"textperpage":1}}

会提取PDF文字内容;默认输出一个txt文件,textperpage 为1时输出按筛选后页序分拆的zip文件。

pdffilename 不适用,请使用 outfilename 控制输出文件名前缀。

返回结果重点字段:

字段 类型 说明
result.fileurl string 提取结果文件地址;可能是 txt,也可能是按页拆分后的 zip
result.count number 实际提取的页数;不传 pageindexes 时等于 PDF 总页数
result.filesize number 输出文件大小

返回结果示例:

{"result":{"status":"done","count":3,"filesize":2048,"fileurl":"https://file.duhuitech.com/o/xxx/chapter1.zip"}}
  • PDF元数据读取/修改:

支持的专属参数:meta.title、meta.author、meta.subject、meta.keywords、meta.creator、meta.producer。

参数 类型 备注 是否必须发送
meta.title string PDF 标题 按需
meta.author string PDF 作者 按需
meta.subject string PDF 主题 按需
meta.keywords string PDF 关键词 按需
meta.creator string 生成工具 按需
meta.producer string 生产程序 按需

示例:

{"action":"pdfmeta","url":["https://xxx/xxx.pdf"],"meta":{"title":"Quarterly Report","author":"Duhui"}}

不传 meta 时会读取当前PDF的常用元数据;传 meta 时会更新对应字段并返回新的pdfurl和更新后的data。

读取模式下 pdffilename 不适用;写入模式下支持 pdffilename。

返回结果重点字段:

字段 类型 说明
result.data object 元数据对象
result.data.title string 标题,存在时返回
result.data.author string 作者,存在时返回
result.data.subject string 主题,存在时返回
result.data.keywords string 关键词,存在时返回
result.data.creator string 生成工具,存在时返回
result.data.producer string 生产程序,存在时返回
result.data.creationdate string 创建时间,存在时返回
result.data.moddate string 修改时间,存在时返回
result.data.tagged string 是否带标签,存在时返回
result.data.encrypted string 是否加密,存在时返回

返回结果示例(读取):

{"result":{"status":"done","count":12,"data":{"title":"Quarterly Report","author":"Duhui","creator":"Word","producer":"Skia/PDF m123"}}}

更新模式下,返回结果会额外包含 result.pdfurl。

  • PDF目录导出:

专属参数:无。

示例:

{"action":"outlineexport","url":["https://xxx/xxx.pdf"]}

会读取PDF目录书签。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.count number PDF 总页数
result.data.named_dests object 命名目标映射
result.data.outline array 目录树数组
result.data.outline[].title string 目录标题
result.data.outline[].dest.page_index number 目标页索引,从 0 开始
result.data.outline[].dest.dest array 目标定位参数,如 ["/Fit"]
result.data.outline[].kids array 子目录数组;没有子目录时可省略

目录节点还可能包含 dest_name、color、flags、count、is_open 等可选字段。

返回结果示例:

{"result":{"status":"done","count":12,"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]},"kids":[{"title":"Section 1.1","dest":{"page_index":1,"dest":["/Fit"]}}]}]}}}
  • PDF目录导入:

支持的专属参数:data(目录 JSON 对象,建议先调用 outlineexport 获取后原样传回)。

参数 类型 备注 是否必须发送
data JSON对象 目录 JSON 对象;建议先调用 outlineexport 获取后原样传回 是

示例:

{"action":"outlineimport","url":["https://xxx/xxx.pdf"],"data":{"named_dests":{},"outline":[{"title":"Chapter 1","dest":{"page_index":0,"dest":["/Fit"]}}]}}

会把目录JSON写回PDF,并输出新的pdfurl。data 顶层应包含 named_dests 和 outline;其中 page_index 从 0 开始计数。

安全与权限

  • 文件加密:

支持的专属参数:userpassword、ownerpassword、pdfrestriction。

参数 类型 备注 是否必须发送
userpassword string 用户密码;和 ownerpassword 至少传一个 条件必传
ownerpassword string 所有者密码;和 userpassword 至少传一个 条件必传
pdfrestriction string PDF 权限限制编码,如 110 按需

示例:

{"action":"encrypt","url":["https://xxx/xxx.pdf"],"userpassword":"YOUR_PASSWORD","ownerpassword":"YOUR_PASSWORD","pdfrestriction":"110"}

userpassword 和 ownerpassword 至少传一个。该操作会给PDF加密码和权限限制。

  • 文件解密(文件加密转换接口中已有):

支持的专属参数:password(解密密码,可以为空)。

参数 类型 备注 是否必须发送
password string 解密密码;如果原文件无密码可传空字符串 按需

示例:

{"action":"decrypt","url":["https://xxx/xxx.pdf"],"password":""}

会把PDF解密。

  • 文件是否加密:

专属参数:无。

示例:

{"action":"checkencrypt","url":["https://xxx/xxx.pdf"]}

会检查PDF是否加密。

pdffilename 不适用。

返回结果重点字段:

字段 类型 说明
result.data.encrypted boolean true 表示已加密,false 表示未加密

返回结果示例:

{"result":{"status":"done","data":{"encrypted":true}}}

通用请求参数BODY(JSON):

参数 类型 备注 是否必须发送
action string 操作类型,取值见上方各 action 小节 是
url string数组 待处理的PDF URL数组,支持http(s)、ftp;每个action对url数量和含义的要求见对应 action 小节 是
pdffilename string 生成输出文件的文件名,默认随机;是否支持及具体含义见对应 action 小节 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

其余参数均为 action 专属参数,见对应 action 小节。

请求示例:

v2域名:

https://ap-shanghai.cloudmarket-apigw.com/service-gsefnc5p/v1/pdfaction

v1域名:

https://service-gsefnc5p-1256652084.sh.apigw.tencentcs.com/release/v1/pdfaction

传入的Body为JSON格式,见上方详细操作。

必须签名才能调用成功,签名见腾讯签名规则:

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

异步任务完成后的通用说明:

  • 所有 action 都支持 callbackurl。
  • 大多数生成 PDF 的 action 都支持 pdffilename;任务完成后,可在 查询结果 或回调结果里看到 result.pdfurl、result.count,通常还会返回 result.filesize。
  • 特殊 action 的最终返回字段见对应 action 小节,例如:split 返回 result.pdfurls,extractimg 返回 result.imageurls,extracttext 返回 result.fileurl,pagecountinfo、pageinfo、outlineexport、checkencrypt 等返回结构化数据。

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

查询结果

请求参数:

参数 类型 备注 是否必须发送
token string 调用转换接口拿到的token 是

请求示例:

https://api.duhuitech.com/q?token=YOUR_TOKEN

无需签名,无调用次数限制

由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。 查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
token string 是 请求的token
result Dictionary 否 成功后返回

result:

名称 含义 类型 是否必须返回 备注
status 状态 string 是 Pending:还未开始
Doing:正在转换
Done:转换成功
Failed:转换失败
progress 进度 number 否(status为Doing时返回) 范围:0.00 - 1.00, 比如0.88表示88%
pdfurl pdf文件地址 string 否(status为Done时返回) 转换出来的PDF地址,http和https都支持
count 总页数 integer 否(status为Done时返回) PDF页面总数
filesize 文件大小 integer 否(status为Done时返回) 输出文件大小
reason 失败原因 string 否(status为Failed时可能返回) 转换失败的原因

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"token":"YOUR_CREDENTIAL",
	"result":
	{
		"progress":0.02,
		"status":"Doing"
	}
}
{
	"code":10000,
	"msg":"",
	"token":"YOUR_CREDENTIAL",
	"result":
	{
		"status":"Done",
		"pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf",
		"count":10,
		"filesize":17747
	}
}

返回示例(失败状态):

{
	"code":40000,
	"msg":"No such token"
}

备注:

  • 文件url方式支持文件大小 1500M。
  • 如果图片开启OCR,最大支持的图片大小长边不超过8000像素。
  • 最大转换时长:1小时,超过时间未完成则自动失败。
  • 转换完成后,下载链接有效时间:1小时。

上述最后2项有延长需求请联系客服: 客服二维码


回调URL:

用途: 客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询查询结果。

当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:

以POST方式调用该URL,Header头中Content-Type: application/json

Body为JSON格式,内容和查询结果的结果相同,例如:

{
	"code":10000,
	"msg":"",
	"token":"YOUR_CREDENTIAL",
	"result":
	{
		"status":"Done",
		"pdfurl":"https://file.duhuitech.com/o/xxx/xxx.pdf",
		"count":10,
		"filesize":17747
	}
}

服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:

系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。

回调URL超时时间10秒。


关于下载转换后的文件需支持302跳转

接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。

以下方式默认会跟随跳转,一般无需额外配置:

wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)

少数默认不跟随,需手动打开:

  • curl:加 -L,如 curl -L -o out.bin "下载地址"
  • Java java.net.http.HttpClient:设置 .followRedirects(HttpClient.Redirect.NORMAL)
  • PHP curl 扩展:设置 CURLOPT_FOLLOWLOCATION => true

若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。


错误码表:

返回的code如果是10000,代表成功,其余是失败

JSON里返回的code 错误信息
40000 通用错误
40001 参数错误
40002 参数不符合规范

附录:腾讯签名方式

腾讯云市场接口分V1和V2

腾讯云新旧网关界面示意

新老用户拿到的 SecretID 不同,老用户SecretID以AKID开头的,请使用V1对应签名。新用户使用V2对应签名。 新购用户都是V2签名。

V2签名: 参考链接:https://cloud.tencent.com/document/product/306/57449

建议使用腾讯提供的各种语言的SDK,例如Java: https://cloud.tencent.com/document/product/306/57449#Java


V1签名: 参考链接:https://cloud.tencent.com/document/product/628/11782

建议使用腾讯提供的各种语言的SDK,例如Java: https://cloud.tencent.com/document/product/628/42184

附录:旧接口

文档转换GET

将文档下载地址url转换为PDF,type是源文档的type,比如要把docx转为pdf,type就是docx

请求参数:

参数 类型 备注 是否必须发送
url string 文件url,支持http(s),ftp开头,需要URL Encoding 是
type string 要转换的原始文件扩展名,如果不传,则取url中的扩展名,注意如果获取失败会导致转换异常或出错 否
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 否
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
powerpointoutputtype int 如果是PPT文件,设定导出样式,默认幻灯片。0:幻灯片,0以上是讲义模式:1:每页一个幻灯片,2:每页二个幻灯片,3:每页三个幻灯片,4:每页四个幻灯片,5:每页六个幻灯片,6:每页九个幻灯片 否
powerpointhandoutorder int 如果是PPT文件,当设置为讲义时,设定顺序,默认0水平,1垂直 否
powerpointhandoutorientation int 如果是PPT文件,当设置为讲义时,输出文件的方向,默认0不改变,1横向,2纵向 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
ismobileurl int 如果type是“url”才有效,抓取的网页是否移动端显示。默认0:桌面端网页,1:移动端网页 否
urlmargin string 如果type是url,生成的页面边距。输入的是URLEncoding后的字符串,按照顺序:left top right bottom。单位可以是:px,in,cm,mm。例如左上右下分别是1px,2px,3px,4px,传的字符串就是:1px%202px%203px%204px。默认值:左右0,上下各1cm 否
pagesize int 如果是Word,TXT,Excel,HTML,设定页面大小,此参数会覆盖excelpagesize。默认0:源文档设定值,如无则是A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
pageorientation int 如果是Word,TXT,Excel,HTML,设定页面横向还是竖向,此参数会覆盖excelislandscape。默认0不变,1横向,2 竖向 否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个,需要URL Encoding 否
watermarkfontsize int 水印的字体大小,默认24pt 否
imagepdf int 生成图片PDF,默认0否,1是 否
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见 回调URL 否

请求示例:

v2域名:

https://ap-shanghai.cloudmarket-apigw.com/service-gsefnc5p/v1/convert?url=https%3a%2f%2fxxx%2fxxx.docx

v1域名:

https://service-gsefnc5p-1256652084.sh.apigw.tencentcs.com/release/v1/convert?url=https%3a%2f%2fxxx%2fxxx.docx

将所在url地址的docx文件转为PDF,type就是源文件的type,这个例子里就是docx

必须签名才能调用成功,签名见腾讯签名规则:

支持多种文件格式,type可传入如下格式:

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本
网址网页 url 网址,例如:https://www.duhuitech.com

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

文档转换POST

直接将单个文档POST到服务器,大小限制10M

请求参数:

参数 类型 备注 是否必须发送
file file 要转换的文档,Content-Type使用multipart/form-data,最大10M 是
type string 要转换的原始文件扩展名,如果不传,则取file中的文件扩展名,注意如果获取失败会导致转换异常或出错 否
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
excelislandscape int 如果是Excel文件,是否横屏,默认0否(竖屏),1是 否
exceliscenter int 如果是Excel文件,是否居中,默认0否,1横竖居中,2仅横向居中,3仅纵向居中 否
excelmargin int 如果是Excel文件,四边的边距,默认10px,单位是像素 否
excelsheetindex int 如果是Excel文件,指定转换的Sheet索引,默认0:全部,第一个sheet就是1,以此类推 否
excelnotshowgridlines int 如果是Excel文件,不显示网格线,默认0显示,1不显示 否
exceluseprintarea int 如果是Excel文件,是否使用打印区域,默认0不使用,1使用,2不使用且只显示有内容的区域 否
excelpagesize int 如果是Excel文件,设定页面大小,默认A4。0:A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
wordshowmarkup int 如果是Word文件,是否显示审阅标记,默认0不显示,1显示 否
powerpointoutputtype int 如果是PPT文件,设定导出样式,默认幻灯片。0:幻灯片,0以上是讲义模式:1:每页一个幻灯片,2:每页二个幻灯片,3:每页三个幻灯片,4:每页四个幻灯片,5:每页六个幻灯片,6:每页九个幻灯片 否
powerpointhandoutorder int 如果是PPT文件,当设置为讲义时,设定顺序,默认0水平,1垂直 否
powerpointhandoutorientation int 如果是PPT文件,当设置为讲义时,输出文件的方向,默认0不改变,1横向,2纵向 否
imageocr int 如果是图片文件,是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
imagedeskew int 如果是图片文件,是否将斜的文字矫正,默认0否,1是 否
imageclean int 如果是图片文件,是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
pagesize int 如果是Word,TXT,Excel,HTML,设定页面大小,此参数会覆盖excelpagesize。默认0:源文档设定值,如无则是A4,1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
pageorientation int 如果是Word,TXT,Excel,HTML,设定页面横向还是竖向,此参数会覆盖excelislandscape。默认0不变,1横向,2 竖向 否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个,需要URL Encoding 否
watermarkfontsize int 水印的字体大小,默认24pt 否
imagepdf int 生成图片PDF,默认0否,1是 否
cadlayer int 如果是CAD文件,是否生成Layer层,默认0否,1是 否
cadisdisplay int 如果是CAD文件,是否按照Display显示,默认0不按照,1按照Display 否
cadquality int 如果是CAD文件,生成的文件品质,默认3。取值从1-5品质从低到高。 否
password string 源文件的密码,支持有密码的PDF,Word,PPT,Excel文件类型,默认空无密码 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

v2域名:

https://ap-shanghai.cloudmarket-apigw.com/service-gsefnc5p/v1/convert_post

v1域名:

https://service-gsefnc5p-1256652084.sh.apigw.tencentcs.com/release/v1/convert_post

Header中的Content-Type必须是multipart/form-data

必须签名才能调用成功,签名见腾讯签名规则:

支持多种文件格式,type可传入如下格式:

类型 扩展名(type取值) 备注
PDF文件 pdf
微软Office文档 doc, docx, ppt, pptx, xls, xlsx, pot, pps, ppsx, csv
WPS文档 wps, wpt, dps, dpt, et, ett
苹果iWork文档 pages, key, numbers
开放版式文档 ofd
电子刊物 caj, nh, kdh
电子书 epub, chm, mobi, azw, azw3, fb2, cbr, cbz, djvu
Markdown md
SVG svg
CAD文档 dwg, dxf, dwt, dws, dwf, dwfx, dxb, dgn, plt, cf2, cgm
3D模型 obj, 3ds, stl, gltf, glb, fbx, dae, ifc, step, stp, iges, igs, fcstd, brep, ply 静态预览(平面示意图,按 6 个视角展示:等轴测 / 前 / 右 / 顶 / 后 / 左,便于快速查看模型外观;非可旋转的交互式 3D)
Figma和Sketch文档 fig, sketch
网页文件 html, htm, mht, eml
图片文件 几乎所有格式例如png, jpg, jpeg, gif, tif, tiff, bmp, webp, ai等 type可以统一传img,代表一切图片
文本文件 txt, rtf, java, js, c, cpp, jsp, css, xml, properties, log, type可以统一传txt,代表一切文本

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

多张图片转换POST

将多张图片转换为pdf,url传入多张图片的地址,传入非图片格式无效

Header中的Content-Type传入application/json

POST Body传入JSON,格式如下:

请求参数BODY:

参数 类型 备注 是否必须发送
url string数组 要转换的图片URL数组,支持http(s),ftp开头 是
type string 固定传img 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
ocr int 是否识别图中文字并且在PDF中可选可搜索文字,默认0否,1是 否
deskew int 是否将斜的文字矫正,默认0否,1是 否
clean int 是否清除图像背景只显示文字,默认0否,1是 否
grayimage int 如果是图片文件,是否把图片变为灰度图,默认0否,1是 否
imagesize int 统一每页为固定宽,默认0否,输入数字即每页宽度,最大4096。设置该值将导致pagesize失效。 否
pagesize int 设定页面大小。默认0:长图保持原图大小,非长图A4,原图不满A4大小的保持原图大小。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 否
language int 如果开启OCR,识别语言选项,默认2简体中文:
1:英语
2:简体中文
3:繁体中文
4:法语
5:德语
6:意大利语
7:俄语
8:日文
9:韩文
10:西班牙语
11:葡萄牙语
12:丹麦语
13:荷兰语
14:芬兰语
15:挪威语
16:瑞典语
17:土耳其语
否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个 否
watermarkfontsize int 水印的字体大小,默认24pt 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

v2域名:

https://ap-shanghai.cloudmarket-apigw.com/service-gsefnc5p/v1/convert

v1域名:

https://service-gsefnc5p-1256652084.sh.apigw.tencentcs.com/release/v1/convert

传入的Body为JSON格式,如下:

{ "url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"], "type": "img" }

必须签名才能调用成功,签名见腾讯签名规则:

例如要把多张图片OCR,变为文字可选的PDF,并且将斜的文字矫正,将图片背景去除,那么JSON就是:

{ "url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"], "type": "img", "ocr": 1, "deskew": 1, "clean": 1}

支持几乎所有图片格式

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}

附录:废弃接口

合并PDF文件POST(废弃,用文件操作代替)

将多个PDF文件合并为一个PDF,url传入多个PDF文件的地址

Header中的Content-Type传入application/json

POST Body传入JSON,格式如下:

请求参数BODY:

参数 类型 备注 是否必须发送
url string数组 要合并的PDF URL数组,支持http(s),ftp开头 是
linearization int 是否需要快速web显示,默认0否,1是 否
compress int 是否压缩,默认0不压缩,压缩分3档:1,2,3,1的压缩率最低,3最高 否
userpassword string 生成PDF文件的User Password,用户密码加密指打开文件时需要输入的密码,默认无 否
ownerpassword string 生成PDF文件的Owner Password,所有者密码加密指修改文件时需要输入的密码,默认无 否
pdfrestriction string 有密码时,生成PDF文件的权限,默认无权限。格式3位,比如010,第一位代表能否打印,第二位代表能否拷贝内容,第三位代表能否编辑 否
watermark string 添加水印,字符个数最大15个 否
watermarkfontsize int 水印的字体大小,默认24pt 否
pdffilename string 生成的PDF文件的文件名,默认随机 否
callbackurl string 回调URL,转换结束后,会回调该URL,详细见 回调URL 否

请求示例:

v2域名:

https://ap-shanghai.cloudmarket-apigw.com/service-gsefnc5p/v1/merge

v1域名:

https://service-gsefnc5p-1256652084.sh.apigw.tencentcs.com/release/v1/merge

传入的Body为JSON格式,如下:

{ "url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"]}

必须签名才能调用成功,签名见腾讯签名规则:

例如要把多个PDF合并为一个,并且开启快速web显示,加上水印,那么JSON就是:

{ "url": ["http://xxx/xxx1.png","http://xxx/xxx2.png"], "linearization":1, "watermark":"测试水印"}

返回数据结构:

名称 类型 是否必须返回 备注
code number 是 10000:请求成功
msg string 是
result Dictionary 否 成功后返回

result:

名称 类型 是否必须返回 备注
token string 是 用于查询结果接口

返回示例(成功状态):

{
	"code":10000,
	"msg":"",
	"result":{"token":"YOUR_CREDENTIAL"}
}

返回示例(失败状态):

{
	"code":40001,
	"msg":"ParmNotRight"
}
接入时请核对当前渠道

使用已购服务对应的接口地址与认证信息,按本渠道正文处理提交、查询、回调和结果下载。

签名与鉴权开发文档首页

扫码联系度慧

企业微信客服二维码

企业微信技术咨询