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

Java實(shí)現(xiàn)doc、ppt、pdf和視頻的縮略圖

這篇具有很好參考價(jià)值的文章主要介紹了Java實(shí)現(xiàn)doc、ppt、pdf和視頻的縮略圖。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近用java對(duì)word三大辦公軟件和視頻進(jìn)行縮略圖展示,用到了spire這個(gè)插件,比較簡(jiǎn)單我直接展示下代碼,主要就是那個(gè)jar包得自己打包,我自己使用pom沒(méi)法直接導(dǎo)入(即使指定了網(wǎng)址),所以我這邊只展示代碼了。

1.word縮略圖

    /**
     * word獲取縮略圖
     *
     * @param wordFile      word文件地址
     * @param outputImgPath 輸出圖片目錄
     * @return 圖片路徑
     * @create 2023-01-09
     */
    private static String wordToImage(String wordFile, String outputImgPath) throws Exception {
        Document word = new Document();
        word.loadFromFile(wordFile);
        String fileName = getFileName(wordFile);
        BufferedImage image = word.saveToImages(0, ImageType.Bitmap);
        String imgUrl = outputImgPath + fileName + (0 + 1) + ".png";
        File file = new File(imgUrl);
        ImageIO.write(image, "PNG", file);
        log.info("word縮略圖獲取完成,圖片目錄:[{}]", imgUrl);
        return imgUrl;
    }

2.ppt縮略圖

    /**
     * ppt獲取縮略圖
     *
     * @param pptFile       ppt文件地址
     * @param outputImgPath 輸出圖片目錄
     * @return 圖片路徑
     * @create 2023-01-09
     */
    private static String pptToImage(String pptFile, String outputImgPath) throws Exception {
        Presentation ppt = new Presentation();
        ppt.loadFromFile(pptFile);
        String fileName = getFileName(pptFile);
        BufferedImage image = ppt.getSlides().get(0).saveAsImage();
        String imgUrl = outputImgPath + fileName + (0 + 1) + ".png";
        ImageIO.write(image, "PNG", new File(imgUrl));
        ppt.dispose();
        log.info("ppt縮略圖獲取完成,圖片目錄:[{}]", imgUrl);
        return imgUrl;
    }

3.pdf縮略圖

    /**
     * pdf獲取縮略圖
     *
     * @param pdfFile       pdf文件地址
     * @param outputImgPath 輸出圖片目錄
     * @return 圖片路徑
     * @create 2023-01-09
     */
    private static String pdfToImage(String pdfFile, String outputImgPath) throws Exception {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile(pdfFile);
        String fileName = getFileName(pdfFile);
        BufferedImage image = pdf.saveAsImage(0, PdfImageType.Bitmap);
        String imgUrl = outputImgPath + fileName + (0 + 1) + ".png";
        File file = new File(imgUrl);
        ImageIO.write(image, "PNG", file);
        log.info("pdf縮略圖獲取完成,圖片目錄:[{}]", imgUrl);
        return imgUrl;
    }

4.video縮略圖

    /**
     * 截取視頻第一幀的圖片
     *
     * @param videoFile     視頻路徑
     * @param outputImgPath 文件存放的根目錄
     * @return 圖片路徑
     * @throws FrameGrabber.Exception
     */
    private static String videoImage(String videoFile, String outputImgPath) throws FrameGrabber.Exception {
        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(videoFile);
        ff.start();
        Frame f;
        f = ff.grabImage();
        //保存文件名稱
        String pngPath = getFileName(videoFile) + ".png";

        //最終圖片路徑
        String resPath = outputImgPath + pngPath;
        //截取縮略圖
        String imageMat = "PNG";
        if (null == f || null == f.image) {
            return "";
        }
        Java2DFrameConverter converter = new Java2DFrameConverter();
        BufferedImage bufferedImage = converter.getBufferedImage(f);
        File output = new File(resPath);
        try {
            ImageIO.write(bufferedImage, imageMat, output);
        } catch (IOException e) {
            e.printStackTrace();
        }

        log.info("video縮略圖獲取完成,圖片目錄:[{}]", resPath);
        ff.stop();
        return resPath;
    }

5.功能函數(shù)

這個(gè)主要就是生成的縮略圖的文件命名。

    /**
     * 增加時(shí)間戳的文件名(不帶后綴)
     *
     * @param filePath 文件路徑
     * @return java.lang.String
     * @create 2023-01-09
     */
    private static String getFileName(String filePath) {
        String fileName = new File(filePath).getName();
        String res = System.currentTimeMillis() + "-" + fileName.substring(0, fileName.lastIndexOf("."));
        return res;
    }

	/**
	*縮略圖通用方法
	*/
	public static String generateThumbnail(String file, String outputImgPath) throws Exception {
        if (!outputImgPath.endsWith(File.separator)) {
            //如果不是斜杠結(jié)尾增加
            outputImgPath += File.separator;
        }
        String filePath = "";
        if (file.endsWith("doc") | file.endsWith("docx")) {
            filePath = wordToImage(file, outputImgPath);
        } else if (file.endsWith("ppt") | file.endsWith("pptx")) {
            filePath = pptToImage(file, outputImgPath);
        } else if (file.endsWith("pdf")) {
            filePath = pdfToImage(file, outputImgPath);
        } else if (file.endsWith("mp4")) {
            filePath = videoImage(file, outputImgPath);
        }
        return filePath;
    }
import com.spire.doc.Document;
import com.spire.doc.documents.ImageType;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.PdfImageType;
import com.spire.presentation.Presentation;
import lombok.extern.slf4j.Slf4j;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.Java2DFrameConverter;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * 類(lèi)描述:縮略圖工具類(lèi)
 *
 * @ClassName ThumbnailUtil
 * @Author ward
 * @Date 2023-01-06 17:46
 */
@Slf4j
public class ThumbnailUtil {

    /**
     * 增加時(shí)間戳的文件名(不帶后綴)
     *
     * @param filePath 文件路徑
     * @return java.lang.String
     * @create 2023-01-09
     */
    private static String getFileName(String filePath) {
        String fileName = new File(filePath).getName();
        String res = System.currentTimeMillis() + "-" + fileName.substring(0, fileName.lastIndexOf("."));
        return res;
    }

    /**
     * word獲取縮略圖
     *
     * @param wordFile      word文件地址
     * @param outputImgPath 輸出圖片目錄
     * @return 圖片路徑
     * @create 2023-01-09
     */
    private static String wordToImage(String wordFile, String outputImgPath) throws Exception {
        Document word = new Document();
        word.loadFromFile(wordFile);
        String fileName = getFileName(wordFile);
        BufferedImage image = word.saveToImages(0, ImageType.Bitmap);
        String imgUrl = outputImgPath + fileName + (0 + 1) + ".png";
        File file = new File(imgUrl);
        ImageIO.write(image, "PNG", file);
        log.info("word縮略圖獲取完成,圖片目錄:[{}]", imgUrl);
        return imgUrl;
    }

    /**
     * ppt獲取縮略圖
     *
     * @param pptFile       ppt文件地址
     * @param outputImgPath 輸出圖片目錄
     * @return 圖片路徑
     * @create 2023-01-09
     */
    private static String pptToImage(String pptFile, String outputImgPath) throws Exception {
        Presentation ppt = new Presentation();
        ppt.loadFromFile(pptFile);
        String fileName = getFileName(pptFile);
        BufferedImage image = ppt.getSlides().get(0).saveAsImage();
        String imgUrl = outputImgPath + fileName + (0 + 1) + ".png";
        ImageIO.write(image, "PNG", new File(imgUrl));
        ppt.dispose();
        log.info("ppt縮略圖獲取完成,圖片目錄:[{}]", imgUrl);
        return imgUrl;
    }

    /**
     * pdf獲取縮略圖
     *
     * @param pdfFile       pdf文件地址
     * @param outputImgPath 輸出圖片目錄
     * @return 圖片路徑
     * @create 2023-01-09
     */
    private static String pdfToImage(String pdfFile, String outputImgPath) throws Exception {
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile(pdfFile);
        String fileName = getFileName(pdfFile);
        BufferedImage image = pdf.saveAsImage(0, PdfImageType.Bitmap);
        String imgUrl = outputImgPath + fileName + (0 + 1) + ".png";
        File file = new File(imgUrl);
        ImageIO.write(image, "PNG", file);
        log.info("pdf縮略圖獲取完成,圖片目錄:[{}]", imgUrl);
        return imgUrl;
    }

    /**
     * 截取視頻第六幀的圖片
     *
     * @param videoFile     視頻路徑
     * @param outputImgPath 文件存放的根目錄
     * @return 圖片路徑
     * @throws FrameGrabber.Exception
     */
    private static String videoImage(String videoFile, String outputImgPath) throws FrameGrabber.Exception {
        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(videoFile);
        ff.start();
        Frame f;
        f = ff.grabImage();
        //保存文件名稱
        String pngPath = getFileName(videoFile) + ".png";

        //最終圖片路徑
        String resPath = outputImgPath + pngPath;
        //截取縮略圖
        String imageMat = "PNG";
        if (null == f || null == f.image) {
            return "";
        }
        Java2DFrameConverter converter = new Java2DFrameConverter();
        BufferedImage bufferedImage = converter.getBufferedImage(f);
        File output = new File(resPath);
        try {
            ImageIO.write(bufferedImage, imageMat, output);
        } catch (IOException e) {
            e.printStackTrace();
        }

        log.info("video縮略圖獲取完成,圖片目錄:[{}]", resPath);
        ff.stop();
        return resPath;
    }

    public static String generateThumbnail(String file, String outputImgPath) throws Exception {
        if (!outputImgPath.endsWith(File.separator)) {
            //如果不是斜杠結(jié)尾增加
            outputImgPath += File.separator;
        }
        String filePath = "";
        if (file.endsWith("doc") | file.endsWith("docx")) {
            filePath = wordToImage(file, outputImgPath);
        } else if (file.endsWith("ppt") | file.endsWith("pptx")) {
            filePath = pptToImage(file, outputImgPath);
        } else if (file.endsWith("pdf")) {
            filePath = pdfToImage(file, outputImgPath);
        } else if (file.endsWith("mp4")) {
            filePath = videoImage(file, outputImgPath);
        }
        return filePath;
    }

    public static void main(String[] args) throws Exception {
        String path = generateThumbnail("D:\\desktop\\test\\video.mp4",
                "D:\\desktop\\test\\img");
        System.out.println(path);
    }
}

6.異常情況

項(xiàng)目部署在linux上,生成縮略圖的時(shí)候部分字體就會(huì)顯示不了,如下圖。后來(lái)發(fā)現(xiàn)是linux缺少中文字體導(dǎo)致的,這里介紹下導(dǎo)入中文字體的方法。
java獲取視頻縮略圖,Java,java,powerpoint,pdf文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-636224.html

6.1安裝軟件

#安裝fontconfig和mkfontscale工具
yum install -y fontconfig
yum install -y mkfontscale

#創(chuàng)建字體文件夾(存中文字體)
mkdir -p /usr/share/fonts/chinese/

#給與權(quán)限
chmod -R 775 /usr/share/fonts/chinese/

#接下來(lái)就是把你電腦里的C:\Windows\Fonts路徑下的全部壓縮上傳解壓到剛剛創(chuàng)建的文件夾里

#進(jìn)入文件夾,以下命令要進(jìn)入文件夾下
cd /usr/share/fonts
#字體擴(kuò)展
mkfontscale 
#新增字體目錄
mkfontdir 
#刷新緩存
fc-cache -fv 
#查看字體
fc-list :lang=zh

到了這里,關(guān)于Java實(shí)現(xiàn)doc、ppt、pdf和視頻的縮略圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java中如何生成PDF文件的縮略圖

    在Java中生成PDF文件的縮略圖可以使用Apache PDFBox庫(kù)。以下是一個(gè)簡(jiǎn)單的示例代碼來(lái)實(shí)現(xiàn)這個(gè)功能: 在上面的代碼中,首先加載PDF文件并創(chuàng)建一個(gè)PDFRenderer對(duì)象。然后使用 renderImage 方法來(lái)渲染指定頁(yè)面的PDF文檔為一個(gè)BufferedImage對(duì)象。最后使用 writeImage 方法將BufferedImage對(duì)象保存

    2024年04月14日
    瀏覽(23)
  • Java doc等文件生成PDF、多個(gè)PDF合并

    之前寫(xiě)過(guò)一遍文章是 圖片生成PDF。 今天繼續(xù)來(lái)對(duì) doc等文件進(jìn)行pdf合并以及多個(gè)pdf合并為一個(gè)pdf。 兄弟們,還是開(kāi)箱即用。 依賴 示例代碼 依賴 示例代碼

    2024年02月10日
    瀏覽(23)
  • python讀取pdf、doc、docx、ppt、pptx文件內(nèi)容

    使用python讀取文件,其中pdf、docx、pptx可以直接讀,.ppt和.doc文件不能直接讀,需要轉(zhuǎn)換成.pptx和.docx文件,并且需要區(qū)分系統(tǒng) 如果是linux系統(tǒng),請(qǐng)先安裝組件 python代碼如下:

    2024年02月11日
    瀏覽(24)
  • 利用PowerPoint把PPT導(dǎo)出成60幀1080P的視頻

    利用PowerPoint把PPT導(dǎo)出成60幀1080P的視頻

    想要把PPT導(dǎo)出成1080P60幀率的視頻,可以嘗試以下辦法 軟件用的是office power point 點(diǎn)擊文件–選項(xiàng)–自定義功能區(qū) 這時(shí)候就有了開(kāi)發(fā)工具 點(diǎn)擊運(yùn)行–運(yùn)行宏 隨便起個(gè)名字,點(diǎn)擊創(chuàng)建 這樣 ,然后叉掉 這時(shí)候就看到開(kāi)始導(dǎo)出了 下面解釋下每行代碼的作用: 可以根據(jù)需要自己調(diào)

    2024年02月13日
    瀏覽(25)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)獲取視頻的縮略圖封面video_thumbnail

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)獲取視頻的縮略圖封面video_thumbnail

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)獲取視頻的縮略圖封面video_thumbnail 在很多時(shí)候,我們查看視頻的時(shí)候,視頻沒(méi)有播放時(shí)候,會(huì)顯示一張封面,可能封面沒(méi)有配置圖片,這時(shí)候就需要通過(guò)獲取視頻的縮略圖來(lái)顯示封面了。這里使用了video_thumbnail來(lái)實(shí)現(xiàn)獲取視頻的縮略圖。 在工程的pubspec.

    2024年01月17日
    瀏覽(21)
  • .docx,.doc,.pptx,.ppt,.xlsx,.pdf后綴文檔圖標(biāo)不顯示

    .docx,.doc,.pptx,.ppt,.xlsx五種操作類(lèi)似。 1、Win+R,輸入regedit,回車(chē); 2、對(duì)于 Word 2007/Word 2010,備份并刪除以下三個(gè)鍵值:(可以右擊選擇“導(dǎo)出”,把鍵值備份至桌面。一旦發(fā)生問(wèn)題,可以通過(guò)備份來(lái)恢復(fù)注冊(cè)表鍵值) HKEY_CLASSES_ROOT/.docx HKEY_CLASSES_ROOT/Word.Document.12 HKEY_CU

    2024年02月07日
    瀏覽(24)
  • Java中如何提取視頻文件的縮略圖

    在Java中,可以使用FFmpeg庫(kù)來(lái)提取視頻文件的縮略圖。以下是一種使用FFmpeg的方法來(lái)提取視頻縮略圖的示例代碼: 請(qǐng)將 path_to_video_file 替換為實(shí)際的視頻文件路徑。該示例代碼將在視頻文件的第一秒鐘處提取一個(gè)縮略圖,并將其保存為一個(gè)臨時(shí)文件。通過(guò)修改FFmpeg命令行參數(shù),

    2024年04月17日
    瀏覽(14)
  • 微信小程序 - 在線預(yù)覽 Office 文件(doc / docx / xls / xlsx / ppt / pptx / pdf)

    微信小程序 - 在線預(yù)覽 Office 文件(doc / docx / xls / xlsx / ppt / pptx / pdf)

    網(wǎng)上大部分教程功能有問(wèn)題且文章無(wú)邏輯混亂,本文將提供優(yōu)秀的示例。

    2024年02月12日
    瀏覽(124)
  • 微信公眾號(hào) - 實(shí)現(xiàn) H5 網(wǎng)頁(yè)在微信內(nèi)置瀏覽器中下載文件,可預(yù)覽和下載 office 文件(doc / xls / ppt / pdf 等)適用于任何前端技術(shù)棧網(wǎng)站,兼容安卓和蘋(píng)果系統(tǒng)!

    微信公眾號(hào) - 實(shí)現(xiàn) H5 網(wǎng)頁(yè)在微信內(nèi)置瀏覽器中下載文件,可預(yù)覽和下載 office 文件(doc / xls / ppt / pdf 等)適用于任何前端技術(shù)棧網(wǎng)站,兼容安卓和蘋(píng)果系統(tǒng)!

    網(wǎng)上的教程都是讓你寫(xiě)頁(yè)面 “引導(dǎo)” 右上角三個(gè)點(diǎn)里,讓用戶自己去瀏覽器打開(kāi),其實(shí)這樣用戶體驗(yàn)并不好。 本文實(shí)現(xiàn)了 最新微信公眾號(hào) H5 網(wǎng)頁(yè)(微信內(nèi)置瀏覽器中),預(yù)覽下載 office 文件,安卓和蘋(píng)果全都支持! 您可以直接復(fù)制代碼,移植到自己項(xiàng)目中去, 任何前端項(xiàng)

    2024年01月21日
    瀏覽(37)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包