java关于word转PDF的实现

这篇具有很好参考价值的文章主要介绍了java关于word转PDF的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       word转PDF这个功能在工作中还是非常常用的,但是word转PDF大部分都是需要收费的,或者说就是对页面的转换页数有限制,那么身为程序员当然是能白嫖就白嫖的了,那么具体怎么实现呢,小编这里有几种实现方式,希望可以帮到你。

        1.第一种则是使用aspose-words实现转换,这是一个免安装office工具的实现方式

<dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-words</artifactId>
            <version>21.11-jdk17</version>
            <exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

引入依赖之后将名为license.xml的文件放在resource文件夹下,文件内容如下:

<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>

 依赖引入之后转换工具类:

 /**
     * 获取 license 去除水印
     * 若不验证则转化出的pdf文档会有水印产生
     */
    public static void getLicense() {
        String licenseFilePath = "license.xml";
        try {
            InputStream is = DocUtil.class.getClassLoader().getResourceAsStream(licenseFilePath);
            License license = new License();
            license.setLicense(Objects.requireNonNull(is));
        } catch (Exception e) {
            log.error("license verify failed");
            e.printStackTrace();
        }
    }
/**
     * word 转 pdf
     *
     * @param wordFile word 文件路径
     * @param pdfFile  生成的 pdf 文件路径
     */
    public static void word2Pdf(String wordFile, String pdfFile) {
        File file = new File(pdfFile);

        if (file.getParentFile() != null && !file.getParentFile().exists()) {
            file.getParentFile().mkdir();
        }
        getLicense();
        try (FileOutputStream os = new FileOutputStream(new File(pdfFile))) {
            Document doc = new Document(wordFile);
            // 检查文档页数
            if (doc.getPageCount() == 0) {
                throw new BizException(BaseCode.ERROR, "Word文档没有内容或格式不受支持。");
            }
            doc.save(os, SaveFormat.PDF);
        } catch (Exception e) {
            log.error("word转pdf失败", e);
            throw new BizException(BaseCode.ERROR, "word转换PDF失败");
        }
    }

 

 2.第二种的话那便是poi转换了,poi转换需要添加以下依赖包

<dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-local</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-transformer-msoffice-word</artifactId>
            <version>1.0.3</version>
        </dependency>

引入依赖添加工具类:

public static void documents4jWordToPdf(String wordPath, String pdfPath) {
        File inputWord = new File(wordPath);
        File outputFile = new File(pdfPath);
        try {
            InputStream docxInputStream = new FileInputStream(inputWord);
            OutputStream outputStream = new FileOutputStream(outputFile);
            IConverter converter = LocalConverter.builder().build();
            if (wordPath.split("\\.")[1].equals("doc")) {
                converter.convert(docxInputStream).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute();
            } else {
                converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
            }
            outputStream.close();
            docxInputStream.close();
        } catch (Exception e) {
            throw new BizException(BaseCode.ERROR, "PDF转换失败");
        }
    }

        上面两种方式都可以实现word转换PDF,不过第一种方式转换PDF会有一部分特殊的PDF转换不了,毕竟也是别人开发的,可能会有一些地方没有考虑全面,你懂得,不过可以根据自己需求看看,你们的word是否全部支持转换,第一种方式是不用再Linux上安装office工具支持的。

        第二种方式的话是poi实现的,众所周知poi很强大,但是poijar包版本管理却是个令人头疼的事情,搞不好,poi的某些jar包之间就相互冲突了,而且poi这种实现方式在转换过程中去调用了Windows底层文件去转换的,如果你要部署在Linux上面的话,那这个底层文件肯定是调不到了,导致转换失败,

        那前面两种都实现不了怎么办呢,别急,小编这里还有第三种实现方式,可能不是最优的,不过一定够用了,要通过下面这种方式在Linux上面实现的话,思路就是在java中调用Linux命令在office工具中实现转换,所以听了这个思路大概很多小伙伴应该就知道了,对,没错,这种方式实现的话是借助office工具,所以必然要在Linux上面安装office工具,以及至少一种字体,话不多说,上代码:

        首先安装libreoffice 安装时候需要注意:export LD_LIBRARY_PATH=/usr/lib64配上这条环境变量,你那个可执行文件名称是名为soffice.bin的文件,另外当你下载完成之后会发现libreoffice依赖不全

java doc转pdf,pdf

这时候就要你手动去安装这些,完成操作之后就可以使用了

public static int poiWord2PDF(String source, String targetDir, String libreOfficeCommand) {
//   libreOfficeCommand Linux可执行文件的路径  source word完整路径  targeDir 则是PDF的存放目录,不带文件名称噢,文件名称会自动取source的文件名称作为名称
        String[] cmdArray = {
                libreOfficeCommand,
                "--headless",
                "--convert-to", "pdf:writer_pdf_Export",
                source,
                "--outdir", targetDir
        };
        int exitCode = 0;
        try {
            Process process = Runtime.getRuntime().exec(cmdArray);
            // simhei.ttf
            // 获取命令执行的输出
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = reader.readLine()) != null) {
                log.info(line);
            }
            exitCode = process.waitFor();
            log.error("转换码:"+exitCode);
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new BizException(BaseCode.ERROR, "网络繁忙,请重试!");
        }
        return exitCode;
    }

都看到这里了,还希望各位老板动动发财的小手给老弟点点赞,分享给更多需要的人!文章来源地址https://www.toymoban.com/news/detail-856433.html

到了这里,关于java关于word转PDF的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现doc、ppt、pdf和视频的缩略图

    最近用java对word三大办公软件和视频进行缩略图展示,用到了spire这个插件,比较简单我直接展示下代码,主要就是那个jar包得自己打包,我自己使用pom没法直接导入(即使指定了网址),所以我这边只展示代码了。 这个主要就是生成的缩略图的文件命名。 项目部署在linux上

    2024年02月13日
    浏览(40)
  • Java实现Word文档转PDF,PDF转Word,PDF转Excel,PDF转换工具

    java实现word文档转PDF,PDF转word 解决只能转换4页问题 解决每页头部存在水印问题 引入依赖 破解的jar包 链接: https://pan.baidu.com/s/1MO8OBuf4FQ937R9KDtofPQ 提取码: 4tsn 源码路径:https://download.csdn.net/download/weixin_43992507/88215577 像流读取文件这些要关闭释放,不然异常报错文件的读取不会

    2024年02月13日
    浏览(56)
  • java实现图片、word、pdf等多文件融合到一个pdf(word转pdf)

    本文主要介绍了srpingboot如何将 jpg、jpeg、png、pdf、docx、doc六种格式文件合并输出成一个pdf文件 以及 word文档如何转换为pdf ,关键是 开源免费 在日常工作学习中免不了会涉及到将多种格式的文件合并为一个pdf或者是将word文档、ppt、excel等转换为pdf。废话不多说,直接上代码

    2024年02月15日
    浏览(47)
  • java实现pdf转word

    1.java实现pdf转word。 2.纯免费开源。 3.pdf解析完会生成word文件和图片文件夹。 4.无页码限制,文本类型生成到word中,图片生成到图片文件夹中。 5.弊端:需手动将图片与文本整合成一个word文件。 仅提供一个pdf转word的实现方案,代码粗糙,老铁轻喷。 jar包地址:https://downlo

    2024年03月10日
    浏览(64)
  • Java doc等文件生成PDF、多个PDF合并

    之前写过一遍文章是 图片生成PDF。 今天继续来对 doc等文件进行pdf合并以及多个pdf合并为一个pdf。 兄弟们,还是开箱即用。 依赖 示例代码 依赖 示例代码

    2024年02月10日
    浏览(42)
  • linux下java实现word 转pdf

    documents4j 是一个跨平台的文档转换库,并且可以在 Linux 上进行 Word 转 PDF 的操作。 它利用 Microsft Office 的 APIs 来进行文档转换,因此需要在 Linux 上安装 OpenOffice/LibreOffice 编辑器。 以下是在 Linux 环境下执行 Word 转 PDF 的基本步骤: Ubuntu:使用以下命令安装 CentOS:使用以下命令

    2024年02月16日
    浏览(41)
  • 实现Linux下Word转PDF、Java调用命令方式

    1、 安装 LibreOffice 外网安装 内网安装 官网下载,找最新版本 使用版本拼接本地下载 下载完成放到内网服务器上 2、启动服务 3、安装字体库 4、Java调用Linux命令 支持 windows 和 Linux 转换 PDF , windows 需要安装微软 Microsoft Office , Linux 环境安装 LibreOffice 开源 Office 依赖 DocxUtil E

    2024年02月07日
    浏览(30)
  • 用Java实现Word文件转PDF工具,兼容Linux

    主要使用了pdfbox Apache PDFBox | A Java PDF Library以及spire.doc Free Spire.Doc for Java |  Java Word 组件 (e-iceblue.cn)两个工具包 最近在做根据模板生成word文档,等wrod生成好后,人家又要pdf文件,索性将生成的wrod转pdf。也有使用documents4j进行转换,但是documents4j是依赖offic组件的,只适配Win

    2024年02月12日
    浏览(65)
  • Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印

    本项目所有源码和依赖资源都在文章顶部链接,有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板 获取业务数据并写入该 word 模板,生成新的 word 文档 将新生成的 word 文档转换为 pdf 格式 对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的 pdf 文档 3. 实现思路

    2024年02月08日
    浏览(46)
  • Java使用Documents4j实现Word转PDF(知识点+案例)

    博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。 博主所有博客文件目录索引:博客目录索引(持续更新) 视频平台:

    2024年02月20日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包