获取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();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值