PDF转OFD ~java实现

上篇文章记录了一下我第一次对接“超阅云”实现了ofd转pdf功能,想了想,还是再写一篇pdf转ofd的实现,其实对接的API基本一样,如果你是第一次看,建议先看看上一篇文章-“ofd转pdf”

————————————————

准备工作

  1. 登录注册超阅云开发者账号,可直接微信扫码登录注册,一键搞定

  2. 进入个人中心,获取API开放秘钥

开始开发

1、接口概述
(1)采用HTTP接口模式,编码UTF-8
(2)接口地址: https://surread.esign.cn
(3)接口请求前必须先申请成为开发者,并获取accessKey和secretKey
(4)接口请求头需要带上鉴权参数Authorization ,详情见“鉴权方式"

2、鉴权方式
(1)鉴权规则
第一步:参数签名signature
MD5(post + url + 请求时间戳 + 请求随机串 + MD5(ak+sk))
第二步:base64加密 Authorization
base64(method=post,url=xxx,timestamp=xxx,nonce_str=xxx,ak=%s,signature=xxx)
第三步: 将生成的Authorization作为参数放到请求头中
(2)代码示例

import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestAlgorithm;
import cn.hutool.crypto.digest.Digester;public class AuthorizationUtil {public static void main(String[] args) {String ak = "开发者标识";String sk = "开发者秘钥";// 生成String requestMethod = "post".toUpperCase();String url = "/api/developer/convert/pdf2ofd";Long timestamp = System.currentTimeMillis();String randomStr = RandomUtil.randomString(20);String authorization = generateAuthorization(requestMethod,url,timestamp,randomStr,ak,sk);System.out.println("生成:"+authorization);}public static String generateAuthorization(String requestMethod, String url, Long timestamp, String randomStr, String ak, String sk){Digester md5 = new Digester(DigestAlgorithm.MD5);// signature = MD5(requestMethod + url + 请求时间戳 + 请求随机串 + MD5(ak+sk))String signature = md5.digestHex(requestMethod+url+timestamp+randomStr+md5.digestHex(ak+sk));//   Authorization = base64(method=xxx,url=xxx,timestamp=xxx,nonce_str=xxx,ak=xxx,signature=xxx)return Base64.encode(String.format("method=%s,url=%s,timestamp=%s,nonce_str=%s,ak=%s,signature=%s",requestMethod,url,timestamp,randomStr,ak,signature));}
}

(2)一些踩坑:
鉴权方式其实就是base64+Md5的结合,这里我引了一个hutool工具包,挺好用的,大家也可以试试
鉴权参数主要是不同的接口url参数对应的就是接口的url

API测试POST

postman调用测试

curl --location --request POST 'https://surread.esign.cn/api/developer/convert/pdf2ofd' \
--header 'Authorization: bWV0aG9kPVBPU1QsdXJsPS9hcGkvZGV2ZWxvcGVyL2NvbnZlcnQvb2ZkMnBkZix0aW1lc3RhbXA9MTY2ODQ5Mjg1NTI3Nyxub25jZV9zdHI9cnZsaXY1emY0bjByOWdqeGx6dW4sYWs9b3NlZjA2NGtjdnA1MzJ6a2k1dnYyaTJicGwzOHJyam4sc2lnbmF0dXJlPTAwZWRlOTY4YzNhMmM0MGY1ZTcwXXXXXXXXXX' \
--form 'file=@"/C:/Users/DESKTOP-J21/Documents/pdf/PFD小文档.pdf"'

!!!注意: 同样再调用下载/预览文件的API接口去获取或者预览转换后的文档
获取文档下载地址: /api/developer/convert/getDownUrlByFileKey
获取文档预览地址: /api/developer/convert/getPreviewUrlByFileKey
详细接口文档可以参考“超阅云”官网的文档介绍

PDF转OFD ~java实现相关推荐

  1. java pdf与ofd文件相互转换

    借用spire.pdf进行pdf与ofd相互转化 spire.pdf for java 参考文档: https://www.e-iceblue.cn/spire-pdf-for-java-news.h ...

  2. OFD文件转换成PDF格式,Java语言实现

    OFD文件转换成PDF格式,Java语言实现 我个人的思路大致是这样的.首先在指定路径创建一个文件夹,然后每次要转换的时候都把OFD文件统一放到指定的文件夹内进行转换.这样写代码的时候只需要循环遍历一 ...

  3. (开源kkFileView、kkOffice)在线预览word、pdf、ofd、excel、ppt、压缩包、图片等等

    (开源kkFileView.kkOffice)在线预览word.pdf.ofd.excel.ppt.压缩包.图片等 前言 此项目为文件文档在线预览项目解决方案,对标业内付费产品有[永中office][ ...

  4. java 生成pdf itext_使用Java组件itext 生成pdf介绍

    iText是一个能够快速产生PDF文件的Java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给合.使用iText与 ...

  5. pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...

    我正在从n个页面的输入pdf文件中读取特定位置,并在这些位置上列出文本. 然后,我编写一个新的pdf文档,并将列表中的这些字符串写入包含单元格的表中. 我提出了两个主要问题. 我想在表中有三列,但是如 ...

  6. [PDF]我们经常使用的PDF是什么? PDF, PDF/A, PDF/Archive, OFD

    经常在用PDF,一直也没去做过了解.今天整理备忘如下: PDF 全称 Portable Document Format ,便携式文档格式. PDF格式是跨平台(包括硬件和软件平台)的文件格式,由 Ad ...

  7. Java在PDF中添加水印(文本/图片水印)效果import com.spire.pdf.*; import com.spire.pdf.graphics.*; import java.awt.*;

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...

  8. 用python3写一段代码提取pdf和ofd格式发票内容并json格式化输出

    使用Python 3写一段代码来提取PDF和OFD格式发票内容并以JSON格式输出,可以使用Python库PyPDF2和pyofd:import PyPDF2 import pyofd# 读取PDF文 ...

  9. 【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)

    工作中遇到需要生成PDF.最终选择了iText.其他也有通过html再生成.感觉不太适合就用了代码实现. 使用iText 5.5.13.1版本.纯Java代码实现 1.自定义表格合并指定行列完成数据填 ...

最新文章

  1. Crypto API 学习笔记一
  2. 深入理解 JVM Class文件格式(一)
  3. 计算机linux运维日记,计算机的运维系统情况
  4. linux下编程出现 对'sem_wait'未定义的引用解决方案
  5. Java机器学习库(Java ML)(二、聚类)
  6. 解析:深度学习框架Caffe源码
  7. 如何免费搭建自己的个人网站
  8. 为什么计算机没有桌面显示不出来,我的电脑桌面不显示“我的电脑”了,请问怎么调出来?谢谢...
  9. ArcHydroTools 10.5版本的安装与使用(附下载链接与教程)
  10. EasyCVR通过GB28181级联到紫光华智综合安防应用平台无法注册成功问题排查
  11. 一起来学 R编程吧(2)---判断语句switch函数的用法
  12. 本地环境可以,生产环境不行(持续补充)
  13. iOS10后友盟推送报错,在iOS9设备上获取到device_token但接不到推送消息,iOS10上报错code=3000
  14. 【原创】从头开始,使用安卓系统WebView做一个功能强大的Epub阅读器(一)
  15. ROS2 基础概念 参数
  16. 微软仍计划在2017年发布两次Windows 10系统升级
  17. 日本最省女孩15年买下3套房的启示
  18. Log4j 日志配置邮件实战
  19. 年终,使用 Python 汇总各月开发的报表数量
  20. python利用cookie登录百度的代码_使用 cookie 登录百度

热门文章

  1. win11 HEVC 扩展
  2. 海康威视网络摄像头开发流程(一)------ 萤石开放平台的账号申请
  3. 计算机应用基础18在线作业容,东师《计算机应用基础》18秋在线作业2.doc
  4. 编译原理第三版课后答案
  5. Java之J2se-Java语言基础(程序结构) 教学视频发布了,请小伙伴们前往观看
  6. SEP离线病毒库下载地址
  7. NHANES数据库的介绍及使用(一)
  8. mysql-connector-java.jar包的下载教程
  9. 为了让人愿意花3000块买口锅,这些高端厨具品牌也是蛮拼的
  10. 全球及中国AV瘘针组行业需求趋势及投资前景预测报告(新版)2022-2027