国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)

這篇具有很好參考價值的文章主要介紹了Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

文章目錄

一、官網(wǎng)下載openOffice 安裝包,運(yùn)行安裝(不同系統(tǒng)的安裝請自行百度,這里不做過多描述)

二、pom中引入依賴

三、office文件轉(zhuǎn)為pdf流的工具類

四、service層代碼?

五、controller層代碼

Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)


office辦公文檔,如doc、docx、xls、xlsx、ppt、pptx是無法直接在瀏覽器中打開的,但很多OA辦公軟件都要求office文檔能直接在線預(yù)覽功能,解決方法如下:

1、office文檔轉(zhuǎn)為html,使用POI將文檔轉(zhuǎn)為html文件,直接瀏覽器打開預(yù)覽

優(yōu)點:簡單,方便不需要安裝其他插件

缺點:對拓展名為docx、xlsx、pptx格式文檔,最終轉(zhuǎn)換輸出的格式樣式會出錯,影響客戶閱讀,對于客戶需求度不高的可以使用該方法處理

2、office文檔轉(zhuǎn)為pdf,使用POI和fr.opensagres.xdocreport將文檔轉(zhuǎn)為pdf文件,讓瀏覽器內(nèi)置pdf閱讀器瀏覽

優(yōu)點:簡單,方便不需要安裝其他插件

缺點:doc、xls、ppt輸出格式問題不是很大,docx、xlsx、pptx格式文檔輸出樣式錯誤,并且會出現(xiàn)文字丟失等情況,影響客戶閱讀

??fr.opensagres.xdocreport 依賴地址:

<dependency>
   <groupId>fr.opensagres.xdocreport</groupId>
   <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
   <version>1.0.6</version>
</dependency>

3、office文檔轉(zhuǎn)為pdf,使用Apache提供的openOffice將文件轉(zhuǎn)為pdf文件;保證文檔格式、文件轉(zhuǎn)換輸出穩(wěn)定,滿足在線預(yù)覽條件。推薦

優(yōu)點:免費(fèi),完美解決轉(zhuǎn)換格式出錯問題

缺點:需要下載安裝第三方工具openOffice

本地電腦如果裝了Adobe Reader XI,那把pdf直接拖到瀏覽器頁面就可以直接打開預(yù)覽,前提就是瀏覽器要支持pdf文件瀏覽。

這篇博客主要介紹第三種方法,通過poi實現(xiàn)word、excel、ppt轉(zhuǎn)pdf流,這樣就可以在瀏覽器上實現(xiàn)預(yù)覽了。


一、官網(wǎng)下載openOffice 安裝包,運(yùn)行安裝(不同系統(tǒng)的安裝請自行百度,這里不做過多描述)

去官網(wǎng)下載:點擊去官網(wǎng)下載

Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)

?二、pom中引入依賴

<!-- openoffice -->
<dependency>
    <groupId>com.artofsolving</groupId>
    <artifactId>jodconverter</artifactId>
    <version>2.2.1</version>
</dependency>

?三、office文件轉(zhuǎn)為pdf流的工具類

import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.DocumentFormat;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Files;

/**
 * 文件格式轉(zhuǎn)換工具類
 */
public class FileConvertUtil {

    /**
     * 默認(rèn)轉(zhuǎn)換后文件后綴
     */
    private static final String DEFAULT_SUFFIX = "pdf";
    /**
     * 端口
     */
    private static final Integer OPENOFFICE_PORT = 8100;

    /**
     * office文檔轉(zhuǎn)換為PDF(處理本地文件)
     *
     * @param sourcePath 源文件路徑
     * @param suffix     源文件后綴
     * @return InputStream 轉(zhuǎn)換后文件輸入流
     */
    public static InputStream convertLocaleFile(String sourcePath, String suffix) throws Exception {
        File inputFile = new File(sourcePath);
        InputStream inputStream = Files.newInputStream(inputFile.toPath());
        return covertCommonByStream(inputStream, suffix);
    }

    /**
     * office文檔轉(zhuǎn)換為PDF(處理網(wǎng)絡(luò)文件)
     *
     * @param netFileUrl 網(wǎng)絡(luò)文件路徑
     * @param suffix     文件后綴
     * @return InputStream 轉(zhuǎn)換后文件輸入流
     */
    public static InputStream convertNetFile(String netFileUrl, String suffix) throws Exception {
        // 創(chuàng)建URL
        URL url = new URL(netFileUrl);
        // 試圖連接并取得返回狀態(tài)碼
        URLConnection urlConnection = url.openConnection();
        urlConnection.connect();
        HttpURLConnection httpUrlConnection = (HttpURLConnection) urlConnection;
        int httpResult = httpUrlConnection.getResponseCode();
        if (httpResult == HttpURLConnection.HTTP_OK) {
            InputStream inputStream = urlConnection.getInputStream();
            return covertCommonByStream(inputStream, suffix);
        }
        return null;
    }

    /**
     * 將文件以流的形式轉(zhuǎn)換
     *
     * @param inputStream 源文件輸入流
     * @param suffix      源文件后綴
     * @return InputStream 轉(zhuǎn)換后文件輸入流
     */
    public static InputStream covertCommonByStream(InputStream inputStream, String suffix) throws Exception {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        OpenOfficeConnection connection = new SocketOpenOfficeConnection(OPENOFFICE_PORT);
        connection.connect();
        DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
        DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
        DocumentFormat targetFormat = formatReg.getFormatByFileExtension(DEFAULT_SUFFIX);
        DocumentFormat sourceFormat = formatReg.getFormatByFileExtension(suffix);
        converter.convert(inputStream, sourceFormat, out, targetFormat);
        connection.disconnect();
        return outputStreamConvertInputStream(out);
    }

    /**
     * outputStream轉(zhuǎn)inputStream
     */
    public static ByteArrayInputStream outputStreamConvertInputStream(final OutputStream out) throws Exception {
        ByteArrayOutputStream outputStream = (ByteArrayOutputStream) out;
        return new ByteArrayInputStream(outputStream.toByteArray());
    }

}

四、service層代碼?

    @Override
    public void onlinePreview(String url, HttpServletResponse response) {
        // 獲取文件類型
        String[] str = url.split("\\.");

        if (str.length == 0) {
            throw new RuntimeException("文件格式不正確");
        }
        String suffix = str[str.length - 1];
        if (!"txt".equals(suffix) && !"doc".equals(suffix) && !"docx".equals(suffix) && !"xls".equals(suffix)
                && !"xlsx".equals(suffix) && !"ppt".equals(suffix) && !"pptx".equals(suffix)) {
            throw new RuntimeException("文件格式不支持預(yù)覽");
        }
        try {
            InputStream in = FileConvertUtil.convertNetFile(url, suffix);
            OutputStream outputStream = response.getOutputStream();
            // 創(chuàng)建存放文件內(nèi)容的數(shù)組
            byte[] buff = new byte[1024];
            // 所讀取的內(nèi)容使用n來接收
            int n;
            // 當(dāng)沒有讀取完時,繼續(xù)讀取,循環(huán)
            while ((n = in.read(buff)) != -1) {
                // 將字節(jié)數(shù)組的數(shù)據(jù)全部寫入到輸出流中
                outputStream.write(buff, 0, n);
            }
            // 強(qiáng)制將緩存區(qū)的數(shù)據(jù)進(jìn)行輸出
            outputStream.flush();
            // 關(guān)閉流
            outputStream.close();
            in.close();
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }

五、controller層代碼

    @PostMapping("/file/onlinePreview")
    public void onlinePreview(@RequestParam("url") String url, HttpServletResponse response) throws Exception{
        fileService.onlinePreview(url,response);
    }

如果這篇文章對您有所幫助,或者有所啟發(fā)的話,求一鍵三連:點贊、評論、收藏?關(guān)注,您的支持是我堅持寫作最大的動力。?文章來源地址http://www.zghlxwxcb.cn/news/detail-512875.html

到了這里,關(guān)于Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端(vue)js在線預(yù)覽PDF、Word、Excel、ppt等office文件

    可選參數(shù) pdf=true,word文檔嘗試以pdf方式顯示,默認(rèn)false watermark=水印文本,顯示文本水??;“img:”+圖片url表示圖片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允許保存源文件,默認(rèn)false printable=false,是否允許打印,默認(rèn)true ?able=false,是否允許選擇復(fù)制內(nèi)容,

    2024年02月13日
    瀏覽(94)
  • java超簡單實現(xiàn)文檔在線預(yù)覽功能,支持word\excel\text\pdf\圖片等格式轉(zhuǎn)pdf,aspost 轉(zhuǎn)pdf部署linux中文亂碼解決方案

    java超簡單實現(xiàn)文檔在線預(yù)覽功能,支持word\excel\text\pdf\圖片等格式轉(zhuǎn)pdf,aspost 轉(zhuǎn)pdf部署linux中文亂碼解決方案

    一、背景 ????????在工作中需要對上傳到服務(wù)器的各種類型包括但不限于word、pdf、excel等文件進(jìn)行在線預(yù)覽,前端比較菜搞不定,只能本人親自上。 ? ? ? ? 網(wǎng)上的經(jīng)驗比較多也比較亂, 有的只有預(yù)覽,沒有文件格式轉(zhuǎn)換,有的也不說linux存在字體問題, 本文會直白的給

    2024年04月10日
    瀏覽(596)
  • 文檔在線預(yù)覽(二)word、pdf文件轉(zhuǎn)html以實現(xiàn)文檔在線預(yù)覽

    文檔在線預(yù)覽(二)word、pdf文件轉(zhuǎn)html以實現(xiàn)文檔在線預(yù)覽

    @ 目錄 一、前言 1、aspose 2 、poi + pdfbox 3 spire 二、將文件轉(zhuǎn)換成html字符串 1、將word文件轉(zhuǎn)成html字符串 1.1 使用aspose 1.2 使用poi 1.3 使用spire 2、將pdf文件轉(zhuǎn)成html字符串 2.1 使用aspose 2.2 使用 poi + pbfbox 2.3 使用spire 3、將excel文件轉(zhuǎn)成html字符串 3.1 使用aspose 3.2 使用poi + pdfbox 3.3 使用

    2024年02月06日
    瀏覽(89)
  • 前端實現(xiàn)在線預(yù)覽、編輯Office文檔(vue版)

    前端實現(xiàn)在線預(yù)覽、編輯Office文檔(vue版)

    使用插件:Spire.Cloud在線Office文檔編輯器(官網(wǎng):冰藍(lán)科技在線編輯) 無需安裝,在 index.html 里面引入即可 重點:支持在線創(chuàng)建、編輯、保存和打印 Office (Word / Excel / PPT) 文檔 助您輕松實現(xiàn)高效率、無紙化辦公 使用瀏覽器打開:https://cloud.e-iceblue.cn/,點擊右上角頭像注冊/登

    2024年02月12日
    瀏覽(20)
  • Linux環(huán)境Libreoffice實現(xiàn)Word、Excel等在線預(yù)覽

    Linux環(huán)境Libreoffice實現(xiàn)Word、Excel等在線預(yù)覽

    目錄 轉(zhuǎn)PDF 一、Linux安裝libreoffice 二、Java代碼實現(xiàn) 這里介紹的是在linux環(huán)境(windows環(huán)境類似)下實現(xiàn)講word、Excel、ppt、txt以及png圖片轉(zhuǎn)換為PDF文件后實現(xiàn)的預(yù)覽。由于需要轉(zhuǎn)換為PDF文件, 當(dāng)Excel表格太大太寬的時候,可能出現(xiàn)換頁等格式被破壞的情況。 從官網(wǎng)下載對應(yīng)版本的

    2024年02月08日
    瀏覽(22)
  • ios 實現(xiàn)PDF,Word,Excel等文檔類型的讀取與預(yù)覽

    最近正在研發(fā)的項目有一個需求: 允許用戶將iCloud中的文檔上傳,實現(xiàn)文件的流轉(zhuǎn)。 以前接觸的項目對于資料類的上傳大多是僅限于圖片與視頻。對于文檔類(PDF, Word, Excel, Text等), 因蘋果的沙箱環(huán)境限制,想要讀取文件是無法實現(xiàn)的。目前雖然可以支持選擇文件,但只能通

    2024年02月06日
    瀏覽(90)
  • vue在線預(yù)覽word、excel、PDF

    1、安裝依賴 如果是vue2.6版本或以下還需要額外安裝 @vue/composition-api 2、預(yù)覽WORD代碼 3、預(yù)覽EXCEL 4、預(yù)覽PDF 5、項目參考地址

    2024年02月09日
    瀏覽(103)
  • 在線預(yù)覽Word、Excel、PowerPoint等文件

    在我們工作時,經(jīng)常會有在線查看各種不同類型的文件的需要,如Word文檔、Excel表格、PowerPoint幻燈片和PDF等。可以直接在這里預(yù)覽:https://www.compdf.com/webviewer/demo 方案一: 使用 XDOC 可以實現(xiàn)預(yù)覽以 DataURI 表示的 word 文檔,此外 XDOC 還可以實現(xiàn)文本、帶參數(shù)文本、html文本、j

    2024年02月13日
    瀏覽(19)
  • vue 使用vue-office預(yù)覽word、excel,pdf同理

    在此,我只使用了docx和excel, pdf我直接使用的iframe進(jìn)行的展示就不作贅述了 如果是vue2.6版本或以下還需要額外安裝 @vue/composition-api 參考: 1、vue + vue-office 實現(xiàn)多種文件(docx、excel、pdf)的預(yù)覽 2、vue 預(yù)覽word、excel、pdf文檔 vue-office(VueOfficeDocx、VueOfficeExcel、VueOfficePdf) 3、vu

    2024年02月07日
    瀏覽(92)
  • docker onlyoffice7.1.1 word excel ppt在線編輯、在線預(yù)覽_部署01

    docker onlyoffice7.1.1 word excel ppt在線編輯、在線預(yù)覽_部署01

    1. 創(chuàng)建onlyoffice容器 下面命令作用:拉取鏡像、映射宿主機(jī)端口和docker內(nèi)部端口、創(chuàng)建宿主機(jī)和docker容器掛載目錄、拉取指定版本的onlyoffice/documentserver 2. 啟動在線案例 執(zhí)行命令 3. 開放防火墻 4. 瀏覽器驗證 點擊GO TO TEST EXAMPLE 測試頁面 5. 上傳文件測試 6. 在線編輯 7. 測試主頁

    2024年02月13日
    瀏覽(59)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包