Java使用itextpdf實現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片
前言
PDF轉(zhuǎn)文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 這幾個,
itextpdf
導(dǎo)入itextpdf的maven依賴
<!--2.itexpdf依賴--> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.3</version> </dependency>
提取文本代碼
import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.parser.PdfTextExtractor; import java.io.*; public class Main_itextPdf { public static void main(String[] args) throws Exception { System.out.println("------------------------pdf提取文本開始------------------------------"); // 2. 加載PDF文件 File file = new File("C:/Users/Administrator/Desktop/羅鎧威個人簡歷.pdf"); PdfReader reader = new PdfReader(file.getAbsolutePath()); // 3. 解析PDF文件,獲取頁面數(shù)據(jù) int page = 1; // 獲取第一頁 String text = PdfTextExtractor.getTextFromPage(reader, page); System.out.println(text); // 4. 關(guān)閉PdfReader reader.close(); System.out.println("------------------------pdf提取文本結(jié)束------------------------------"); } }
pdf轉(zhuǎn)換成圖片代碼
本地圖片地址還是線上PDF的URL地址均支持
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.net.URL; import java.net.URLConnection; import java.util.Scanner; public class Main_itextPdf { public static void main(String[] args) throws Exception { System.out.println("------------------------pdf轉(zhuǎn)圖片開始------------------------------"); // InputStream inputStream = readPdfFromUrl("http://minio.xxxx/xxxx.pdf");//線上的pdf文件 InputStream inputStream = new FileInputStream("C:/Users/Administrator/Desktop/羅鎧威個人簡歷.pdf") ; byte[] bytes = streamToByte(inputStream); InputStream newStream = new ByteArrayInputStream(bytes); //將pdf流轉(zhuǎn)換成png圖片流 InputStream imgStream = pdfToImg(newStream); //存儲圖片imgStream到桌面 ImageIO.write(ImageIO.read(imgStream), "png", new File("C:/Users/Administrator/Desktop/1.png")); System.out.println("------------------------pdf轉(zhuǎn)圖片結(jié)束------------------------------"); } //支持線上pdf文件地址url public static InputStream readPdfFromUrl(String pdfUrl) throws IOException { URL url = new URL(pdfUrl); URLConnection connection = url.openConnection(); BufferedInputStream bufferedInputStream = new BufferedInputStream(connection.getInputStream()); return bufferedInputStream; } public static ByteArrayInputStream pdfToImg(InputStream pdfStream) throws Exception { // 將 InputStream 轉(zhuǎn)換為 PDDocument PDDocument document = PDDocument.load(pdfStream); // 創(chuàng)建 PDFRenderer 對象 PDFRenderer pdfRenderer = new PDFRenderer(document); // 選擇第一頁面來生成圖片 // 可以根據(jù)需要改成遍歷所有頁面并保存 BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); // 0 表示第一頁,300 DPI 提供高質(zhì)量圖像 // 將 BufferedImage 轉(zhuǎn)換為 InputStream ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream); document.close(); // 返回一個新的 InputStream return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); } public static byte[] streamToByte(InputStream inputStream) throws Exception { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int nRead; byte[] data = new byte[1024]; while ((nRead = inputStream.read(data, 0, data.length)) != -1) { buffer.write(data, 0, nRead); } buffer.flush(); return buffer.toByteArray(); } }
到此這篇關(guān)于Java使用itextpdf實現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片的文章就介紹到這了,更多相關(guān)Java itextpdf PDF轉(zhuǎn)文本和圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud zuul 網(wǎng)關(guān)如何解決跨域問題
這篇文章主要介紹了SpringCloud zuul網(wǎng)關(guān)解決跨域問題的具體實現(xiàn)方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Java的Comparable,Comparator和Cloneable三大接口詳解
這篇文章主要為大家詳細介紹了Java的Comparable,Comparator和Cloneable的接口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Java趣味練習(xí)題之輸出兩個日期之間的相隔天數(shù)
本篇文章介紹了我看到的一個趣味小題目,怎么求得兩個日期之間相隔的天數(shù),以及解決該題目的過程及思路,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下2021-10-10Spring Boot整合FTPClient線程池的實現(xiàn)示例
這篇文章主要介紹了Spring Boot整合FTPClient線程池的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12MyBatis discriminator標(biāo)簽原理實例解析
這篇文章主要為大家介紹了MyBatis discriminator標(biāo)簽實現(xiàn)原理實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02