Java使用itextpdf實(shí)現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片
前言
PDF轉(zhuǎn)文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 這幾個(gè),
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提取文本開(kāi)始------------------------------"); // 2. 加載PDF文件 File file = new File("C:/Users/Administrator/Desktop/羅鎧威個(gè)人簡(jiǎn)歷.pdf"); PdfReader reader = new PdfReader(file.getAbsolutePath()); // 3. 解析PDF文件,獲取頁(yè)面數(shù)據(jù) int page = 1; // 獲取第一頁(yè) 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)圖片開(kāi)始------------------------------"); // InputStream inputStream = readPdfFromUrl("http://minio.xxxx/xxxx.pdf");//線上的pdf文件 InputStream inputStream = new FileInputStream("C:/Users/Administrator/Desktop/羅鎧威個(gè)人簡(jiǎn)歷.pdf") ; byte[] bytes = streamToByte(inputStream); InputStream newStream = new ByteArrayInputStream(bytes); //將pdf流轉(zhuǎn)換成png圖片流 InputStream imgStream = pdfToImg(newStream); //存儲(chǔ)圖片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 對(duì)象 PDFRenderer pdfRenderer = new PDFRenderer(document); // 選擇第一頁(yè)面來(lái)生成圖片 // 可以根據(jù)需要改成遍歷所有頁(yè)面并保存 BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); // 0 表示第一頁(yè),300 DPI 提供高質(zhì)量圖像 // 將 BufferedImage 轉(zhuǎn)換為 InputStream ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream); document.close(); // 返回一個(gè)新的 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實(shí)現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片的文章就介紹到這了,更多相關(guān)Java itextpdf PDF轉(zhuǎn)文本和圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java利用ITextPdf庫(kù)生成PDF預(yù)覽文件的具體實(shí)現(xiàn)
- Java使用itextpdf實(shí)現(xiàn)生成PDF并添加圖片,水印和文字
- Java文件處理之使用itextpdf實(shí)現(xiàn)excel轉(zhuǎn)pdf
- Java使用itextpdf實(shí)現(xiàn)Excel轉(zhuǎn)PDF
- Java利用iTextPDF庫(kù)實(shí)現(xiàn)制作PDF表格模板并填充數(shù)據(jù)
- Java用itextpdf導(dǎo)出PDF方法(通俗易懂)
- Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法
相關(guān)文章
SpringCloud zuul 網(wǎng)關(guān)如何解決跨域問(wèn)題
這篇文章主要介紹了SpringCloud zuul網(wǎng)關(guān)解決跨域問(wèn)題的具體實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06MyBatis參數(shù)處理實(shí)現(xiàn)方法匯總
這篇文章主要介紹了MyBatis參數(shù)處理實(shí)現(xiàn)方法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Java的Comparable,Comparator和Cloneable三大接口詳解
這篇文章主要為大家詳細(xì)介紹了Java的Comparable,Comparator和Cloneable的接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03Java趣味練習(xí)題之輸出兩個(gè)日期之間的相隔天數(shù)
本篇文章介紹了我看到的一個(gè)趣味小題目,怎么求得兩個(gè)日期之間相隔的天數(shù),以及解決該題目的過(guò)程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-10-10Spring Boot整合FTPClient線程池的實(shí)現(xiàn)示例
這篇文章主要介紹了Spring Boot整合FTPClient線程池的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12MyBatis discriminator標(biāo)簽原理實(shí)例解析
這篇文章主要為大家介紹了MyBatis discriminator標(biāo)簽實(shí)現(xiàn)原理實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02