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

Java實現(xiàn)pdf轉(zhuǎn)圖片案例

 更新時間:2021年06月30日 15:52:52   作者:簡若寧  
這篇文章主要介紹了Java實現(xiàn)pdf轉(zhuǎn)圖片案例,按照步驟放置代碼,一步步完成該案例,將代碼部署便可,需要的朋友可以參考下

工程加入依賴:

<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>2.0.15</version>
		</dependency>
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox-tools</artifactId>
			<version>2.0.15</version>
		</dependency>

pdf文件轉(zhuǎn)圖片:

    public static List<String> pdf2Img(File pdfFile) {
        if (pdfFile == null || !pdfFile.exists()) {
            throw new RuntimeException("pdf文件不能為空");
        }
        String name = pdfFile.getName().substring(0, pdfFile.getName().lastIndexOf("."));
        String targetPath = pdfFile.getParent() + File.separator + name;
        List<String> imgList = new ArrayList<>();
        try {
            PDDocument doc = PDDocument.load(pdfFile);
            // 頁數(shù)
            int pageCount = doc.getNumberOfPages();
            PDFRenderer pdfRenderer = new PDFRenderer(doc);
            for (int i = 0; i < pageCount; i++) {
                File targetFile = new File(targetPath + File.separator + name + "-" + (i + 1) + ".jpg");
                if (!targetFile.getParentFile().exists()) {
                    FileUtil.mkdir(targetFile.getParentFile());
                }
                pdfRenderer.renderImage(i);
                BufferedImage image = pdfRenderer.renderImageWithDPI(i, 105, ImageType.RGB);
                ImageIOUtil.writeImage(image, targetFile.getPath(), 105);
                imgList.add(targetFile.getPath());
            }
        } catch (IOException e) {
            log.error("文件轉(zhuǎn)換異常", e);
            throw new RuntimeException("文件轉(zhuǎn)換異常,err=" + e.getMessage());
        }

pdf轉(zhuǎn)成一張圖片:

    /**
     * pdf轉(zhuǎn)成一張圖片
     *
     * @param pdfFile pdf圖片文件
     * @return 圖片地址
     */
    public static String pdf2OneImg(File pdfFile) {

        List<String> imgs = pdf2Img(pdfFile);
        int len = imgs.size();
        File[] src = new File[len];
        BufferedImage[] images = new BufferedImage[len];
        int[][] ImageArrays = new int[len][];
        for (int i = 0; i < len; i++) {
            try {
                src[i] = new File(imgs.get(i));
                if (!src[i].exists()) {
                    throw new RuntimeException("文件【" + imgs.get(i) + "】不存在");
                }
                images[i] = ImageIO.read(src[i]);
            } catch (Exception e) {
                log.error("", e);
                throw new RuntimeException(e);
            }
            int width = images[i].getWidth();
            int height = images[i].getHeight();
            // 從圖片中讀取RGB 像素
            ImageArrays[i] = new int[width * height];
            ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
        }

        int dst_height = 0;
        int dst_width = images[0].getWidth();
        // 合成圖片像素
        for (int i = 0; i < images.length; i++) {
            dst_width = dst_width > images[i].getWidth() ? dst_width : images[i].getWidth();
            dst_height += images[i].getHeight();
        }
        if (dst_height < 1) {
            throw new RuntimeException("文件合成失敗,合成后的圖片文件高度=" + dst_height);
        }
        String name = pdfFile.getName().substring(0, pdfFile.getName().lastIndexOf("."));
        String targetPath = pdfFile.getParent() + File.separator + name;
        // 輸出路徑
        File outFile = new File(targetPath + File.separator + name + "-bigone.jpg");
        // 生成新圖片
        try {
            dst_width = images[0].getWidth();
            BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB);
            int height_i = 0;
            for (int i = 0; i < images.length; i++) {
                ImageNew.setRGB(0, height_i, dst_width, images[i].getHeight(), ImageArrays[i], 0, dst_width);
                height_i += images[i].getHeight();
            }
            ImageIO.write(ImageNew, "jpg", outFile);
        } catch (Exception e) {
            log.error("圖片合并異常=", e);
            throw new RuntimeException(e);
        }
        return outFile.getPath();
    }

到此這篇關(guān)于Java實現(xiàn)pdf轉(zhuǎn)圖片案例的文章就介紹到這了,更多相關(guān)Java實現(xiàn)pdf轉(zhuǎn)圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux系統(tǒng)下查看jdk版本、路徑及配置環(huán)境變量

    linux系統(tǒng)下查看jdk版本、路徑及配置環(huán)境變量

    在Linux系統(tǒng)中,配置JDK環(huán)境變量是非常重要的,它可以讓你在終端中直接使用Java命令,這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下查看jdk版本、路徑及配置環(huán)境變量的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java實現(xiàn)雙鏈表互相交換任意兩個節(jié)點的方法示例

    Java實現(xiàn)雙鏈表互相交換任意兩個節(jié)點的方法示例

    這篇文章主要介紹了Java實現(xiàn)雙鏈表互相交換任意兩個節(jié)點的方法,簡單講述了雙鏈表的概念,并結(jié)合實例形式給出了java雙鏈表實現(xiàn)任意兩個節(jié)點交換的操作技巧,需要的朋友可以參考下
    2017-11-11
  • Java實現(xiàn)樹形結(jié)構(gòu)的示例代碼

    Java實現(xiàn)樹形結(jié)構(gòu)的示例代碼

    由于業(yè)務(wù)需要,后端需要返回一個樹型結(jié)構(gòu)給前端,包含父子節(jié)點的數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫中存儲好。本文將為大家分享Java現(xiàn)樹形結(jié)構(gòu)的示例代碼,需要的可以參考下
    2022-05-05
  • SpringBoot 在IDEA中實現(xiàn)熱部署步驟詳解(實用版)

    SpringBoot 在IDEA中實現(xiàn)熱部署步驟詳解(實用版)

    這篇文章主要介紹了SpringBoot 在IDEA中實現(xiàn)熱部署步驟詳解(實用版),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • SpringMVC解析post請求參數(shù)詳解

    SpringMVC解析post請求參數(shù)詳解

    今天小編就為大家分享一篇解決SpringMVC接收不到ajaxPOST參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-08-08
  • Java SerialVersionUID作用詳解

    Java SerialVersionUID作用詳解

    這篇文章主要介紹了Java SerialVersionUID作用詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java程序去調(diào)用并執(zhí)行shell腳本及問題總結(jié)(推薦)

    Java程序去調(diào)用并執(zhí)行shell腳本及問題總結(jié)(推薦)

    這篇文章主要介紹了Java程序去調(diào)用并執(zhí)行shell腳本及問題總結(jié),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • springboot整合websocket最基礎(chǔ)入門使用教程詳解

    springboot整合websocket最基礎(chǔ)入門使用教程詳解

    這篇文章主要介紹了springboot整合websocket最基礎(chǔ)入門使用教程詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java實現(xiàn)五子棋網(wǎng)絡(luò)版

    Java實現(xiàn)五子棋網(wǎng)絡(luò)版

    這篇文章主要為大家詳細介紹了基于Java編寫的網(wǎng)絡(luò)五子棋,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java壓縮集合的三種方法

    Java壓縮集合的三種方法

    這篇文章主要介紹了Java壓縮集合的三種方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01

最新評論

宾川县| 新源县| 高邮市| 许昌县| 青岛市| 车致| 邢台市| 宜兰市| 凌源市| 黑龙江省| 景洪市| 清远市| 邮箱| 邵阳市| 榆社县| 广州市| 仙居县| 普定县| 大城县| 五大连池市| 皮山县| 新干县| 新干县| 临安市| 五原县| 信阳市| 溧阳市| 兰溪市| 皮山县| 贞丰县| 道孚县| 凤台县| 称多县| 德钦县| 乃东县| 曲靖市| 万盛区| 博爱县| 盐城市| 霍林郭勒市| 汝城县|