PDF转文本以及转图片:itextpdf

文章目录

🐒个人主页:信计2102罗铠威

🏅JavaEE系列专栏

📖前言:

PDF转文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 这几个,

🎀 1. itextpdf

1.1导入itextpdf的maven依赖
xml 复制代码
        <!--2.itexpdf依赖-->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.3</version>
        </dependency>
1.2 提取文本代码
java 复制代码
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提取文本结束------------------------------");
        }
}
1.3 pdf转换成图片代码(本地图片地址还是线上PDF的URL地址均支持)
java 复制代码
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();
    }

}
相关推荐
一只花里胡哨的程序猿4 小时前
odoo打印pdf速度慢问题
pdf·odoo
灵海之森7 小时前
Python将md转html,转pdf
pdf
阿幸软件杂货间10 小时前
最新PDF版本!Acrobat Pro DC 2025,解压即用版
pdf·adobe acrobat·acrobat
星空的资源小屋12 小时前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
会飞的小菠菜16 小时前
如何一次性将多个PPT幻灯片批量转换成PDF文档
pdf·powerpoint·ppt·批量·格式转换
somethingGoWay19 小时前
wpf .netcore 导出pdf文件
pdf·wpf·.netcore
小白电脑技术1 天前
PDF教程|如何把想要的网页保存下来?
pdf·电脑
我没想到原来他们都是一堆坏人1 天前
通过Gen AI SDK调用gemini 2.5 pro,单独上传pdf文件 | ai agent 开发笔记 2025.9.2 Day 2
ai·google·pdf·sdk·gemini
AI视觉网奇1 天前
麒麟系统 doc转pdf
linux·运维·pdf
CodeCraft Studio2 天前
国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
java·python·pdf·spire.pdf·java创建pdf·从html创建pdf