Bootstrap

pdf提取文本,表格以及转图片:spire.pdf

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

🏅JavaEE系列专栏

📖前言:

PDF转文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 这几个,
spire.pdf这个转图片不推荐使用(图片不完整要收费),推荐使用我发布itextpdf 这篇文章的转图片方式

🎀 1. pdfbox

1.1导入pdfbox 的maven依赖

spire官网入口(不谢~)

           <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf</artifactId>
            <version>10.7.3</version>
        </dependency>

因为这个是私服仓库,可能有的小伙伴下不下来依赖:在maven的配置文件中配置这个仓库即可:
看不懂的点这里~
在这里插入图片描述

在这里插入图片描述

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>	
1.1 提取文本
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextExtractOptions;
import com.spire.pdf.texts.PdfTextExtractor;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class ExtractTextFromPage
{
    public static void main(String[] args) throws IOException
    {
        // 创建 PdfDocument 对象
        PdfDocument doc = new PdfDocument();

        // 加载 PDF 文件
        doc.loadFromFile("input.pdf");

        // 获取第一页,遍历文档所有页便可提取文档所有文本内容
        PdfPageBase page = doc.getPages().get(0);

        // 创建PdfTextExtractor 对象
        PdfTextExtractor textExtractor = new PdfTextExtractor(page);

        // 创建PdfTextExtractOptions 对象
        PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();

        // 从页面中提取文本
        String text = textExtractor.extract(extractOptions);

        // 写入到 txt 文件中
        Files.write(Paths.get("Extracted.txt"), text.getBytes());

        // 释放PdfDocument对象
        doc.dispose();
    }
}
1.2 提取文本表格(可自行加入逻辑处理)
import com.spire.pdf.*;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;

import java.io.FileWriter;
import java.io.IOException;

public class ExtractTable {
    public static void main(String[] args)throws IOException {
        //实例化PdfDocument类的对象
        PdfDocument pdf = new PdfDocument();

        //加载PDF文档
        pdf.loadFromFile("test.pdf");

        //创建StringBuilder类的实例
        StringBuilder builder = new StringBuilder();

        //创建PdfTableExtractor类的对象
        PdfTableExtractor extractor = new PdfTableExtractor(pdf);

        //遍历每一页
        for (int page = 0; page < pdf.getPages().getCount(); page++)
        {
            //提取页面中的表格存入PdfTable[]数组
            PdfTable[] tableLists = extractor.extractTable(page);
            if (tableLists != null && tableLists.length > 0)
            {
                //遍历表格
                for (PdfTable table : tableLists)
                {
                    int row = table.getRowCount();//获取表格行
                    int column = table.getColumnCount();//获取表格列
                    for (int i = 0; i < row; i++)
                    {
                        for (int j = 0; j < column; j++)
                        {
                            //todo 获取表格中的文本内容  表格坐标(i,j)
                            String text = table.getText(i, j);

                            //将获取的text写入StringBuilder容器
                            builder.append(text+" ");
                        }
                        builder.append("\r\n");
                    }
                }
            }
        }

        //保存为txt文档
        FileWriter fileWriter = new FileWriter("ExtractedTable.txt");
        fileWriter.write(builder.toString());
        fileWriter.flush();
        fileWriter.close();
    }
}
1.3 pdf转换成图片代码(不推荐)

可以看我发布itextpdf 这篇文章的转图片方式,它这个功能不完整

import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class PDFtoImage {
    public static void main(String[] args)throws IOException {
        //实例化PdfDocument类的对象
        PdfDocument pdf = new PdfDocument();

        //加载PDF文档
        pdf.loadFromFile("sample.pdf");

        //遍历PDF每一页,保存为图片
        for (int i = 0; i < pdf.getPages().getCount(); i++) {
            //将页面保存为图片,并设置DPI分辨率
            BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap,500,500);
            //将图片保存为png格式
            File file = new File( String.format(("ToImage-img-%d.png"), i));
            ImageIO.write(image, "PNG", file);
        }
        pdf.close();
    }
}
;