最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用OpenOffice將office文件轉(zhuǎn)換為PDF的示例方法

 更新時間:2024年09月14日 10:58:46   作者:徐州蔡徐坤  
OpenOffice是一個開源的辦公套件,它包含了文檔處理、電子表格、演示文稿以及繪圖等多種功能,類似于Microsoft Office,本文將給大家介紹Java使用OpenOffice將office文件轉(zhuǎn)換為PDF的示例方法,需要的朋友可以參考下

1. 先行工作

請注意,無論是windows還是liunx環(huán)境都需要安裝jdk環(huán)境,版本jdk7+

1.1 OpenOffice官網(wǎng)下載

本地開發(fā)環(huán)境使用windows,因此下載Windows 32-bit (x86)(EXE),

測試環(huán)境使用linux,所以下載Linux 64-bit(x86-64)

OpenOffice官網(wǎng)下載

image-20240204084355610

1.2 JODConverter官網(wǎng)下載

JODConverter官網(wǎng)下載

1.3 下載內(nèi)容

image-20240204143339196

2.介紹

OpenOffice: OpenOffice是一套跨平臺的辦公室軟件套件,功能非常強大,適用windows、linux、mac等各大平臺,簡單來說Office能做到的OpenOffice也基本都能做到。

JODConverter: 是一個Java的OpenDocument文件轉(zhuǎn)換器,可以進行許多文件格式的轉(zhuǎn)換。它依賴于OpenOffice.org或者LibreOffice提供的服務來進行轉(zhuǎn)換,它能將Microsoft Office文檔(Word,Excel,PowerPoint)轉(zhuǎn)換為PDF格式。你可以將JODConverter內(nèi)嵌在Java應用程序里,也可以單獨作為命令行由腳本調(diào)用,更可以應用為網(wǎng)頁程序或者Web Service以供網(wǎng)絡應用。

3. 安裝OpenOffice服務

3.1.Windows環(huán)境

  • 首先安裝OpenOffice,可直接默認安裝
  • 通過命令行方式啟動OpenOffice服務(這步可不執(zhí)行,僅作為驗證是否安裝正確,代碼中會自動啟動服務)
//進入目錄
cd C:\Program Files (x86)\OpenOffice 4\program
//啟動OpenOffice服務
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
//查看是否啟動成功
netstat -ano|findstr "8100"
//終止進程
taskkill /F /PID 2032

image-20240204144733832

3.2 Linux環(huán)境

創(chuàng)建指定目錄并上傳下載的liunx下的安裝包

mkdir openoffice

執(zhí)行解壓縮命令

tar -zxvf Apache_OpenOffice_4.1.15_Linux_x86-64_install-rpm_zh-CN.tar.gz

image-20240205113503769

進入zh-CN/RPMS/目錄下安裝rpm文件

yum localinstall *.rpm

輸入y確認安裝,安裝完成后會生成目錄:desktop-integration

image-20240205113852876

進入desktop-integration目錄 安裝

yum localinstall openoffice4.1.15-redhat-menus-4.1.15-9813.noarch.rpm 

輸入y確認安裝,如果報錯:

Transaction check error:
  file /usr/bin/soffice from install of openoffice4.1.15-redhat-menus-4.1.15-9813.noarch conflicts with file from package libreoffice-core-1:5.3.6.1-24.el7.x86_64

執(zhí)行以下命令

sudo yum remove libreoffice-core

然后重新執(zhí)行上一步的安裝命令,成功如下:

image-20240205114311409

后臺服務方式啟動openoffice服務

/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

4. maven依賴

jodconverter-2.2.2中的有些jar文件的依賴并不一定會在maven倉庫中找到,因此需要手動install

打開命令行執(zhí)行以下命令,注意-Dfile替換為 jodconverter-2.2.2\jodconverter-2.2.2\lib 的目錄

mvn install:install-file -Dfile="E:\開發(fā)工具\openoffice-word轉(zhuǎn)pdf\jodconverter-2.2.2\jodconverter-2.2.2\lib\unoil-3.0.1.jar" -DgroupId=org.apache.openoffice -DartifactId=unoil -Dversion=3.0.1 -Dpackaging=jar
mvn install:install-file -Dfile="E:\開發(fā)工具\openoffice-word轉(zhuǎn)pdf\jodconverter-2.2.2\jodconverter-2.2.2\lib\jodconverter-2.2.2.jar" -DgroupId=org.jodconverter -DartifactId=jodconverter -Dversion=2.2.2 -Dpackaging=jar
mvn install:install-file -Dfile="E:\開發(fā)工具\openoffice-word轉(zhuǎn)pdf\jodconverter-2.2.2\jodconverter-2.2.2\lib\jodconverter-cli-2.2.2.jar" -DgroupId=org.jodconverter -DartifactId=jodconverter-cli -Dversion=2.2.2 -Dpackaging=jar
mvn install:install-file -Dfile="E:\開發(fā)工具\openoffice-word轉(zhuǎn)pdf\jodconverter-2.2.2\jodconverter-2.2.2\lib\juh-3.0.1.jar" -DgroupId=org.apache.odftoolkit -DartifactId=juh -Dversion=3.0.1-incubating -Dpackaging=jar
mvn install:install-file -Dfile="E:\開發(fā)工具\openoffice-word轉(zhuǎn)pdf\jodconverter-2.2.2\jodconverter-2.2.2\lib\jurt-3.0.1.jar" -DgroupId=org.apache.odftoolkit -DartifactId=jurt -Dversion=3.0.1-incubating -Dpackaging=jar
mvn install:install-file -Dfile="E:\開發(fā)工具\openoffice-word轉(zhuǎn)pdf\jodconverter-2.2.2\jodconverter-2.2.2\lib\ridl-3.0.1.jar" -DgroupId=org.apache.odftoolkit -DartifactId=ridl -Dversion=3.0.1-incubating -Dpackaging=jar

image-20240204164608484

5. 轉(zhuǎn)換代碼

轉(zhuǎn)換工具類:FileConversionUtil.java

package com.cxstar.common.utils;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 文件轉(zhuǎn)換工具類,支持將不同類型的文件轉(zhuǎn)換為指定格式(pdf或html)。
 */
@Slf4j
public class FileConversionUtil {

    /**
     * 被轉(zhuǎn)換文件類型的枚舉,用于表示支持的文件類型。
     */
    public enum FileType {
        DOC, DOCX, XLS, XLSX, PPT, PPTX;

        /**
         * 獲取小寫文件類型列表
         *
         * @return 小寫文件類型列表
         */
        public static List<String> getLowerCaseFileTypes() {
            return Arrays.stream(values())
                    .map(FileType::name)
                    .map(String::toLowerCase)
                    .collect(Collectors.toList());
        }
    }

    /**
     * 轉(zhuǎn)換文件類型的枚舉,用于表示支持的文件類型。
     */
    public enum ConvertFileType {
        PDF, HTML;

        /**
         * 獲取小寫文件類型列表
         *
         * @return 小寫文件類型列表
         */
        public static List<String> getLowerCaseFileTypes() {
            return Arrays.stream(values())
                    .map(ConvertFileType::name)
                    .map(String::toLowerCase)
                    .collect(Collectors.toList());
        }
    }

    /**
     * 執(zhí)行文件格式轉(zhuǎn)換。
     *
     * @param originalFilePath  原始文件路徑
     * @param convertedFilePath 轉(zhuǎn)換后文件保存路徑
     * @return 轉(zhuǎn)換是否成功
     */
    public static boolean convertToPdf(String originalFilePath, String convertedFilePath) {
        // 獲取原始文件擴展名
        String originalExt = FilenameUtils.getExtension(originalFilePath);
        List<String> lowerCaseFileTypes = FileType.getLowerCaseFileTypes();
        // 檢查原始文件類型是否支持
        if (!lowerCaseFileTypes.contains(originalExt)) {
            throw new RuntimeException("錯誤的轉(zhuǎn)換類型:只允許格式為:" + StringUtils.join(lowerCaseFileTypes, ",") + " 進行轉(zhuǎn)換");
        }

        // 獲取目標文件擴展名
        String convertExt = FilenameUtils.getExtension(convertedFilePath);
        List<String> convertFileTypes = ConvertFileType.getLowerCaseFileTypes();

        // 檢查目標文件類型是否支持
        if (!convertFileTypes.contains(convertExt)) {
            throw new RuntimeException("錯誤的轉(zhuǎn)換類型:只允許轉(zhuǎn)換為:" + StringUtils.join(convertFileTypes, ","));
        }

        try {
            // 連接 OpenOffice 服務。需提前開啟 OpenOffice 服務,否則會報錯。
            OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
            try {
                connection.connect();
            } catch (Exception e) {
                throw new RuntimeException("連接 OpenOffice 服務失敗,請檢查是否啟動 OpenOffice 服務,錯誤信息:" + e.getMessage());
            }

            // 轉(zhuǎn)化原始文件轉(zhuǎn)化為 pdf 或 html
            log.info("開始轉(zhuǎn)換......");
            long startTime = System.currentTimeMillis();

            DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
            converter.convert(new File(originalFilePath), new File(convertedFilePath));

            long endTime = System.currentTimeMillis();
            log.info("轉(zhuǎn)換完成,耗時: {} 毫秒", endTime - startTime);

            connection.disconnect();

        } catch (Exception e) {
            throw new RuntimeException("轉(zhuǎn)換異常:" + e.getMessage());
        }
        return true;
    }
}

測試類:

@Test
void createIndexAndSetMapping11() {
    String file ="C:\\Users\\zhouquan\\Desktop\\敘述詞導入模板.xlsx";
    String pdfFile = "C:\\Users\\zhouquan\\Desktop\\test.pdf";
    FileConversionUtil.conversionPdfOrHtml(file, pdfFile);
}

以上就是Java使用OpenOffice將office文件轉(zhuǎn)換為PDF的示例方法的詳細內(nèi)容,更多關(guān)于Java OpenOffice將office文件轉(zhuǎn)PDF的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot自定義對象參數(shù)實現(xiàn)自動類型轉(zhuǎn)換與格式化

    SpringBoot自定義對象參數(shù)實現(xiàn)自動類型轉(zhuǎn)換與格式化

    SpringBoot 通過自定義對象參數(shù),可以實現(xiàn)自動類型轉(zhuǎn)換與格式化,并可以級聯(lián)封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-09-09
  • Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密

    Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密

    業(yè)務場景中經(jīng)常會遇到諸如用戶手機號,身份證號,銀行卡號,郵箱,地址,密碼等等信息,屬于敏感信息,本文就來介紹一下Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密,感興趣的可以了解一下
    2023-10-10
  • Spring整合Weblogic jms實例詳解

    Spring整合Weblogic jms實例詳解

    這篇文章主要介紹了Spring整合Weblogic jms實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • JAVA設計模式---原型模式你了解嗎

    JAVA設計模式---原型模式你了解嗎

    這篇文章主要介紹了JAVA 原型模式的的相關(guān)資料,文中講解非常細致,實例幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2021-09-09
  • 淺談一個基礎的SpringBoot項目該包含哪些

    淺談一個基礎的SpringBoot項目該包含哪些

    這篇文章主要介紹了淺談一個基礎的SpringBoot項目該包含哪些,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java中Map.merge()方法使用示例詳解

    Java中Map.merge()方法使用示例詳解

    這篇文章主要介紹了Map.merge()方法使用和介紹,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Spring?Boot?整合持久層之Spring Data JPA

    Spring?Boot?整合持久層之Spring Data JPA

    在介紹Spring Data JPA的時候,我們首先認識下Hibernate。Hibernate是數(shù)據(jù)訪問解決技術(shù)的絕對霸主,使用O/R映射技術(shù)實現(xiàn)數(shù)據(jù)訪問,O/R映射即將領(lǐng)域模型類和數(shù)據(jù)庫的表進行映射,通過程序操作對象而實現(xiàn)表數(shù)據(jù)操作的能力,讓數(shù)據(jù)訪問操作無須關(guān)注數(shù)據(jù)庫相關(guān)的技術(shù)
    2022-08-08
  • 詳談Jedis連接池的使用

    詳談Jedis連接池的使用

    下面小編就為大家?guī)硪黄斦凧edis連接池的使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 解決方法A調(diào)用方法B的事務控制問題

    解決方法A調(diào)用方法B的事務控制問題

    這篇文章主要介紹了解決方法A調(diào)用方法B的事務控制問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mapper接口注入兩種方式詳解

    mapper接口注入兩種方式詳解

    這篇文章主要介紹了mapper接口注入兩種方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論

宁化县| 长垣县| 城步| 海盐县| 边坝县| 贵南县| 漠河县| 日照市| 威海市| 岑巩县| 绥芬河市| 行唐县| 临高县| 洛宁县| 舞阳县| 兴隆县| 西青区| 门源| 社旗县| 汉川市| 南木林县| 永安市| 富源县| 修文县| 清河县| 县级市| 建瓯市| 定州市| 图木舒克市| 马关县| 甘南县| 株洲市| 武强县| 徐水县| 响水县| 乌拉特后旗| 井冈山市| 陇南市| 清丰县| 玛纳斯县| 垦利县|