前端JQuery获取Java后端文件流实现常规附件预览功能
项目背景
目前维护的项目是个远古的SpringMVC项目,前端使用的是JQuery和HTML,与Vue相比维护比较复杂,功能实现上没有那么丰富。在做附件预览的需求时,考虑不借助第三方预览服务,通过开源组件实现,需要借助以下服务依赖:
1)Java:引入aspose.words依赖(支持将word文档转换为pdf格式)
注意:需要引入license
1. Java后端处理附件
1.1 将word文档转换为pdf格式
1)在resource下新增license.xml
<License>
<Data>
<Products>
<Product>Aspose.Total for Java</Product>
<Product>Aspose.Words for Java</Product>
</Products>
<EditionType>Enterprise</EditionType>
<SubscriptionExpiry>20991231</SubscriptionExpiry>
<LicenseExpiry>20991231</LicenseExpiry>
<SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
</Data>
<Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>
2)word转pdf工具类
/**
* @program: Mickey
* @description: pdf工具类
**/
public class WordToPdfUtil {
public static byte[] toPdfBytes(HttpServletRequest req, InputStream inputstream) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = null;
try {
//认证aspose-word,否则转换的pdf会有水印
if (!getWordLicense(req)) {
return null;
}
LoadOptions options = new LoadOptions();
options.setLoadFormat(LoadFormat.DOC);
Document doc = new Document(inputstream, options);
doc.save(bos, SaveFormat.PDF);
b = bos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("word转换pdf出错!");
} finally {
bos.close