获取oss文件图片插入文件转pdf预览aspose转pdf
1、aspose的集成
看文章oss获取word文件通过aspose转pdf预览的实现记录
2、依赖
集成aspose所需要的部分依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<!-- POI-word文件处理需要 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>args4j</groupId>
<artifactId>args4j</artifactId>
<version>2.32</version>
</dependency>
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j</artifactId>
<version>3.2.1</version>
</dependency>
3、以流的形式将图片插入文件的实现
具体实现代码如下
代码块:
public RetResult previewInsertImg(String fileName, HttpServletResponse response) {
OSS ossClient = getOssClient();
String[] str = StringUtils.split(fileName, "\\.");
try {
OSSObject ossObject = ossClient.getObject(bucketName, "oss存储的位置/" fileName);
//操作文档的类
XWPFDocument doc = new XWPFDocument(ossObject.getObjectContent());
XWPFParagraph interfaceNamePara = doc.createParagraph(); //创建一个新段落
XWPFRun run = interfaceNamePara.createRun(); //一个XWPFRun代表具有相同属性的一个区域
//获取图片(通过appuserid和tradid去拿签名图片),我的业务流中获取图片的方式。可以换成直接拿本地图片
BusOrderFilesSign busOrderFilesSign = new BusOrderFilesSign();
busOrderFilesSign.setFileAddress(fileName);
List<BusOrderFilesSign> select = busOrderFilesSignMapper.select(busOrderFilesSign);
for (BusOrderFilesSign orderFilesSign : select) {
BusOrderAppuserSignStatus busOrderAppuserSignStatus = new BusOrderAppuserSignStatus();
busOrderAppuserSignStatus.setTradId(orderFilesSign.getTradId());
busOrderAppuserSignStatus.setAppUserId(orderFilesSign.getUserId());
BusOrderAppuserSignStatus busOrderAppuserSignStatusget = busOrderAppuserSignStatusMapper.selectOne(busOrderAppuserSignStatus);
OSSObject imgobj = null;
try {
imgobj = ossClient.getObject(bucketName, "oss存储的位置/" busOrderAppuserSignStatusget.getSignImg());
}catch (OSSException e){
System.out.println(e.getStackTrace());
return RetResponse.makeErrRsp("当前文件还未被签名");
}
//设置图片属性
String[] strimg = StringUtils.split(busOrderAppuserSignStatusget.getSignImg(), "\\.");
run.addPicture(imgobj.getObjectContent(),
XWPFDocument.PICTURE_TYPE_JPEG,
"img",
Units.toEMU(300),
Units.toEMU(150));
}
//OutputStream os = response.getOutputStream();//把doc输出到输出流
//doc.write(os);
ByteArrayOutputStream baos = new ByteArrayOutputStream();//二进制OutputStream
doc.write(baos);//文档写入流
ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
previewAsposeWithInputStream(fileName,in,response);
doc.close();
//os.close();
baos.close();
return RetResponse.makeOkRsp("预览成功");
} catch (Exception e) {
e.printStackTrace();
}
return RetResponse.makeOkRsp("预览成功");
}
转换方法
public void previewAsposeWithInputStream(String fileName,InputStream inputStream, HttpServletResponse response) throws IOException {
String[] str = StringUtils.split(fileName, "\\.");
String prefix=".pdf";
BufferedInputStream fileInputStream =null;
try {
fileInputStream = new BufferedInputStream(inputStream);
// 获取文件后缀
String type =str[1];
if(type.equalsIgnoreCase("xlsx") || type.equalsIgnoreCase("xls") ){
//excel文档
//调用工具类将excel转换pdf
PdfUtilold.excel2pdfNew(fileInputStream,response.getOutputStream());
prefix=".pdf";
}else if(type.equalsIgnoreCase("docx") || type.equalsIgnoreCase("doc")){
//word文档
//调用工具类将word转换pdf
PdfUtilold.doc2pdfNew(fileInputStream,response.getOutputStream());
prefix=".pdf";
}
//request.setCharacterEncoding("UTF-8");
//response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=" fileName prefix);
response.setHeader("filename",fileName);
} catch (Exception e) {
e.printStackTrace();
}finally {
//hutool工具类的方法
IoUtil.close(fileInputStream);
IoUtil.close(response.getOutputStream());
inputStream.close();
}
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiackij
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22