OFD转PDF ~java实现

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在线查验,大家有需要可以体验体验。

在这里插入图片描述

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java实现OFDPDF换,您可以使用第三方库或工具。以下是一个使用iText库的示例代码: ```java import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.licensekey.LicenseKey; import com.itextpdf.ofd.converter.PdfConverter; import com.itextpdf.ofd.converter.StandardConversionProperties; import com.itextpdf.ofd.converter.config.ConversionConfig; import com.itextpdf.ofd.converter.config.ConversionOption; public class OFD2PDFConverter { public static void main(String[] args) { // 设置iText授权密钥(请替换为您的授权密钥) LicenseKey.loadLicenseFile("path/to/itextkey.xml"); // 输入OFD文件路径和输出PDF文件路径 String inputFilePath = "path/to/input.ofd"; String outputFilePath = "path/to/output.pdf"; // 创建PdfWriter PdfWriter writer = new PdfWriter(outputFilePath); // 创建OFD换器 PdfConverter converter = new PdfConverter(writer); // 设置换配置 ConversionConfig config = new ConversionConfig(); config.setConversionOption(ConversionOption.CREATE_PDF_A_1B, true); // 可选配置,设置为true以创建PDF/A-1b文件 config.setConversionOption(ConversionOption.PAGE_SIZE, PageSize.A4); // 可选配置,设置PDF页面大小 // 设置换属性 StandardConversionProperties properties = new StandardConversionProperties(); properties.setBaseUri("path/to/ofd/files"); // 可选属性,设置OFD文件的基本URI // 执行OFDPDF换 converter.convertToPdf(inputFilePath, config, properties); // 关闭换器和PdfWriter converter.close(); writer.close(); System.out.println("OFD换为PDF成功!"); } } ``` 请注意,使用iText进行OFDPDF换需要获取有效的iText许可证。您需要将授权密钥文件(例如`itextkey.xml`)放在您的项目中,并在代码中使用正确的路径加载它。 此外,还有其他一些Java库和工具可用于OFDPDF换,如Apache PDFBox和Aspose.PDF。您可以根据您的需求选择适合您的库或工具。 希望这个示例能帮助到您!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值