[pdf]使用spire读取PDF的文字和图片

2023-05-16

概述

最近在梳理某项目的数据标准,从标准网下载了很多PDF格式的标准文件,需要提取文字和图片,所以写了个程序提取;本文使用了免费版的Spire。

约束

免费版的Spire一次只能提取PDF的10页。

环境配置

     pom.xml

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

示例代码

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.widget.PdfPageCollection;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;


public class TestMain1 {

    public static void main(String[] args) {
        String basePath = System.getProperty("user.dir");
        String pdfDir=basePath+File.separator+"src"+File.separator+"pdfDir";
        String fileName="GBT 1992-2006 集装箱术语.pdf";
        String fileFullName=pdfDir+File.separator+fileName;
        System.out.println("文件路径:"+fileFullName);
        System.out.println(" ====begin read pdf====");
        long l = System.currentTimeMillis();
        try {
            printPdfInfo(fileFullName,pdfDir);
        } catch (Exception e) {
            e.printStackTrace();
        }
        long l1 = System.currentTimeMillis();
        System.out.println("=====end pdf parse success;共耗时 " + (l1 -l) + " ms =====");
    }


    public static void printPdfInfo(String filePath,String outPath) throws Exception {
        //加载测试文档
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile(filePath);
        // 按每页获取文件内容
        PdfPageCollection pages = pdf.getPages();
        // pdf每页对象
        PdfPageBase page;
        System.out.println("PDF总页数:"+pages.getCount());

        if (pages.getCount() > 0) {
            //写入文件
            FileWriter writer = new FileWriter(outPath+File.separator+"extractText.txt");

            for (int i = 0; i < pages.getCount(); i++) {
                page = pages.get(i);
                System.out.println(" 第 " + (i + 1) + " 页 ");

                StringBuilder sb = new StringBuilder();
                // 按原内容格式输出
                String text = page.extractText(true);
                if(text.equalsIgnoreCase("") )
                {
                    System.out.println("内容为空!");
                }
                else
                {
                    System.out.println(" *****内容如下 *****");
                    System.out.println(text);
                    sb.append(text);
                }

                //System.out.println(text.replace("Evaluation Warning : The document was created with Spire.PDF for Java.",""));

                //将StringBuilder对象中的文本写入到txt
                writer.write(sb.toString());
                writer.flush();

               BufferedImage[] bufferedImages = page.extractImages(true);
                int index = 1;
                if (bufferedImages.length>0)
                {
                  for (BufferedImage image : bufferedImages)
                  {
                     System.out.println(" =====图片信息如下=====");
                     System.out.println(image);
                    File output = new File(String.format(outPath+File.separator+"page%d_image%d.JPEG", i+1,index));
                    ImageIO.write(image, "JPEG", output);
                    index++;
                  }
                }
            }
        }
        pdf.close();
    }
 
}

执行结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[pdf]使用spire读取PDF的文字和图片 的相关文章

  • PDFTron。 FreeText 注释字体

    我需要从以下位置获取字体信息 字体系列 颜色等 FreeText在 Net 中使用 PDFTron 进行注释 而我只看到FreeText GetFontSize方法 如何获取字体信息FreeText注解 如果存在外观流 则使用 E leme
  • 使用 iText 和 Batik 生成 PDF

    我正在尝试将文本和 SVG 图形导出为 PDF 我发现 iText 和 batik 可以做到这一点 所以我尝试这样做 但每次我放入图表时 它都会变得非常小 我认为这可能与我的代码有关 所以我想我应该尝试 Vaadin 的示例代码 publi
  • 查看pdf字节流而不将其保存在Android中

    Ref 如何在 Android 中渲染 PDF https stackoverflow com questions 2883355 how to render pdf in android 我有一个包含 PDF 内容的字节流 并希望在我的
  • 使用 javascript 在 IFrame 中打印 PDF 文件仅获取一页

    这是我打印 pdf 文件的代码 在这里 在打印时我只得到一页 我需要一个解决方案 function printPdf var ifr document getElementById frame1 PDF is completely load
  • 从 PDF 中提取不可选择的内容

    我正在使用 Apache PDFBox 从 PDF 文件中提取页面 但找不到提取不可选择的内容 文本或图像 的方法 从 PDF 文件中选择内容是没有问题的 请注意 相关 PDF 在复制内容方面没有任何限制 至少从我在文件的 文档限制摘要 中
  • 如何打开PDF并阅读?

    我如何打开 PDF 文件并使用 Python 读取其中的一些内容 这种语言是首选 但是 Ruby Perl 或 PHP 也可以 以防它被识别 不仅仅是图像 或报告说如果没有它就不可能光学字符识别 TIA 更新 感谢您的解决方案 我确信其中一
  • 使用 AJAX 调用生成 PDF 文件

    我正在尝试使用 Rails3 中的 AJAX 调用生成 PDF 文件 以下代码生成一个我使用 PRAWN gem 创建的 PDF 文件 我不希望用户在订购之前查看 PDF 因此 目标是在服务器中创建 PDF 文件 非常感谢任何想法或想法 使
  • 在 Visual Basic 2010 的控件中显示 PDF

    我刚刚安装了 Visual Basic 2010 浏览了一些有关如何显示文件的教程 但找不到任何有关如何选择现有 PDF 文件并将其嵌入表单的材料 任何正确方向的建议或指示都会很棒 谢谢 只需在表单中嵌入浏览器控件并将其导航到 PDF 文件
  • 如何直观地检查 PDF 的结构以对其进行逆向工程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如何检查 PDF 文件的结构 用例 我正在尝试以编程方式生成 PDF 文件 使用 iText 我在实现
  • 从 PDF 转换为 HTML [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Apache PDFBox:将最后一页移动到首页

    我正在使用 Apache PDFBox 编写一个简单的 Java 应用程序 我有几个 PDF 其中最后一页是前几页内容的索引 我需要索引 最后一页 成为PDF文件的第一页 是否可以 我还发现了http itextpdf com http i
  • 使用 ApacheFOP 从 Java 中的 XML 生成 PDF

    我正在尝试从 Java 对象生成即时 PDF 报告 我找不到很多这方面的例子 所以我一直在关注这个例子 http svn apache org viewvc xmlgraphics fop trunk examples embedding
  • 打开 PDF 到书签/指定目标?

    我正在尝试使用 python 打开特定书签的 PDF 到目前为止 我可以在命令提示符中运行以下命令并得到我想要的 last是 PDF test pdf 中指定目的地的名称 C Program Files x86 Adobe Reader 1
  • JsPdf 库无法读取 PDF 中的阿拉伯语

    在 pdf 中显示阿拉伯值的代码不起作用 它向我展示了一些我无法理解的奇怪语言 var sm nature name nature1 ar 1 name nature2 ar 2 name nature3 ar 3 name nature4
  • 从图像创建 PDF 时设置文档名称

    我使用以下代码从 jpg 图像创建 pdf im new Imagick im gt readImage image jpg im gt setImageFormat pdf im gt writeImage images pdf imag
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • USB 上的 Autorun.inf 可以让它运行 pdf 吗?

    我在网上做了一些研究 我想我只是在寻找构象 由于 Microsoft 如何在 Vista 及更高版本中对自动运行设置安全性 从 USB 自动运行不再起作用 正确的 看起来它仍然会显示运行 exe 的选项 但由于某些奇怪的原因我无法让它运行
  • 使用 Django 从标准输出返回 pdf 响应

    我正在使用 wkhtmltopdf 创建 PDF 文件 但是我不知道如何正确返回它们 所以我必须将它们写入我的媒体文件夹 然后重定向到刚刚创建的文件 编辑 Ian 的建议是写入 STDOUT 因此我更改了 wkhtmltopdf 命令来执行
  • 如何使用 pdf.js 从客户端设置范围标头?

    我对客户端编程很陌生 我正在尝试使用 pdf js 在我的网站上查看我的 pdf 通过遵循文档中的步骤 我尝试使用 pdf js 加载 pdf 整个 pdf 文件通过单个请求下载 现在 我想做渐进式加载 通过指定范围下载 我在客户端和服务器
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接

随机推荐

  • [leetcode]22. Generate Parentheses

    Given n pairs of parentheses write a function to generate all combinations of well formed parentheses For example given
  • [leetcode]238. Product of Array Except Self

    Given an array nums of n integers where n gt 1 return an array output such that output i is equal to the product of all
  • [ERROR]ubuntu18.04安装Postman报错

    解压完成以后 xff0c 进入解压目录 xff0c 执行 Postman xff0c 提示 xff1a Postman error while loading shared libraries libgconf 2 so 4 cannot
  • [leetcode]347. Top K Frequent Elements

    Given a non empty array of integers return the k most frequent elements Example 1 Input nums 61 1 1 1 2 2 3 k 61 2 Outpu
  • [leetcode]206. Reverse Linked List

    Reverse a singly linked list Example Input 1 gt 2 gt 3 gt 4 gt 5 gt NULL Output 5 gt 4 gt 3 gt 2 gt 1 gt NULL Follow up
  • [ERROR]ubuntu18.04自带中文输入法在输入中文选择内容的时候出现数字而不是中文

    ubuntu18 04自带中文输入法在输入中文选择内容的时候出现数字而不是中文 今天早上遇到了这个问题 xff0c sudo rm rf xff5e cache ibus libpinyin 重启电脑 解决
  • [leetcode]237. Delete Node in a Linked List

    Write a function to delete a node except the tail in a singly linked list given only access to that node Given linked li
  • [leetcode]78. Subsets

    Given a set of distinct integers nums return all possible subsets the power set Note The solution set must not contain d
  • 使用telnet发送email(内嵌图片,附件)

    使用telnet发送email 内嵌图片 xff0c 附件 因为最近想复习一下smtp协议所以无聊的本人想使用telnet发送email xff0c 虽然比较简单但还是记录下来希望可以给一些需要的朋友帮助吧 准备 xff1a 首先本人实在w
  • C/C++中 sizeof 详解

    摘要 xff1a Sizeof的作用非常简单 xff1a 求对象或者类型的大小 然而sizeof又非常复杂 xff0c 它涉及到很多特殊情况 xff0c 本篇把这些情况分门别类 xff0c 总结出了sizeof的10个特性 xff1a 0
  • Android中包含List成员变量的Parcel以及Parcel嵌套写法示例

    这个Scean类实现了Parcelable接口 xff0c 同时其内部的成员变量List lt SubScean gt subSceanList 中的SubScean类也实现了Parcelable接口 public class Scean
  • 第一节:详细透彻解读Git与SVN的区别(集中式VS分布式)

    Git是目前世界上最先进的分布式版本控制系统 xff0c 其实 Git 跟 SVN一样有自己的集中式版本库或服务器 xff0c 但是Git 更倾向于被使用于分布式模式 xff0c 也就是每个开发人员从中心版本库 服务器上chect out代
  • Android 9.0 SecureElementService 初始化流程分析

    1 相关名词解释 NFC Near Field Communication xff0c 近场通信 xff0c 一种基于13 56 MHz 的短距离通信技术 NFCC NFC Controller xff0c NFC 控制器 xff0c 负责
  • 【Linux】生产者消费者模型 - 详解

    目录 一 生产者消费者模型概念 1 为何要使用生产者消费者模型 2 生产者消费者之间的关系 3 生产者消费者模型的优点 二 基于阻塞队列的生产消费模型 1 在阻塞队列中的三种关系 2 BlockingQueue hpp 阻塞队列类 3 Lo
  • word 批量设置图片大小

    word批量修改图片大小 固定长宽篇 方法一 xff1a 这部分要说的是把word中的所有图片修改成固定的并且相同的长和宽 xff01 1 打开word xff0c 工具 xff0d 宏 xff0d 宏 xff08 或者直接按Alt 43
  • 深度学习之 人脸识别(1) 人脸预处理

    人脸识别分两个部分 xff1a 第一步 xff1a 人脸图片预处理 xff0c 即检测图片中人脸并裁剪成指定尺寸的人脸图 第二步 xff1a 人脸识别 xff0c 包括模型训练 目标人脸分类训练 预测目标人脸 1 人脸检测原理 人脸识别 x
  • 制作自己的个人网站方法

    随着个人创业的流行 xff0c 很多个人也需要一个比较详细的网站来展示自己 xff0c 开展个人业务 xff0c 或者积累粉丝等等 那么怎么制作自己的个人网站呢 xff1f 又该怎么制作得更个性好看 xff1f 下面就跟大家分享下制作方法
  • 傻瓜书,VMware里的Ubuntu

    转自 xff1a http bbs cnw com cn thread 136057 1 1 html 傻瓜书 xff0c VMware里的Ubuntu 0 预备知识 什么是Ubuntu 如果不了解这一点 xff0c 本文的内容似乎与您无关
  • 痞子衡单片机排行榜(2022Q4)

    痞子衡单片机排行榜 2022Q4 继2020年开办的 痞子衡嵌入式半月刊 之后 xff0c 从2023年1月份开始痞子衡将为大家带来新项目 痞子衡单片机排行榜 一年分四季 xff0c 每个季度发布一期 xff0c 以MCU主频和Corema
  • [pdf]使用spire读取PDF的文字和图片

    概述 最近在梳理某项目的数据标准 xff0c 从标准网下载了很多PDF格式的标准文件 xff0c 需要提取文字和图片 xff0c 所以写了个程序提取 xff1b 本文使用了免费版的Spire 约束 免费版的Spire一次只能提取PDF的10