专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

word文档转pdf实现上传文件服务器

先说一下需求场景,是有个需求将文件服务器上的一个word文档(已知下载路径)转换成pdf格式再上传到文件服务器上。

word转pdf实现是通过使用spire.doc第三方包实现比较简单。感兴趣的同学可以搜一下
官网是可以通过maven依赖的方式获取jar包,但是需要修改maven的配置文件仓库地址。
如果有的同学项目maven有私有库也可以吧jar下载下来上传到私有库通过maven依赖获取。 像我这种只能用阿里云的公有库的。就只能放手动添加到项目里了。
spire.doc.jar
提取码: nuw8

Spire.doc-java帮助文档

  • 手动添加jar包到项目之后maven打包 可能会有报找不到jar报的错误
    这时候需要手动创建lib文件夹将第三方jar包放进去然后pom文件需要添加下面的这个本地依赖
    我lib文件夹创建的是项目根目录下和pom.xml文件同级
    <!--第三方jar添加word转pdf-->
        <dependency>
            <groupId>com.e-iceblue</groupId>
            <artifactId>spire.doc</artifactId>
            <version>1</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/Spire.Doc.jar</systemPath>
        </dependency>

关于转换的两种方式

  • 文档中是使用saveToFile方法
    document.saveToFile(“out/toPDF.pdf”, FileFormat.PDF);
    这个方法会将文件保存到本地服务器上。
  • 我的代码中使用了saveToStream方法
    saveToStream(OutputStream os,FileFormat.PDF); 这个方法会将文件保存一个文件输出流中。

代码

因为我的项目有一个上传文件的服务需要的参数是MultipartFile所以自己在后台创建了实例。

       /**
     * @Date: 2020/6/11 10:43
     * @Description:
     * @param fileInfoEntity 参数格式 {"path":"要转换的文件路径","fileName":"文件名"}
     */
    @ApiOperation(value = "word文档转成pdf", notes = "")
    public Result wordToPdf(@RequestBody FileInfoDataEntity fileInfoEntity){
         try{
             if(fileInfoEntity == null || StringUtils.isBlank(fileInfoEntity.getPath())||
                     StringUtils.isBlank(fileInfoEntity.getFileName())){
                return Results.failure(BaseEnums.PARAMETER_NOT_NULL.code(), BaseEnums.PARAMETER_NOT_NULL.desc());
             }
             //处理文件名 将文件名后缀改成pdf
             String fileName = fileInfoEntity.getFileName()
                     .substring(0, fileInfoEntity.getFileName().lastIndexOf("."))+".pdf";

             //通过文件路径获取文件 通过网络流获取文件流转成document
             URL url = new URL(fileInfoEntity.getPath());
             URLConnection conn = url.openConnection();
             //创建spire.doc文档实例
             Document document = new Document(conn.getInputStream());

             //创建输出流并且将文件数据保存到输出流中
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
             document.saveToStream(bos,FileFormat.PDF);

             //创建输入流并且把输出流的数据保存到输入流中
             ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());

            //创建MockMultipartFile实例构造参数是(文件名,真实文件名,类型,输入流)
             MultipartFile file = new MockMultipartFile(fileName,fileName, ContentType.APPLICATION_OCTET_STREAM.toString(),bis);

             //调用文件上传服务将文件保存到文件服务器()
             FileObj fileObj = hardwareTestService.uploadFileFileServer(file);

             return Results.successWithData(fileObj,BaseEnums.SUCCESS.code(),BaseEnums.SUCCESS.desc());
         }catch (Exception e){
             e.printStackTrace();
         }
        return Results.failure(BaseEnums.OPERATION_FAILURE.code(),BaseEnums.OPERATION_FAILURE.desc());
    }

文章永久链接:https://tech.souyunku.com/27298

未经允许不得转载:搜云库技术团队 » word文档转pdf实现上传文件服务器

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们