日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java获取pdf的页数、内容和缩略图

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java获取pdf的页数、内容和缩略图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.導入maven依賴

? ? ? ?<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.8</version></dependency><dependency><groupId>com.github.jai-imageio</groupId><artifactId>jai-imageio-jpeg2000</artifactId><version>1.3.0</version></dependency>

2.工具類

public class PdfUtil {private static Logger logger = LoggerFactory.getLogger(PdfUtil.class); ?/*** 通過PDFbox獲取文章總頁數** @param filePath:文件路徑* @return* @throws IOException*/public static int getNumberOfPages(String filePath) throws IOException {PDDocument pdDocument = PDDocument.load(new File(filePath));int pages = pdDocument.getNumberOfPages();pdDocument.close();return pages;} ? ?/*** 通過PDFbox獲取文章內容** @param filePath* @return*/public static String getContent(String filePath) throws IOException {PDFParser pdfParser = new PDFParser(new org.apache.pdfbox.io.RandomAccessFile(new File(filePath), "rw"));pdfParser.parse();PDDocument pdDocument = pdfParser.getPDDocument();String text = new PDFTextStripper().getText(pdDocument);pdDocument.close(); ?return text;} ?/*** 通過PDFbox生成文件的縮略圖** @param filePath:文件路徑* @param outPath:輸出圖片路徑* @throws IOException*/public static void getThumbnails(String filePath, String outPath) throws IOException {// 利用PdfBox生成圖像PDDocument pdDocument = PDDocument.load(new File(filePath));PDFRenderer renderer = new PDFRenderer(pdDocument); ?// 構造圖片BufferedImage imgTemp = renderer.renderImageWithDPI(0, 30, ImageType.RGB);// 設置圖片格式Iterator<ImageWriter> it = ImageIO.getImageWritersBySuffix("png");// 將文件寫出ImageWriter writer = it.next();ImageOutputStream imageout = ImageIO.createImageOutputStream(new FileOutputStream(outPath));writer.setOutput(imageout);writer.write(new IIOImage(imgTemp, null, null));imgTemp.flush();imageout.flush();imageout.close();pdDocument.close();} ?/*** PDF轉圖片 根據頁碼一頁一頁轉** @throws IOException imgType:轉換后的圖片類型 jpg,png*/public static void PDFToImg(OutputStream sos, String fileUrl, int page, String imgType) throws IOException {PDDocument pdDocument = null;/* dpi越大轉換后越清晰,相對轉換速度越慢 */int dpi = 100;try {pdDocument = getPDDocument(fileUrl);PDFRenderer renderer = new PDFRenderer(pdDocument);int pages = pdDocument.getNumberOfPages();if (page <= pages && page >= 0) {BufferedImage image = renderer.renderImageWithDPI(page, dpi);ImageIO.write(image, imgType, sos);}} catch (Exception e) {logger.error(e.getMessage());} finally {if (pdDocument != null) {pdDocument.close();}}} ?private static PDDocument getPDDocument(String fileUrl) throws IOException {File file = new File(fileUrl);FileInputStream inputStream = new FileInputStream(file);return PDDocument.load(inputStream);} }

3.測試

? ?@Testpublic void testPdf() throws IOException{String filePath = "/Users/apple/Desktop/學習書籍/Docker從入門到實踐.pdf";int numberOfPages = PdfUtil.getNumberOfPages(filePath);System.out.println("該pdf總頁數為:" + numberOfPages);//獲取pdf的前三頁圖片(若不足三頁,有幾頁獲取幾頁)for (int i = 0; i < 3 && i < numberOfPages ; i++) {PdfUtil.PDFToImg(new FileOutputStream(new File("/Users/apple/Desktop/學習書籍/Docker從入門到實踐" + i + ".png")), filePath, i, "PNG");}}

控制臺打印:

該pdf總頁數為:370

對應的文件夾下生成以下圖片:

?

總結

以上是生活随笔為你收集整理的java获取pdf的页数、内容和缩略图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。