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

Java實現(xiàn)PDF轉(zhuǎn)圖片的三種方法詳解

 更新時間:2026年02月09日 08:40:52   作者:工賊sk  
這篇文章主要為大家詳細介紹了Java實現(xiàn)PDF轉(zhuǎn)圖片的三種方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下

使用PDFbox獲取pdf文件的內(nèi)容和圖片

	<!-- 依賴 -->
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>2.0.23</version>
    </dependency>

獲取傳入的pdf的圖片

我這里是分頁讀取的,更靈活

    public static void main(String[] args) throws IOException {
        Integer count = 0;
        File file = new File("D:\\Data\\電子圖書館_使用文檔.pdf");
        FileInputStream fis = new FileInputStream(file);
        PDDocument document = PDDocument.load(fis);
        int allPages = document.getNumberOfPages();
        for (int i = 0; i < allPages; i++) {
            PDPage page = document.getPage(i);
            PDResources resources = page.getResources();
            Iterable<COSName> xObjectNames = resources.getXObjectNames();
            if (xObjectNames != null){
                Iterator<COSName> iterator = xObjectNames.iterator();
                while (iterator.hasNext()){
                    COSName key =  iterator.next();
                    if (resources.isImageXObject(key)){
                        PDImageXObject image = (PDImageXObject) resources.getXObject(key);
                        BufferedImage bImage = image.getImage();
                        ImageIO.write(bImage, "PNG", new File("D:\\image\\"+"image_"+ (i+1) + "頁" + count + ".png"));
                        count++;
                    }
                }
            }
        }
        document.close();
    }

獲取傳入的pdf的文字內(nèi)容

同樣的分頁讀取

    public static void main(String[] args) throws IOException {
        PDDocument doc = new PDDocument();
        File file = new File("D:\\Data\\Java課件\\xxx.pdf");
        FileInputStream fis = new FileInputStream(file);
        doc = PDDocument.load(fis);
        PDFTextStripper pdfStripper = new PDFTextStripper();

        Splitter splitter = new Splitter();
        List<PDDocument> split = splitter.split(doc);
        for (int i = 0; i < split.size(); i++) {
            doc = split.get(i);
            PDFRenderer pdfRenderer = new PDFRenderer(doc);
            String text = pdfStripper.getText(doc);
            System.out.println("第"+(i+1)+"頁內(nèi)容:"+text);
        }
        doc.close();
    }

讀取pdf中的圖片信息

package org.fzzn.component.ai.guard.duplicatechecking.tool;

import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.fzzn.component.ai.guard.AiGuardManager;
import org.fzzn.component.ai.guard.duplicatechecking.dto.CheckingDoc;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * pdf中圖片提取器
 *
 * @author inkef
 * @since 2024/11/7 17:50
 */
@Slf4j
public class PdfImageExtractor {

    private List<CheckingDoc> imgList;

    public List<CheckingDoc> extractAndUploadImages(byte[] pdf) throws IOException {
        imgList = new ArrayList<>();
        PDDocument document = PDDocument.load(pdf);
        PDPageTree pages = document.getDocumentCatalog().getPages();
        for (PDPage page : pages) {
            PDResources resources = page.getResources();
            for (COSName name : resources.getXObjectNames()) {
                PDXObject xobject = resources.getXObject(name);
                if (xobject instanceof PDImageXObject) {
                    if (!name.getName().startsWith("Image")) {
                        continue;
                    }
                    PDImageXObject image = (PDImageXObject) xobject;
                    Integer number = Integer.parseInt(name.getName().substring(5));

                    String fileType = "png";
                    String fileName = number + "." + fileType;
                    byte[] imageBytes = bufferedImageToByteArray(image.getImage(), fileType);
                    String url = AiGuardManager.me().getHandler().handleUploadFile(imageBytes, fileName);

                    CheckingDoc doc = new CheckingDoc();
                    doc.setId((long) number);
                    doc.setUrl(url);
                    imgList.add(doc);
                }
            }
        }

        return imgList;
    }

    /**
     * 將 BufferedImage 轉(zhuǎn)換為 byte[]
     *
     * @param bufferedImage 要轉(zhuǎn)換的 BufferedImage 對象
     * @param formatName    圖像格式(例如 "png", "jpg")
     * @return 字節(jié)數(shù)組
     */
    private static byte[] bufferedImageToByteArray(BufferedImage bufferedImage, String formatName) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            ImageIO.write(bufferedImage, formatName, baos);
            baos.flush();
            byte[] imageBytes = baos.toByteArray();
            baos.close();
            return imageBytes;
        } catch (IOException e) {
            log.error("bufferedImageToByteArray error", e);
        }
        return null;
    }


    /**
     * 解析返回pdf中指定的 xrefs 列表中的圖片
     *
     * @param pdf
     * @param xrefs
     * @return
     * @throws IOException
     */
    public List<CheckingDoc> extractAndUploadImages(byte[] pdf, List<Integer> xrefs) throws IOException {
        // 是否提取全部,如果沒有指定,提取全部
        Boolean isExtractAll = CollUtil.isEmpty(xrefs);
        imgList = new ArrayList<>();
        PDDocument document = PDDocument.load(pdf);
        PDPageTree pages = document.getDocumentCatalog().getPages();

        for (PDPage page : pages) {
            PDResources resources = page.getResources();
            for (COSName name : resources.getXObjectNames()) {
                PDXObject xobject = resources.getXObject(name);
                if (xobject instanceof PDImageXObject) {
                    if (!name.getName().startsWith("Image")) {
                        continue;
                    }
                    PDImageXObject image = (PDImageXObject) xobject;
                    Integer number = Integer.parseInt(name.getName().substring(5));

                    // 如果不在指定的xrefs中,跳過
                    if(!isExtractAll && !xrefs.contains(number)){
                        continue;
                    }


                    String fileType = "png";
                    String fileName = number + "." + fileType;
                    byte[] imageBytes = bufferedImageToByteArray(image.getImage(), fileType);
                    String url = AiGuardManager.me().getHandler().handleUploadFile(imageBytes, fileName);

                    CheckingDoc doc = new CheckingDoc();
                    doc.setId((long) number);
                    doc.setUrl(url);
                    imgList.add(doc);
                }
            }
        }

        return imgList;
    }
}

Java實現(xiàn)PDF轉(zhuǎn)圖片的三種方法

提示:生成圖片以后需要將文件流關(guān)閉,不然刪除文件會刪除失敗很多人不知道怎么將pdf的文件轉(zhuǎn)換成圖片格式的,而且網(wǎng)上有很例子是跑不通的,同是也是方便自己在用到該需求的時候能夠快速度地寫出來,所以整理了幾種pdf轉(zhuǎn)換成圖片的方法工具類。

一、使用開源庫Apache PDFBox將PDF轉(zhuǎn)換為圖片

1、引入依賴庫

<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>fontbox</artifactId>
			<version>2.0.9</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>2.0.9</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>

2、實現(xiàn)pdf轉(zhuǎn)換圖片工具類(多頁pdf會生成多頁的圖片,后綴會生成圖片的位置序號)

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Pdf2Png {
    /**
     * 使用pdfbox將整個pdf轉(zhuǎn)換成圖片
     *
     * @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test
     * @param filename    PDF文件名不帶后綴名
     * @param type        圖片類型 png 和jpg
     */
    public static void pdf2png(String fileAddress, String filename, String type) {
        long startTime = System.currentTimeMillis();
        // 將文件地址和文件名拼接成路徑 注意:線上環(huán)境不能使用\\拼接
        File file = new File(fileAddress + "\\" + filename + ".pdf");
        try {
            // 寫入文件
            PDDocument doc = PDDocument.load(file);
            PDFRenderer renderer = new PDFRenderer(doc);
            int pageCount = doc.getNumberOfPages();
            for (int i = 0; i < pageCount; i++) {
                // dpi為144,越高越清晰,轉(zhuǎn)換越慢
                BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
                // 將圖片寫出到該路徑下
                ImageIO.write(image, type, new File(fileAddress + "\\" + filename + "_" + (i + 1) + "." + type));
            }
            long endTime = System.currentTimeMillis();
        	System.out.println("共耗時:" + ((endTime - startTime) / 1000.0) + "秒");  //轉(zhuǎn)化用時
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        pdf2png("C:\\Users\\user\\Desktop\\test", "測試", "png");
    }
}

使用Apache PDFBox將PDF轉(zhuǎn)換為圖片成功

3、按照固定頁數(shù)來將pdf轉(zhuǎn)換成圖片的工具類(自由選擇pdf轉(zhuǎn)換圖片的頁數(shù))

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Pdf2Png {
    /**
     * 自由確定起始頁和終止頁
      * @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test
     * @param filename    PDF文件名不帶后綴名
     * @param indexOfStart 開始頁  開始轉(zhuǎn)換的頁碼,從0開始
     * @param indexOfEnd 結(jié)束頁  停止轉(zhuǎn)換的頁碼,-1為全部
     * @param type        圖片類型 png 和jpg
     */
    public static void pdf2png(String fileAddress,String filename,int indexOfStart,int indexOfEnd,String type) {
        long startTime = System.currentTimeMillis();
         // 將文件地址和文件名拼接成路徑 注意:線上環(huán)境不能使用\\拼接
        File file = new File(fileAddress+"\\"+filename+".pdf");
        try {
            PDDocument doc = PDDocument.load(file);
            PDFRenderer renderer = new PDFRenderer(doc);
            int pageCount = doc.getNumberOfPages();
            for (int i = indexOfStart; i < indexOfEnd; i++) {
            // dpi為144,越高越清晰,轉(zhuǎn)換越慢
                BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
                 // 將圖片寫出到該路徑下
                ImageIO.write(image, type, new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
            }
            long endTime = System.currentTimeMillis();
            System.out.println("共耗時:" + ((endTime - startTime) / 1000.0) + "秒"); // 轉(zhuǎn)換用時
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        pdf2png("C:\\Users\\user\\Desktop\\test", "思泰得流式檢測報告-00420299-任蛆小-RA202302100117",2,3, "png");
    }
}

自由頁數(shù)轉(zhuǎn)換成功

二、使用PDF Box將多頁的pdf轉(zhuǎn)換一張長圖片的方法

1、引入PDF Box需要的依賴

<dependency>
    <groupId>net.sf.cssbox</groupId>
    <artifactId>pdf2dom</artifactId>
    <version>1.7</version>
</dependency>
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.12</version>
</dependency>
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox-tools</artifactId>
    <version>2.0.12</version>
</dependency>

2、編寫將多頁PDF轉(zhuǎn)換多張圖片的工具類

import com.lowagie.text.pdf.PdfReader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Pdf2Png {
    /***
     * PDF文件轉(zhuǎn)PNG圖片,全部頁數(shù)
     * @param pdfFilePath pdf完整路徑:C:\\Users\\user\\Desktop\\test\\1234.pdf
     * @param dpi dpi越大轉(zhuǎn)換后越清晰,相對轉(zhuǎn)換速度越慢
     */
    public static void pdf2Image(String pdfFilePath, int dpi) {
        long startTime = System.currentTimeMillis();
        File file = new File(pdfFilePath);
        PDDocument pdDocument;
        try {
            String imgPdfPath = file.getParent();
            int dot = file.getName().lastIndexOf('.');
            // 獲取圖片文件名
            String imagePdfName = file.getName().substring(0, dot);
            pdDocument = PDDocument.load(file);
            PDFRenderer renderer = new PDFRenderer(pdDocument);
            /* dpi越大轉(zhuǎn)換后越清晰,相對轉(zhuǎn)換速度越慢 */
            PdfReader reader = new PdfReader(pdfFilePath);
            int pages = reader.getNumberOfPages();
            StringBuffer imgFilePath;
            for (int i = 0; i < pages; i++) {
                String imgFilePathPrefix = imgPdfPath + File.separator + imagePdfName;
                imgFilePath = new StringBuffer();
                imgFilePath.append(imgFilePathPrefix);
                imgFilePath.append("_");
                imgFilePath.append((i + 1));
                imgFilePath.append(".png");
                File dstFile = new File(imgFilePath.toString());
                BufferedImage image = renderer.renderImageWithDPI(i, dpi);
                ImageIO.write(image, "png", dstFile);
            }
            long endTime = System.currentTimeMillis();
            System.out.println("共耗時:" + ((endTime - startTime) / 1000.0) + "秒");  //轉(zhuǎn)化用時
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

三、使用文件流整個pdf轉(zhuǎn)換成圖片 (生成圖片,并將生成的圖片路徑返回)

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
public class Pdf2Png {
    /**
     * 使用文件流整個pdf轉(zhuǎn)換成圖片
     * @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test
     * @param filename    PDF文件名不帶后綴名
     * @param type        圖片類型 png 、jpg
     */
    public static List<Map<String, String>> pdfToImage(String fileAddress, String filename, String type) {
        long startTime = System.currentTimeMillis();
        List<Map<String, String>> list = new ArrayList<>();
        Map<String, String> resultMap = null;
        PDDocument pdDocument = null;
        String fileName = null;
        String imgPath = null;
        try {
            // 將文件地址和文件名拼接成路徑 注意:線上環(huán)境不能使用\\拼接
            File FilePath = new File(fileAddress + "\\" + filename + ".pdf");
            // 文件流
            FileInputStream inputStream = new FileInputStream(FilePath);
            int dpi = 296;
            pdDocument = PDDocument.load(inputStream);
            PDFRenderer renderer = new PDFRenderer(pdDocument);
            int pageCount = pdDocument.getNumberOfPages();
            /* dpi越大轉(zhuǎn)換后越清晰,相對轉(zhuǎn)換速度越慢 */
            for (int i = 0; i < pageCount; i++) {
                resultMap = new HashMap<>();
                fileName = filename + "_" + (i + 1) + "." + type;
                imgPath = fileAddress + "\\" + fileName;
                BufferedImage image = renderer.renderImageWithDPI(i, dpi);
                ImageIO.write(image, type, new File(imgPath));
                resultMap.put("fileName", fileName);
                resultMap.put("filePath", imgPath); // 圖片路徑
                list.add(resultMap);
            }
            long endTime = System.currentTimeMillis();
            System.out.println("共耗時:" + ((endTime - startTime) / 1000.0) + "秒");  //轉(zhuǎn)化用時
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 這里需要關(guān)閉PDDocument,不然如果想要刪除pdf文件時會提示文件正在使用,無法刪除的情況
                pdDocument.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
    public static void main(String[] args) throws FileNotFoundException {
        pdfToImage("C:\\Users\\user\\Desktop\\test", "測試", "png");
    }
}

pdf轉(zhuǎn)圖片

Apache PDFBox 庫是一個開源、用于操作 PDF 文檔的 Java 工具庫。PDFBox 允許創(chuàng)建新的 PDF 文檔、操作現(xiàn)有文檔,以及從文檔中提取內(nèi)容。獲取 Apache PDFBox 下載地址,目前版本 2.0.25,核心 jar 是 pdfbox-2.0.25.jar,其他還有幾個 jar 可以根據(jù)需要進行導(dǎo)入。

pdf合并

package pdfUtity;
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
//import org.apache.pdfbox.util.PDFMergerUtility;
public class pdfMerge {
    private static String[] getPdfs(String fileAddress) throws IOException {
        File file = new File(fileAddress);
        String[] pdfs;
        if (file.isDirectory()) {
            pdfs = file.list();
            return pdfs;
        } else {
            throw new IOException("輸入的路徑有問題");
        }
    }
    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        PDFMergerUtility mergePdf = new PDFMergerUtility();
        System.out.println("請輸入要合并的PDF文件所在的文件夾路徑");
        String fileAddress = in.nextLine();
        System.out.println("你輸入的路徑是:" + fileAddress);
        String destinationFileName = "javaweb2020.pdf";
        String[] pdfs = getPdfs(fileAddress);
        for (int i = 0; i < pdfs.length; i++)
            mergePdf.addSource(fileAddress + File.separator + pdfs[i]);
        mergePdf.setDestinationFileName(destinationFileName);
        System.out.println("合并比較費時間,請等待個幾分鐘吧!");
        mergePdf.mergeDocuments();
        System.out.print("合并完成");
    }
}

pdf拆分為單頁

package pdfUtity;
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
public class pdfSplitter {
    public static void main(String[] args)throws IOException {
        //把需要拆分的pdf文件加載進來
        File file = new File("d://desktopfile//pdfs//1.pdf");
        PDDocument document = PDDocument.load(file);
        //創(chuàng)建一個拆分器對象
        Splitter splitter = new Splitter();
        //list中存放好被拆分的pdf對象 其中內(nèi)容是pdf的每一頁
        List<PDDocument>Pages = splitter.split(document);
        //創(chuàng)建迭代器對象
        Iterator<PDDocument>iterator = Pages.listIterator();
        //saving splits as individual PDF document
        int i = 1;
        while(iterator.hasNext()) {
            PDDocument pd = iterator.next();
            pd.save("d://desktopfile//pdfPhotos//"+i++ +".pdf");
        }
        System.out.println("pdf拆分成功");
        document.close();
    }
}

pdf轉(zhuǎn)換為圖片

package pdfUtity;/*
 * 讀取 pdf,將其中的某一頁另存為 png 圖片
 */
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
public class PDFSavePNG
{
    public static void main(String[] args)
    {
        try
        {
            // 打開來源 pdf
            PDDocument pdfDocument = PDDocument.load(new File("d://desktopfile//pdfs//1.pdf"));
            PDFRenderer pdfRenderer = new PDFRenderer(pdfDocument);
            for(int pageNumber=0;pageNumber<pdfDocument.getNumberOfPages();pageNumber++){
            // 提取的頁碼
//            int pageNumber = 0;
            // 以300 dpi 讀取存入 BufferedImage 對象
            int dpi = 300;
            BufferedImage buffImage = pdfRenderer.renderImageWithDPI(pageNumber, dpi, ImageType.RGB);
            // 將 BufferedImage 寫入到 png
            ImageIOUtil.writeImage(buffImage, "d://desktopfile//pdfPhotos//"+pageNumber+".png", dpi);
            // 關(guān)閉文檔
            }
            pdfDocument.close();
        }
        catch (InvalidPasswordException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

圖片轉(zhuǎn)換為pdf

package pdfUtity;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
/**
 * @author: Serendipity
 * Date: 2022/3/16 22:40
 * Description:
 */
public class photoToPDF {
    /**
     * 多圖片合成pdf的限制后綴
     */
    private static final List IMAGE_SUFFIX = Arrays.asList("jpg", "png", "jpeg");
    /**
     * 多個圖片合成一個pdf
     *
     * @param imgFolder 多圖片的文件夾路徑  例如:"D:\\image\\"
     * @param target    合并的圖片路徑          "D:\\image\\merge.pdf"
     * @throws IOException
     */
    public static void manyImageToOnePdf(String imgFolder, String target) throws IOException {
        PDDocument doc = new PDDocument();
        //創(chuàng)建一個空的pdf文件
        doc.save(target);
        PDPage page;
        PDImageXObject pdImage;
        PDPageContentStream contents;
        BufferedImage bufferedImage;
        String fileName;
        float w, h;
        String suffix;
        File tempFile;
        int index;
        File folder = new File(imgFolder);
        for (int i = 0; i < folder.listFiles().length; i++) {
            tempFile = folder.listFiles()[i];
            if (!tempFile.isFile()) {
                continue;
            }
            fileName = tempFile.getName();
            index = fileName.lastIndexOf(".");
            if (index == -1) {
                continue;
            }
            //獲取文件的后綴
            suffix = fileName.substring(index + 1);
            //如果文件后綴不是圖片格式,跳過當前循環(huán)
            if (!IMAGE_SUFFIX.contains(suffix)) {
                continue;
            }
            bufferedImage = ImageIO.read(folder.listFiles()[i]);
            //Retrieving the page
            pdImage = LosslessFactory.createFromImage(doc, bufferedImage);
            w = pdImage.getWidth();
            h = pdImage.getHeight();
            page = new PDPage(new PDRectangle(w, h));
            contents = new PDPageContentStream(doc, page);
            contents.drawImage(pdImage, 0, 0, w, h);
            System.out.println("Image inserted");
            contents.close();
            doc.addPage(page);
        }
        //保存pdf
        doc.save(target);
        //關(guān)閉pdf
        doc.close();
    }
    public static void main(String[] args) {
        try {
            manyImageToOnePdf("d://圖片","photo.pdf");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上就是Java實現(xiàn)PDF轉(zhuǎn)圖片的三種方法詳解的詳細內(nèi)容,更多關(guān)于Java PDF轉(zhuǎn)圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • kafka監(jiān)聽問題的解決和剖析

    kafka監(jiān)聽問題的解決和剖析

    這篇文章主要給大家介紹了關(guān)于kafka監(jiān)聽問題的解決和剖析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java同步代碼塊和同步方法原理與應(yīng)用案例詳解

    Java同步代碼塊和同步方法原理與應(yīng)用案例詳解

    這篇文章主要介紹了Java同步代碼塊和同步方法原理與應(yīng)用,結(jié)合具體案例形式分析了使用java同步代碼塊和同步方法實現(xiàn)買票功能的相關(guān)原理與操作技巧,需要的朋友可以參考下
    2019-10-10
  • Java讀取本地json文件及相應(yīng)處理方法

    Java讀取本地json文件及相應(yīng)處理方法

    今天小編就為大家分享一篇Java讀取本地json文件及相應(yīng)處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • java常見log日志的使用方法解析

    java常見log日志的使用方法解析

    本文主要介紹了java常見log日志的使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java日常練習(xí)題,每天進步一點點(6)

    Java日常練習(xí)題,每天進步一點點(6)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Java web.xml之contextConfigLocation作用案例詳解

    Java web.xml之contextConfigLocation作用案例詳解

    這篇文章主要介紹了Java web.xml之contextConfigLocation作用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • ThreadLocal的set方法原理示例解析

    ThreadLocal的set方法原理示例解析

    這篇文章主要為大家介紹了ThreadLocal的set方法原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Springboot中Dependency not found解決方案

    Springboot中Dependency not found解決方案

    本文主要介紹了Springboot中Dependency not found解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • SpringBoot Jpa企業(yè)開發(fā)示例詳細講解

    SpringBoot Jpa企業(yè)開發(fā)示例詳細講解

    這篇文章主要介紹了SpringBoot Jpa企業(yè)開發(fā)示例,Jpa可以通過實體類生成數(shù)據(jù)庫的表,同時自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調(diào)用方法即可,很方便
    2022-11-11
  • Javaweb中使用Servlet編寫簡單的接口案例詳解

    Javaweb中使用Servlet編寫簡單的接口案例詳解

    文章介紹了如何使用Servlet編寫一個簡單的接口來校驗用戶提交的密碼長度是否在6到12位之間,代碼分為后端部分和前端部分,給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-02-02

最新評論

桂林市| 平南县| 峨山| 彭州市| 太和县| 兴和县| 桓仁| 江门市| 临漳县| 阿鲁科尔沁旗| 治县。| 萨嘎县| 屏山县| 海阳市| 高淳县| 阿荣旗| 波密县| 金平| 上思县| 萨迦县| 钟祥市| 丹东市| 西乡县| 寿光市| 黄冈市| 洛隆县| 新干县| 垫江县| 怀来县| 长治县| 屏南县| 平湖市| 镇赉县| 临漳县| 临澧县| 南部县| 且末县| 龙里县| 新兴县| 叶城县| 麻栗坡县|