• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

获取oss文件图片插入文件转pdf预览aspose转pdf

武飞扬头像
hukiJava
帮助1

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
系列文章
更多 icon
同类精品
更多 icon
继续加载