OFD转PDF ~java实现

news2024/9/21 0:48:40

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接口去获取这个文件
获取文档下载地址: /api/developer/convert/getDownUrlByFileKey
获取文档预览地址: /api/developer/convert/getPreviewUrlByFileKey
详细接口文档其实可以参考他们的文档介绍

调试完成

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

别再当大冤种了,揭开3D建模报班6个常见套路

1⃣承诺有就业保障 任何机构给你承诺✊所谓的包就业都是耍流氓😡,请不要信❗️ 承诺就业保障的机构无非3种情况: 🔹赚取学员的信任感,吸引学员报名和交钱; 🔸提高机构的“专业度”和所谓的“…

JWT详解(文章内嵌jwt工具类)

JWT 基础概念详解,工具类和使用方法放在最后 什么是 JWT? JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。 从 JWT 的全称可以看出,JWT 本身也是 Token,一种规…

【现代密码学原理】——消息认证码(学习笔记)

📖 前言:消息认证码 MAC(Message Authentication Code)是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过&#xff…

Appium 移动端自动化测试(Mac)

目录 adb调试工具(Android Debug Bridge) adb常用命令 Appium使用 快速体验步骤 Appium常用方法 UIAutomatorViewer 获取元素 元素等待(在指定时间内一直等待 元素操作 Swipe 滑动和拖拽事件(Scroll、drag_and_drop&#…

pytorch深度学习实战19

第十九课 卷积层的填充和步幅 目录 理论部分 实践部分 理论部分 首先看一下卷积层的填充。 上图所示的情况会有个问题,如果卷积核不变的话(一直是5*5的卷积核),那么我的网络最多也就只能弄到第七层了,如果我想搭建更…

恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑

11月17日,江苏恒太照明股份有限公司(下称“恒太照明”,NQ:873339)在北京证券交易所(即“北交所”)上市。本次上市,恒太照明的发行价格为6.28元/股,发行数量为2220万股,募…

Linux|centos7下部署安装alertmanager并实现邮箱和微信告警

前言: 一个成熟的符合一般人预想的资源监控平台应该是能够多维度的展示各种各样的数据,比如,服务器的内存使用率,磁盘io状态,磁盘使用率,CPU的负载状态,某个服务的状态(比如&#x…

Pandas数据分析33——数据多条件筛选(点估计和区间估计评价指标)

本次是写论文代码区间估计评价指标有感..... 数据框有两列的时候,我们想筛选A列大于B列的样本出来时,只需要用布尔值索引就行: df[df[A]>df[B]] 可是多条件的筛选的时候怎么办,比如我需要A大于B列,还有A小于C列。…

软件测试“摆烂”已经成为常态化,我们应该怎样冲出重围?

网络日新月异发展的今天,每隔一段时间就会出现一些新的网络热词,最近“摆烂”成功突出重围,成为大家热议的中心。什么是“摆烂”?“摆烂”就是事情无法向好发展的时候直接选择妥协,不采取任何措施加以改变,…

兼容 信创鲲鹏/M1 arm64架构的kafka镜像

当前热度比较高的kafka镜像是wurstmeister/kafka,在dockerhub上有很多的使用次数。我起初很开心最新版支持arm64架构,然后拉到本地用Mac M1跑也很完美 但是!我放到信创鲲鹏的生产环境,导入镜像没问题,但一用docker-com…

IPWorks Zip Delphi 流式压缩组件

IPWorks Zip Delphi 流式压缩组件 IPWorks Zip允许开发人员使用Zip、Tar、Gzip、7-Zip、Bzip2、ZCompress或Jar压缩标准轻松地将压缩和解压缩集成到应用程序中。IPWorks Zip组件是从头开始构建的,将卓越的速度与出色的数据压缩比相结合。 IPWorks Zip功能 文件压…

Allegro如何给铜皮导弧操作详解

Allegro如何给铜皮导弧操作详解 当需要给如下铜皮导弧的,是一件比较麻烦的事情,但是可以用以下两个方法来实现 方法一 具体操作如下 shape-decompose shape Find选择shapes Options选择层面,比如top层,选择delete shape after decompose 框选铜皮 得到下图效果,然后…

SNMP 协议解析(一)

♥️作者:小刘在C站 ♥️每天分享课堂笔记,一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放。 一.SNMP是什么 是基于TCP/IP协议族的网络管理标准,它的前身是简单网关监控协议(SGMP)&#xf…

HOST前后端分离小操作

“本地测试项目配置域名小操作” ​ 相关文章【欢迎关注该公众号“一路向东”】(CORS处理跨域问题): CORS跨域问题配置白名单CORS_ORIGIN_WHITELIST HOSTS 本地测试域名必然少不了修改:C:/Windows/System32/driver/etc/host文件&…

MVVM的构建(javakotlin)

概念性的描述就不写了,直接上代码 MVVM框架,主要是构建基类,实现ViewModel绑定,ViewBinding的绑定,在构建好基类后,后续开发中新建activity或fragment的viewModel和viewBinding就会在基类的方法中实现绑定…

Python virtualenv工具设置虚拟环境和VS code调试Python

Python virtualenv工具设置虚拟环境和VS code调试Python1. Window环境下采用VS code调试Python和虚拟环境1.1 安装Python1.2 安装虚拟环境工具virtualenv1.3 Windows上使用虚拟环境的基本操作1.4 Windows上VS code使用虚拟环境2. Linux环境下采用VS code调试Python和虚拟环境2.…

SAP 一次性读取工单的所有状态(工单抬头、工序、子工序、检验特性等等)

1. 前言 支持读取状态列表 2. 实现 代码 DATA: ls_objects TYPE tca11,ls_t490_imp TYPE t490. DATA: lt_ord_pre_imp TYPE TABLE OF ord_pre. FIELD-SYMBOLS: <fs_jest> TYPE any.DATA: lt_jest TYPE TABLE OF jest."fill var ls_objects VALUE #( flg_alt X…

[搞点好玩的] JETSONNANO 受苦记 -- 001 (布置环境,未完待续)

最开始是打算从0开始自己调试适配yahboom的IO板子&#xff0c;但是后来各种版本失配翻墙困难&#xff0c;前期先是用人家的包烧录进去。(所以叫未完待续) 直接粘贴我的debug记录了哈&#xff0c;凑合看吧&#xff1a; 记录 本项目是开源的实现基于jetbot的图像处理流程项目&a…

分享购商城模式详情特点和优势解析

随着互联网的不断发展&#xff0c;市面上出现了很多新怡的商业模式&#xff0c;就以分享购这个模式举例说来&#xff0c;直接解决了消费者自买省、好省、分享赚的逻辑玩法&#xff0c;之前有一个平台一个月直接引入70万的会员&#xff0c;引爆了网络上又一波话题&#xff0c;热…

【物理应用】大气辐射和透射率模型及太阳和月亮模型(Matlab代码实现)

&#x1f496;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f947;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为…