OFD转PDF ~java实现
当你在查这个问题时,说明大家都已经接触到OFD这个新的版式文档了。OFD格式对标的是PDF,目前关于PDF的转换都比较成熟,但是当OFD出现后,却发现能实现转换却似乎有所困难。尝试网上搜了一下这方面的资料,大部分是只能支持在网页在线转换,但是如果想自己通过后台代码去实现转换却基本没有。
无意中发现“超阅云”这个平台,不仅支持网页在线转换,还支持API对接转换。果断验证一波!!

准备工作
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/ofd2pdf";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/ofd2pdf' \
--header 'Authorization: bWV0aG9kPVBPU1QsdXJsPS9hcGkvZGV2ZWxvcGVyL2NvbnZlcnQvb2ZkMnBkZix0aW1lc3RhbXA9MTY2ODQ5Mjg1NTI3Nyxub25jZV9zdHI9cnZsaXY1emY0bjByOWdqeGx6dW4sYWs9b3NlZjA2NGtjdnA1MzJ6a2k1dnYyaTJicGwzOHJyam4sc2lnbmF0dXJlPTAwZWRlOTY4YzNhMmM0MGY1ZTcwXXXXXXXXXX' \
--form 'file=@"/C:/Users/DESKTOP-J21/Documents/ofd/OFD小文档.ofd"'

!!!注意: 这里转换后是提供了一个文件的下载key,然后是需要再调用下载文件的API接口去获取这个文件,同时还能支持获取预览地址,cool
获取文档下载地址: /api/developer/convert/getDownUrlByFileKey
获取文档预览地址: /api/developer/convert/getPreviewUrlByFileKey
详细接口文档其实可以参考他们的文档介绍

调试完成
最后最后,感谢客服小姐姐送的套餐体验包,话说他们的小程序功能也挺强大的,不仅能PDF和OFD互转,还支持OFD在线查验,大家有需要可以体验体验。

OFD转PDF ~java实现相关推荐

  1. Java OFD文件转换,OFD转PDF、图片、SVG、HTML工具类(2.0.0版本之前)

    OFDRW提供了将OFD文档导出为其他格式文档的能力,如导出为图片.SVG.PDF.文本等. OFDRW 转换模块在 2.0.0 之后抽象了多种文档导出接口,使用统一的 API 实现 OFD 文档导出 ...

  2. aspose html转换pdf,aspose html转pdf java

    aspose html转pdf java [2021-02-01 22:36:08]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace( ...

  3. C# 将OFD转为PDF

    OFD格式的文档是一种我国独有的国家标准版式的文档,在不同场景需求中,可以通过格式转换的方法将PDF转为OFD,或者将OFD转为PDF.本次内容,将通过C#程序介绍如何实现由OFD到PDF的转换,并附 ...

  4. 免费在线OFD转PDF

    PDF(Portable Document Format,可携带文档格式),是由Adobe公司设计,用于与应用程序.操作系统.硬件无关的方式进行文件交换所发展出的文件格式.PDF文件以PostScri ...

  5. ofd和pdf的区别是什么?这篇文章告诉你ofd和pdf的区别

    你知道ofd和pdf的区别是什么吗?ofd和pdf是两种常见的电子文档格式,它们都具有一定的优势和特点.在本文中,我们将分别介绍ofd和pdf之间的区别以及它们各自的好处和实际案例. ofd(Open ...

  6. OFD、PDF电子发票同时打开预览

    跟着国家的脚本,OFD版式的电子发票已经是大势所趋,OFD电子发票带来了很多便利,例如安全.便捷等.但是需要额外安装阅读工具才可以打开它预览核对,同时市面上也还有PDF的电子发票,那每一种发票都需要配 ...

  7. 在线OFD转PDF—OFD转换器

    OFD文件是什么格式?收到OFD发票怎么办?OFD文件怎么打开?OFD格式文件怎么转换为PDF?http://www.ofdpage.com/ 这想必是很多做财务的朋友经常遇到的一些问题.那么,OFD ...

  8. html转成pdf java,html转成pdf java

    html转成pdf java [2021-02-01 01:58:15]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  9. java ofd转pdf和jpg

    最近刚遇到ofd转jpg百度好友也找不到 好不容易在git上找到的又不全所以自己整理了一下给大家探探路 首先要导入jar包依赖 <dependency><groupId>org ...

最新文章

  1. html判断对错,Html翻转校园试题
  2. 兰州办着眼大数据切实提升数据分析管理能力
  3. js中立即执行函数会预编译吗_作为前端你了解JavaScript运行机制吗?
  4. 涉及上千款,2021 Chrome插件性能影响分析报告新鲜出炉
  5. 时序分析基本概念介绍<系统接口sdc>
  6. 【转】Android 平台下使用 i2c-tools
  7. hashcode值一样对象一定相同吗_硬核问题,为什么重写equals()就要重写hashCode()?
  8. 广东工业大学计算机专业课程,广东工业大学在职研究生计算机专业课程安排
  9. java拍照控件焦距问题,干货:监控中如何选择镜头焦距?
  10. redis中的incr和incrBy
  11. APP - 小米/红米电视开机广告屏蔽 hosts 列表分享,轻松解决开机广告
  12. Linux yest2图形安装ftp,Debian 无痛起步法 ( 线上最新版 ): 了解 Debian 系统的哲学
  13. 消费品行业会员营销的5大策略及建议
  14. 自由 Pascal 集成开发环境 Lazarus
  15. 计算机二级网址,计算机二级学习网址
  16. 安卓小游戏——打地鼠
  17. 品牌虚拟数字人撞上文旅,数字营销算是被玩明白了!
  18. 3GPP R16的Conditional handover 功能有啥优势?
  19. windows环境下gcc的使用(二):gcc命令与程序编译链接过程
  20. B 站 18 岁高中生火了:历时 200 天,成功造了个机器人!

热门文章

  1. ubuntu下解决鼠标滚轮不能使用的问题
  2. 为什么哲学是最难的学科_浅谈《中国哲学简史》:学了一辈子说话,哲学为何让我们保持沉默...
  3. 什么是udp攻击?udp攻击的基本原理是什么
  4. UDP FLood拒绝服务攻击
  5. win7系统下安装win10实现双系统安装教程
  6. php五角星十个点坐标,请教:已知五角星的外接圆半径,如何求五角星十个顶点的坐标?(有图? 爱问知识人...
  7. CREO2——解决CREO生成的二维图drw转换成CAD的dwg格式尺寸失真问题
  8. 润乾——润乾报表错误
  9. JAVA中医药院校科研会议系统计算机毕业设计Mybatis+系统+数据库+调试部署
  10. js倒计时刷新页面不受影响