Java使用itextpdf实现PDF转文本以及转图片
作者:信计2102罗铠威
PDF转文本的插件常用的有pdfbox ,itextpdf 和 spire.pdf,本文主要介绍如何使用itextpdf实现PDF转文本以及转图片,需要的可以参考一下
前言
PDF转文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 这几个,
itextpdf
导入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文件,获取页面数据 int page = 1; // 获取第一页 String text = PdfTextExtractor.getTextFromPage(reader, page); System.out.println(text); // 4. 关闭PdfReader reader.close(); System.out.println("------------------------pdf提取文本结束------------------------------"); } }
pdf转换成图片代码
本地图片地址还是线上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转图片开始------------------------------"); // 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流转换成png图片流 InputStream imgStream = pdfToImg(newStream); //存储图片imgStream到桌面 ImageIO.write(ImageIO.read(imgStream), "png", new File("C:/Users/Administrator/Desktop/1.png")); System.out.println("------------------------pdf转图片结束------------------------------"); } //支持线上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 转换为 PDDocument PDDocument document = PDDocument.load(pdfStream); // 创建 PDFRenderer 对象 PDFRenderer pdfRenderer = new PDFRenderer(document); // 选择第一页面来生成图片 // 可以根据需要改成遍历所有页面并保存 BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); // 0 表示第一页,300 DPI 提供高质量图像 // 将 BufferedImage 转换为 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(); } }
到此这篇关于Java使用itextpdf实现PDF转文本以及转图片的文章就介绍到这了,更多相关Java itextpdf PDF转文本和图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!