前言
最近有个业务场景,开具发票的时候,第三方返回的是ofd格式。
这里需要借助第三方库ofdrw来实现。
引入Maven依赖
<dependency>
<groupId>org.ofdrw</groupId>
<artifactId>ofdrw-converter</artifactId>
<version>1.18.2</version>
</dependency>
使用
使用ConvertHelper.toPdf方法就可以进行转换,ofdrw提供多个重载方法,这里列一个最基础的进行使用
public static void toPdf(InputStream input, OutputStream output);
转换pdf
/**
* 上传附件,将ofd格式的问价转换为pdf并上传到文件服务器
* @param fileUrl
* @return
*/
public static String convertToPdf(String fileUrl) {
InputStream inputStream = null;
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
URL url = new URL(fileUrl);
URLConnection urlConnection = url.openConnection();
inputStream = urlConnection.getInputStream();
String suffix= FileNameUtil.getSuffix(fileUrl);
// ofd需转pdf格式,在进行存储
if("ofd".equals(suffix)){
ConvertHelper.toPdf(inputStream, baos);
}else {
return null;
}
baos.flush();
byte[] imageByte = baos.toByteArray();
String originFileName = "test.".concat("pdf");
MultipartFile multipartFile = new MockMultipartFile(
"file", originFileName, ContentType.OCTET_STREAM.toString(), imageByte);
//上传文件到自己的服务器,并返回转换后的pdf的url
} catch (IOException e) {
e.printStackTrace();
} finally {
IoUtil.close(inputStream);
IoUtil.close(baos);
}
return null;
}