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提取文本開始------------------------------");
// 2. 加載PDF文件
File file = new File("C:/Users/Administrator/Desktop/羅鎧威個(gè)人簡歷.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/羅鎧威個(gè)人簡歷.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 對象
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();
// 返回一個(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法
這篇文章主要介紹了詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法,本文詳解的介紹了錯(cuò)誤的解決方法,感興趣的可以一起來了解一下2020-05-05
SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)動(dòng)態(tài)權(quán)限問題
這篇文章主要介紹了SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)-動(dòng)態(tài)權(quán)限,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
5分鐘讓你快速掌握java8 stream常用開發(fā)技巧
這篇文章主要給大家介紹了關(guān)于java8 stream常用開發(fā)技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Spring在多線程環(huán)境下如何確保事務(wù)一致性問題詳解
這篇文章主要介紹了Spring在多線程環(huán)境下如何確保事務(wù)一致性問題詳解,說到異步執(zhí)行,很多小伙伴首先想到Spring中提供的@Async注解,但是Spring提供的異步執(zhí)行任務(wù)能力并不足以解決我們當(dāng)前的需求,需要的朋友可以參考下2023-11-11

