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

SpringBoot項(xiàng)目實(shí)現(xiàn)Word轉(zhuǎn)PDF的完整解決方案

 更新時間:2026年01月15日 08:34:10   作者:奮斗的狍子007  
本文介紹了LibreOffice這款免費(fèi)、開源、跨平臺的辦公套件,包括其功能、應(yīng)用場景、核心組件、安裝方法及如何在項(xiàng)目中調(diào)用,需要的朋友可以參考下

一、簡介

LibreOffice 是一款免費(fèi)、開源、跨平臺的辦公套件(Office Suite),由 LibreOffice 基金會維護(hù),對標(biāo)微軟 Office(Word/Excel/PowerPoint 等),支持 Windows、macOS、Linux 等主流操作系統(tǒng),核心目標(biāo)是提供無版權(quán)限制、功能完整的辦公解決方案。完美支持微軟 Office 格式(.docx/.xlsx/.pptx),也支持開源格式(.odt/.ods/.odp)和通用格式(PDF)。

二、應(yīng)用場景

1.普通辦公:替代微軟 Office 完成日常文檔 / 表格 / 幻燈片編輯,無版權(quán)風(fēng)險;

2.自動化文件轉(zhuǎn)換:就是你代碼中的場景,批量將 docx/xlsx/pptx 轉(zhuǎn)換為 PDF(最常用),或反向轉(zhuǎn)換;

3.服務(wù)器端文檔處理:Web 系統(tǒng)中,用戶上傳 Word 文檔,后臺自動轉(zhuǎn)換為 PDF 供下載;

4.批量生成文檔:結(jié)合模板,通過宏 / 命令行批量生成合同、報(bào)表等標(biāo)準(zhǔn)化文檔;

5.跨平臺 辦公:Linux 服務(wù)器 / 桌面端無微軟 Office 時,用 LibreOffice 完成辦公需求。

三、LibreOffice 核心組件

四、安裝LibreOffice

1.準(zhǔn)備幾個安裝包

2.安裝如下命令安裝即可

tar -xvf LibreOffice_25.2.4.3_Linux_x86-64_rpm.tar.gz

cd LibreOffice_25.2.4.3_Linux_x86-64_rpm/RPMS/

sudo rpm -ivh *.rpm

依次安裝其他安裝包

3.如果出現(xiàn)問題,可以升級一下當(dāng)前環(huán)境的libxslt

libxslt在 C/C++ 程序中調(diào)用 XSLT 轉(zhuǎn)換功能的底層庫,性能高效、跨平臺,是處理 XML 轉(zhuǎn)換的工業(yè)級標(biāo)準(zhǔn)庫。

yum install libxslt

五、項(xiàng)目中如何調(diào)用

代碼示例
1.創(chuàng)建2個目錄

inputFilePath 源文件目錄
File fileFolder = new File(fileFolderPath);

outDir 轉(zhuǎn)化之后的文件目錄
File fileFolder = new File(fileFolderPath);

2.核心命令格式

# 基礎(chǔ)格式:soffice --headless [操作參數(shù)] [輸入文件] [輸出參數(shù)]

String  cmdStr =  path(soffice所在的安裝目錄) + soffice --headless --convert-to pdf inputFilePath --outdir outDir

–headless:開啟無頭模式(必加,否則會彈出圖形界面);
–convert-to [格式]:指定轉(zhuǎn)換目標(biāo)格式(如 pdf/xlsx/docx);
–outdir [路徑]:指定輸出目錄;
–invisible:可選,增強(qiáng)無頭模式(避免意外彈出窗口);
-env:UserInstallation=file:///tmp/lo_temp:可選,解決多線程 / 多進(jìn)程調(diào)用時的沖突。

3.創(chuàng)建進(jìn)程執(zhí)行指定的可執(zhí)行程序

Process process = Runtime.getRuntime().exec(command);

// 等待子進(jìn)程完成再往下執(zhí)行,返回值是子線程執(zhí)行完畢的返回值,返回0表示正常結(jié)束
boolean exited = process.waitFor(5, TimeUnit.MINUTES);

if (exited) {
	exitStatus = process.exitValue();

	// 下面兩個可以獲取輸入輸出流
	printMessage(process.getErrorStream(), true);
	printMessage(process.getInputStream(), false);
 }

操作系統(tǒng)給每個進(jìn)程的輸出緩沖區(qū)(stdout/stderr)是有大小限制的(比如幾 KB)。
如果 LibreOffice 執(zhí)行時輸出了內(nèi)容,但你的 Java 程序沒有讀取這些內(nèi)容,緩沖區(qū)會被占滿,LibreOffice 進(jìn)程會被阻塞,無法繼續(xù)執(zhí)行

private void printMessage(final InputStream input, boolean error) {
	try {
		InputStreamReader isr = new InputStreamReader(input, "utf-8");
		BufferedReader br = new BufferedReader(isr);
		String info;
		while ((info = br.readLine()) != null) {
			if (error) {
				//這里不用做任何操作
				log.error(info);
			} else {
				//這里不用做任何操作
				log.info(info);
			}
		}
	} catch (Exception e) {
		log.error("ETechHelp.printMessage is fail", e);
	}
}


讀取的是進(jìn)程的錯誤輸出 process.getErrorStream()

讀取的是進(jìn)程的正常輸出 process.getInputStream()

這套方案可直接集成到你的 Spring Boot 項(xiàng)目中,只需根據(jù)實(shí)際環(huán)境調(diào)整 application.yml 中的 LibreOffice 路徑即可。

到此這篇關(guān)于SpringBoot實(shí)現(xiàn)Word轉(zhuǎn)PDF的完整解決方案的文章就介紹到這了,更多相關(guān)SpringBoot Word轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

台安县| 安远县| 汉中市| 富川| 泰来县| 临湘市| 聂拉木县| 子洲县| 萝北县| 罗山县| 元朗区| 东至县| 文山县| 财经| 柯坪县| 驻马店市| 武宁县| 西乡县| 凉城县| 梅州市| 临海市| 屏南县| 商丘市| 民勤县| 姜堰市| 忻城县| 普洱| 虞城县| 长沙县| 志丹县| 南木林县| 江城| 新竹县| 清水河县| 寿阳县| 车险| 沈阳市| 辽宁省| 贵德县| 东城区| 泸定县|