JAVA 提取PDF中文本、图片
pdfocr 基于java

PDFOCR是一个基于Java的开源OCR(光学字符识别)工具,它可以将扫描的PDF文件转换为可编辑和可搜索的文本格式。
PDFOCR使用Tesseract OCR引擎进行字符识别,并使用Apache PDFBox库处理PDF文件。
它还支持多种语言,并具有良好的性能和准确性。
使用PDFOCR,您可以通过Java代码将PDF文件转换为文本格式,或者将其集成到您的Java应用程序中,以便在用户上传扫描的PDF文件时自动执行OCR操作。
以下是使用PDFOCR将PDF文件转换为文本的简单示例代码:
java复制代码
import net.sourceforge.pdfocr.PdfOcr;
public class PdfOcrExample {
public static void main(String[] args) {
String inputFilePath = "path/to/input/pdf/file.pdf";
String outputFilePath = "path/to/output/text/file.txt";
PdfOcr pdfOcr = new PdfOcr();
pdfOcr.setInputFile(inputFilePath);
pdfOcr.setOutputFile(outputFilePath);
pdfOcr.process();
}
}
在此示例中,我们创建了一个PdfOcr对象,并设置了输入和输出文件的路径。
然后,我们调用process()方法执行OCR操作,并将结果写入输出文件中。
如何将pdf图片中的文字提取出来?

如何将pdf图片中的文字提取出来?
转眼间自己也工作3年了,岁月是把双刃箭,抹去了许许多多的伤痛,同时也抹去了许许多多美好的记忆。
闲暇之时,不经意间会发现同学们有的在嗮婚纱照,有的在晒大肚肚照,有的在晒恋爱的幸福,还有的在诉说着领结婚证的消息,更甚的是有的在晒小孩子的照片……默默的关注着这些些许许的消息,不时的由衷替他们感到高兴和幸福!但是自己却苦逼逼的每日做着重复的工作,这样的生活虽然很正常,但是时间长了难免会枯燥,特别是当遇到一些难解决的事情。
就像上次需要将pdf图片中的文字提取出来,试过了多种方法都没能够实现,最后辗转找到捷速pdf文字识别软件才解决了这个问题。
第一步:打开下载好的软件,软件就自动进入到操作主界面,界面非常的简洁,所有的操作键都在软件的左上方。
首先我们点击第一个“读取”按钮,找到需要识别的文件所在位置,点击即可完成文件的添加工作。
第二步:页面会出现原文件,这个时候我们点击“纸面解析”按钮,软件会对文件的段落等进行分析,这样识别得到的文件就会与原文件的段落排版一致。
第三步:一切准备就绪,点击“识别”按钮,单页的文件瞬间就能完成识别工作。
页面的右边就会出现识别的结果,根据原文进行核对。
第四步:识别好的文件选择保存的格式,直接点击“word”或是“图片”即可。
java解析pdf的原理

java解析的原理
Java解析PDF的原理是通过使用PDF解析库来读取PDF文件的内容,提取其中的文本、图像和图形等信息,并进行解析和处理。
Java解析PDF的原理是通过解析PDF文件的结构和内容,将其中的文本、图像和图形等信息提取出来,并转换成Java可用的格式进行处理和展示。
在这个过程中,需要使用PDF解析库来辅助完成解析操作。
具体的解析过程如下:
1. 打开PDF文件:使用Java的文件操作库打开PDF文件,并读取其中的内容。
2. 解析文件结构:PDF文件采用的是二进制格式,需要解析其文件结构。
PDF文件由多个对象组成,包括页面、字体、图像等。
3. 解析字体信息:PDF文件中的文本通常使用字体进行描述。
解析器会读取PDF 文件中的字体信息,并将其保存为Java可用的格式。
4. 解析页面信息:PDF文件由多个页面组成,每个页面包含了文本、图像和图形等元素。
解析器会读取并保存每个页面的信息。
5. 提取文本内容:解析器通过解析页面信息,提取文本内容。
根据PDF文件中的字体信息,将文本内容转换成可读的格式。
6. 提取图像信息:PDF文件中可能含有嵌入的图像。
解析器会读取图像的信息,并将其保存为Java可用的格式,如BufferedImage。
7. 处理图形信息:PDF文件中的图形通常是由矢量图形描述的。
解析器会读取图形的绘制指令,将其转换成Java中的图形绘制指令。
8. 关闭文件:解析器读取完PDF文件的内容后,会关闭文件以释放相关资源。
Java 添加、提取PDF中的图片(基于Spire.Cloud.SDK for Java)

Java 添加、提取PDF中的图片Spire.Cloud.SDK for Java提供了PdfImagesApi接口可用于添加图片到PDF文档addImage()、提取PDF中的图片extractImages(),具体操作步骤和Java代码示例可参考以下内容。
一、导入jar文件。
(有2种方式)(推荐)方式1. 创建Maven项目程序,通过maven仓库下载导入。
以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下:<repositories><repository><id>com.e-iceblue</id><name>cloud</name><url>/repository/maven-public/</url></repository></repositories><dependencies><dependency><groupId> cloud </groupId><artifactId>spire.cloud.sdk</artifactId><version>3.5.0</version></dependency><dependency><groupId> com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.1</version></dependency><dependency><groupId> com.squareup.okhttp</groupId><artifactId>logging-interceptor</artifactId><version>2.7.5</version></dependency><dependency><groupId> com.squareup.okhttp </groupId><artifactId>okhttp</artifactId><version>2.7.5</version></dependency><dependency><groupId> com.squareup.okio </groupId><artifactId>okio</artifactId><version>1.6.0</version></dependency><dependency><groupId> io.gsonfire</groupId><artifactId>gson-fire</artifactId><version>1.8.0</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.18</version></dependency><dependency><groupId> org.threeten </groupId><artifactId>threetenbp</artifactId><version>1.3.5</version></dependency></dependencies>完成配置后,点击“Import Changes” 即可导入所有需要的jar文件。
java pdf读取的几种方法

在Java中,有几种主要的方法可以用来读取PDF文件:1.Apache PDFBox: Apache PDFBox是一个开源的Java库,用于处理PDF文档。
你可以使用它来读取、创建、修改PDF文件等。
它支持各种功能,例如提取文本、图像,添加水印,加密和解密PDF文件等。
2.iText: iText是一个用于处理PDF文件的商业库。
它提供了许多功能,如创建PDF文件、添加文本、图像、表格,以及读取、修改和加密PDF文件等。
3.jPDFBox: jPDFBox是另一个Java库,用于处理PDF文件。
它的功能包括读取PDF文件的内容,提取图像,添加书签等。
4.Batik: Apache Batik是一个用于处理PDF文件的工具集,它是ApacheXML Graphics Project的一部分。
除了处理PDF文件,Batik还支持SVG 文件。
5.Poppler: Poppler是一个用于渲染PDF文档的库。
Poppler基于Qt和Glib,并且是免费的。
Poppler可以用于显示PDF文件,也可以用于提取文本和图像。
Poppler通常与Evince一起使用,Evince是一个开源的PDF 阅读器。
6.PDFBox-Android: PDFBox-Android是Apache PDFBox的一个分支,专门为Android平台设计。
它支持大部分的PDFBox功能,并且针对Android进行了优化。
以上这些库都有自己的优缺点,你可以根据你的具体需求来选择适合你的库。
例如,如果你需要加密和解密PDF文件,那么iText可能更适合你。
如果你只需要读取PDF文件的内容,那么Poppler可能是一个更好的选择。
专利pdf信息提取java

专利pdf信息提取java提取专利PDF中的信息是一个具有挑战性的任务,需要使用特定的工具和技术。
以下是一个基本的步骤,说明如何使用Java和Apache PDFBox库来提取PDF文件中的文本信息。
1.引入Apache PDFBox库:首先,你需要将Apache PDFBox库添加到你的Java项目中。
你可以从Apache PDFBox的官方网站下载库,或者如果你使用Maven或Gradle,你可以添加依赖项。
2.读取PDF文件:使用PDFBox的PDDocument类打开PDF文件。
javaPDDocument document = PDDocument.load(new File("patent.pdf"));3.提取文本:使用PDFTextStripper类提取PDF中的文本。
javaPDFTextStripper pdfStripper = new PDFTextStripper();String text = pdfStripper.getText(document);4.处理和解析文本:提取的文本可能需要进行进一步的处理和解析,以便提取所需的信息。
这可能包括使用正则表达式或其他文本处理技术来提取特定模式或格式的信息。
5.关闭文档:完成提取后,关闭打开的PDF文档。
javadocument.close();请注意,这种方法只能提取PDF中的文本信息。
如果专利PDF包含图像或其他非文本元素,并且你需要从中提取信息,你可能需要使用更复杂的方法,如光学字符识别(OCR)或图像处理技术。
此外,对于复杂的PDF布局或格式,提取特定信息可能需要更高级的文本处理和解析技术。
pdf java 解析

pdf java 解析摘要:一、前言二、PDF文件简介三、Java解析PDF的方法1.使用Apache PDFBox库2.使用iText库四、总结正文:一、前言随着数字化时代的到来,PDF文件已经成为我们日常工作中不可或缺的一种文件格式。
PDF文件具有跨平台、稳定性强、保留原始排版等特点。
在Java 开发中,如何解析PDF文件成为了一个常见的问题。
本文将介绍如何使用Java来解析PDF文件。
二、PDF文件简介PDF(Portable Document Format)是一种便携式文档格式,由Adobe 公司于1993年推出。
PDF文件可以将文字、图片、图表、音频、视频等多种元素嵌入到一个文件中,并且可以在各种设备和操作系统上保持原始的排版和显示效果。
三、Java解析PDF的方法在Java中,有多种库可以帮助我们解析PDF文件,这里我们介绍两个常用的库:Apache PDFBox和iText。
1.使用Apache PDFBox库Apache PDFBox是一个开源的Java库,用于处理PDF文件。
它允许我们读取、创建、修改和解析PDF文件。
使用PDFBox,我们可以轻松地提取PDF文件中的文本、图片和表格等内容。
首先,需要在项目中引入PDFBox的依赖。
在Maven项目的pom.xml文件中添加以下依赖:```xml<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version></dependency>```然后,可以使用以下代码示例来解析PDF文件:```javaimport org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.text.PDFTextStripper;public class PDFParseExample {public static void main(String[] args) {try {PDDocument document = PDDocument.load(new File("example.pdf"));PDFTextStripper textStripper = new PDFTextStripper();String pdfText = textStripper.getText(document);System.out.println(pdfText);document.close();} catch (IOException e) {e.printStackTrace();}}}```2.使用iText库iText是一个用于处理PDF文件的商业级Java库,提供了丰富的功能来创建、编辑、解析和显示PDF文件。
java获取文件内容的方法

java获取文件内容的方法【实用版4篇】篇1 目录I.获取文件内容的方法概述II.使用Scanner类读取文件内容III.使用BufferedReader类读取文件内容IV.使用FileInputStream类读取文件内容V.使用FileChannel类读取文件内容篇1正文Java中获取文件内容的方法有很多种,下面介绍几种常用的方法:1.使用Scanner类读取文件内容Scanner类是Java中常用的类之一,它可以帮助我们方便地读取文件内容。
具体实现方法如下:```javatry (Scanner scanner = new Scanner(new File("filename.txt"))) {while (scanner.hasNextLine()) {String line = scanner.nextLine();// 处理每一行内容}} catch (FileNotFoundException e) {e.printStackTrace();}```2.使用BufferedReader类读取文件内容BufferedReader类可以帮助我们快速读取文件内容,它可以读取文本文件、CSV文件等。
具体实现方法如下:```javatry (BufferedReader reader = new BufferedReader(new FileReader("filename.txt"))) {String line;while ((line = reader.readLine()) != null) {// 处理每一行内容}} catch (IOException e) {e.printStackTrace();}```3.使用FileInputStream类读取文件内容FileInputStream类可以帮助我们读取二进制文件,它可以读取图片、音频、视频等文件。
pdfbox 应用案例

pdfbox 应用案例PDFBox 是一个开源的 Java 库,用于处理 PDF 文件。
它提供了丰富的功能,可以创建、操作和提取 PDF 文件中的内容。
本文将介绍几个实际应用场景,展示 PDFBox 的强大功能和广泛应用。
一、PDF 文档转换PDFBox 提供了将 PDF 文档转换为其他格式的功能。
通过使用PDFBox,我们可以轻松将 PDF 文档转换为文本文件、图像文件或HTML 文件。
例如,我们可以将一份调查问卷的 PDF 文件转换为文本文件,便于进行数据处理和分析。
对于需要在网络上展示内容的场景,将 PDF 文件转换为 HTML 文件可以方便地嵌入到网页中,并支持在线查看和搜索。
二、PDF 表单处理PDFBox 具有处理 PDF 表单的能力。
在许多工作场景中,我们需要与用户进行数据交互,并收集用户的输入信息。
PDF 表单是一种理想的方式,可以规范数据的格式和收集方式。
PDFBox 可以用于创建、填充和验证 PDF 表单。
我们可以使用 PDFBox 创建自定义表单,并将用户的输入信息填充到表单中,然后对输入数据进行验证和处理。
这对于一些需要收集用户反馈或用户注册的应用非常有用。
三、PDF 文档合并与拆分有时我们需要合并多个 PDF 文档为一个,或者拆分一个大的 PDF文档为多个小的文件。
PDFBox 提供了便捷的方式实现这种需求。
通过使用 PDFBox 的合并和拆分功能,我们可以将多个 PDF 文档合并为一个完整的文档,或者将一个大的 PDF 文档拆分成多个独立的文件。
这对于需要整理和归档大量 PDF 文档的场景非常有帮助,也提高了文档的可管理性和可读性。
四、PDF 文档加密与解密PDFBox 支持加密和解密 PDF 文件。
在一些需要保密信息的场景中,我们可以使用 PDFBox 对 PDF 文件进行加密,以确保只有授权的用户可以访问内容。
通过设置密码和权限控制,我们可以限制对 PDF 文件的打印、复制粘贴、修改等操作。
提取PDF文本

Java 提取PDF 文本内容在日常工作中,有时可能会需要从庞大的PDF 文档中提取其中所包含的文本内容。
通过在网上搜索资料后发现,Free Spire.PDF for Java 正好为我们提供了一种方便快捷的文本提取方法,下面就分享一下解决思路及过程中使用到的Java 代码。
基本思路:1.下载Free Spire.PDF for Java包并解压缩2.将lib文件夹下的Spire.Pdf.jar包作为依赖项导入到Java应用程序中,或者通过Maven仓库安装JAR包(配置pom.xml文件的代码见下文)3.在Java应用程序中新建一个Java Class(此处我命名为ExtractText), 然后输入相应的Java代码并运行配置pom.xml文件:<repositories><repository><id>com.e-iceblue</id><url>/repository/maven-public/</url> </repository></repositories><dependencies><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>2.6.3</version></dependency></dependencies>PDF源文档如下:Java代码import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import java.io.*;public class ExtractText {public static void main(String[] args) {//创建PdfDocument实例PdfDocument doc = new PdfDocument();//加载PDF文件doc.loadFromFile("test.pdf");//创建StringBuilder实例StringBuilder sb = new StringBuilder();PdfPageBase page;//遍历PDF页面,获取每个页面的文本并添加到StringBuilder对象for(int i= 0;i<doc.getPages().getCount();i++){ page = doc.getPages().get(i);sb.append(page.extractText(true));}FileWriter writer;try {//将StringBuilder对象中的文本写入到文本文件writer = new FileWriter("提取文本.txt");writer.write(sb.toString());writer.flush();} catch (IOException e) {e.printStackTrace();}doc.close();}}提取结果:。
JAVA提取PDF中文本、图片

JAVA提取PDF中文本、图片Java 提取PDF中文本和图片PDF常携带大量且还原度高的信息内容,有时为了获得一些必要的数据我们需要从PDF 中读取文本和图片信息。
下面这篇文章将介绍通过Java实现提取PDF的文本和图片。
工具使用:●Free Spire Pdf for Java 2.4.4 (免费版)●Intellij IDEA导入Jar 包:首先,获取Free Spire.PDF for Java之后解压,以下是三种方式在IDEA中快速打开Project Structure界面;如下图:然后:①选择“Modules”—“Dependencies”,添加外置jar 包;②进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③勾选jar路径选项,点击”OK”/”Apply”;④导入完成。
如下图:测试源文档参考如下:Java 代码示例参考:【示例 1】提取PDF 中文本内容步骤一:添加命名空间;import com.spire.pdf.*; import java.io.FileWriter ;步骤二:创建PDF实例和加载PDF源文件;//创建PDF实例PdfDocument doc = new PdfDocument();//加载PDF源文件doc.loadFromFile("data/PDF_3.pdf");步骤三:使用StringBuilder方法定义一个字符缓冲区实例,for 循环遍历整个PDF文档;// 遍历PDF文档StringBuilder buffer = new StringBuilder();for(int i = 1; i<="" p="">PdfPageBase page = doc.getPages().get(i);buffer.append(page.extractText());}步骤四:定义一个writer实例将数据写到缓冲区,使用write()将缓冲区的数据写入text.txt 文件并保存。
Java PDFBox 按段落提取文字内容

Java PDFBox 按段落提取文字内容要使用Java和PDFBox按段落提取PDF文件中的文字内容,可以借助`PDFTextStripper`类和文本行的位置信息来识别段落。
import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.text.PDFTextStripper;import org.apache.pdfbox.text.TextPosition;import java.io.File;import java.io.IOException;public class PdfParagraphExtractionExample {public static void main(String[] args) {try {// 加载PDF文档PDDocument document = PDDocument.load(new File("input.pdf"));// 创建PDFTextStripper对象PDFTextStripper stripper = new PDFTextStripper() {private StringBuilder paragraphBuilder = new StringBuilder();@Overrideprotected void startPage(PDPage page) throws IOException {super.startPage(page);paragraphBuilder.setLength(0); // 清空段落构建器}@Overrideprotected void writeLineSeparator() throws IOException {super.writeLineSeparator();paragraphBuilder.append("\n"); // 添加段落分隔符}@Overrideprotected void writeString(String string, List<TextPosition> textPositions) throws IOException {super.writeString(string, textPositions);paragraphBuilder.append(string); // 添加文本内容}@Overrideprotected void endPage(PDPage page) throws IOException {super.endPage(page);String paragraph = paragraphBuilder.toString().trim(); // 提取段落if (!paragraph.isEmpty()) {System.out.println(paragraph);System.out.println(); // 打印段落}}};// 提取文字内容stripper.setSortByPosition(true);stripper.setStartPage(0);stripper.setEndPage(document.getNumberOfPages());stripper.getText(document);// 关闭文档document.close();} catch (IOException e) {e.printStackTrace();}}}```在上述示例代码中,我们创建了一个继承自`PDFTextStripper`的匿名内部类,并重写了`startPage()`、`writeLineSeparator()`、`writeString()`和`endPage()`方法。
java中pdftextextractor用法

java中pdftextextractor用法PDF/Text Extractor是Java中一个非常实用的工具,它可以将PDF文档中的文本内容提取出来,方便我们进行进一步的处理和分析。
本文将介绍PDF/Text Extractor在Java中的用法,包括其基本概念、安装和使用方法等。
一、基本概念PDF是一种电子文档格式,它包含了大量的文本、图像、图形等信息。
Text Extractor则是用于从PDF文档中提取文本的工具。
通过Text Extractor,我们可以将PDF文档中的文本内容提取出来,方便我们进行后续的处理和分析。
二、安装和使用1. 下载和导入首先,我们需要从网上下载PDF/Text Extractor的库文件,并将其导入到Java项目中。
通常,我们可以使用Maven或Gradle等构建工具来导入库文件。
2. 提取文本在Java代码中,我们可以使用Text Extractor类来提取PDF文档中的文本。
以下是一个简单的示例代码:PdfReader reader = new PdfReader("example.pdf");PdfTextExtractor extractor = new PdfTextExtractor(reader);String text = extractor.getText();这段代码将读取名为"example.pdf"的PDF文档,并使用PdfTextExtractor类提取其中的文本内容,最后将提取到的文本存储在变量text中。
3. 异常处理在使用PDF/Text Extractor时,可能会遇到一些异常情况,如文件不存在、无法读取文件等。
因此,我们需要对异常情况进行处理,以确保程序的稳定性和可靠性。
三、注意事项1. 文件格式和编码PDF文档的格式和编码可能会影响Text Extractor的提取效果。
因此,在提取文本前,我们需要确保PDF文档的格式和编码是正确的。
关于pdfmarkedcontentextractor详解的文章

关于pdfmarkedcontentextractor详解的文章PDFMarkedContentExtractor详解PDFMarkedContentExtractor是一种用于提取PDF文件中标记内容的工具。
在理解PDFMarkedContentExtractor 之前,我们首先需要了解什么是标记内容。
在PDF文件中,标记内容是指通过标记语言(例如XML 或HTML)对文档中的特定部分进行标记的过程。
这些标记可以用于识别和提取文档中的特定元素,如段落、标题、表格等。
通过使用标记内容,我们可以更方便地处理和分析PDF文件。
PDFMarkedContentExtractor是一个开源工具,它提供了一种简单而强大的方法来提取PDF文件中的标记内容。
它基于Apache PDFBox库开发,并且可以与Java编程语言一起使用。
使用PDFMarkedContentExtractor,我们可以执行各种操作,如提取文本、图像和表格等。
它还支持对文档进行搜索和过滤,并且可以根据需要自定义提取规则。
要使用PDFMarkedContentExtractor,我们首先需要将其添加到我们的Java项目中。
然后,我们可以创建一个新的PDFMarkedContentExtractor对象,并将要处理的PDF 文件作为参数传递给它。
一旦创建了PDFMarkedContentExtractor对象,我们就可以使用它来执行各种操作。
例如,要提取文本内容,我们可以使用extractText方法。
这个方法将返回一个包含所有提取到的文本的字符串。
除了提取文本,PDFMarkedContentExtractor还可以提取图像。
我们可以使用extractImages方法来提取PDF文件中的所有图像。
这个方法将返回一个包含所有提取到的图像的列表。
此外,PDFMarkedContentExtractor还支持对文档进行搜索和过滤。
我们可以使用searchText方法来搜索包含特定关键字的文本。
java从pdf中提取文本

java从pdf中提取⽂本⼀(单⽂件转换):下载pdfbox包,百度搜pdfbox.(fontbox-1.8.16.jar和pdfbox-app-1.8.16.jar) 1package pdf;23import java.io.FileInputStream;4import java.io.FileOutputStream;5import java.io.OutputStreamWriter;67import org.apache.pdfbox.pdfparser.PDFParser;8import org.apache.pdfbox.pdmodel.PDDocument;9import org.apache.pdfbox.util.PDFTextStripper;1011/**12 *13 * @author⼤汉14 *15*/16public class PdfToTxt {1718public PdfToTxt() {19super();20// TODO Auto-generated constructor stub21 }2223/**24 *25 * @param filename26 * @return27 * @throws Exception28*/29public String GetTextFromPdf(String filename) throws Exception {3031 String content = null;32 PDDocument pdfdocument = null;3334 FileInputStream is = new FileInputStream(filename);35 PDFParser parser = new PDFParser(is);3637 parser.parse();38 pdfdocument = parser.getPDDocument();39 PDFTextStripper stripper = new PDFTextStripper();40 content = stripper.getText(pdfdocument);41return content;42 }4344/**45 *46 * @param args47*/48public static void main(String[] args) {49 PdfToTxt pdfToTxt = new PdfToTxt();50try {51//获取pdf⽂件路径52 String pdf = pdfToTxt.GetTextFromPdf("E:/2019a.pdf");53//输出到txt⽂件54 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:/aa.txt"));55 osw.write(pdf);56 osw.flush();57 osw.close();58 }catch (Exception e){59 e.printStackTrace();60 }6162 }6364 }还可以这样:(第⼆种⽅法)1package pdf;23import java.io.File;4import java.io.FileOutputStream;5import java.io.OutputStreamWriter;6import java.io.Writer;7import .MalformedURLException;8import .URL;910import org.apache.pdfbox.pdmodel.PDDocument;11import org.apache.pdfbox.util.PDFTextStripper;1213/**14 * 批量转换15 * @author⼤汉16 *17*/18public class BatchPdfToTxt {1920public BatchPdfToTxt() {21super();22// TODO Auto-generated constructor stub23 }2425public static void readPdf(String file) throws Exception {26// 是否排序27boolean sort = false;28// pdf⽂件名29 String pdfFile = file;30// 输⼊⽂本⽂件名称31 String textFile = null;32// 编码⽅式33 String encoding = "UTF-8";34// 开始提取页数35int startPage = 1;36// 结束提取页数37int endPage = Integer.MAX_VALUE;38// ⽂件输⼊流,⽣成⽂本⽂件39 Writer output = null;40// 内存中存储的PDF Document41 PDDocument document = null;42try {43try {44// ⾸先当作⼀个URL来装载⽂件,如果得到异常再从本地⽂件系统//去装载⽂件 45 URL url = new URL(pdfFile);46//注意参数已不是以前版本中的URL.⽽是File。
利用C#批量从pdf中提取图片和文字(亲身实践绝对有效)

最近由于工作原因,需要从pdf中提取里面的图片和文字,网上这方面的资料很少,最后费了九牛二虎之力终于搞定了,用的编程语言是C#,用到的工具包是itextSharp,主要代码如下,希望有相同需求的朋友可以少走些弯路。
方法一:从pdf中提取图片private void ExtractImage(string pdfFile){PdfReader pdfReader = new PdfReader(pdfFile);for (int pageNumber = 1; pageNumber <=pdfReader.NumberOfPages; pageNumber++){PdfReader pdf = new PdfReader(pdfFile);PdfDictionary pg = pdf.GetPageN(pageNumber);PdfDictionary res =(PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));PdfDictionary xobj =(PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));try{foreach (PdfName name in xobj.Keys){PdfObject bj = xobj.Get(name);if (obj.IsIndirect()){PdfDictionary tg =(PdfDictionary)PdfReader.GetPdfObject(obj);string width = tg.Get(PdfName.WIDTH).ToString();string height = tg.Get(PdfName.HEIGHT).ToString();//ImageRenderInfo imgRI =ImageRenderInfo.CreateForXObject((GraphicsState)newMatrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);ImageRenderInfo imgRI =ImageRenderInfo.CreateForXObject(new GraphicsState(), (PRIndirectReference)obj, tg);RenderImage(imgRI);}}}catch{continue;}}}方法二:将图片保存到文件private void RenderImage(ImageRenderInfo renderInfo){count++;PdfImageObject image = renderInfo.GetImage();using (Dotnet dotnetImg = image.GetDrawingImage()){if (dotnetImg != null){using (MemoryStream ms = new MemoryStream()){dotnetImg.Save(ms, ImageFormat.Tiff);Bitmap d = new Bitmap(dotnetImg);d.Save(@"");}}}}方法三:从pdf中提取文本public void ExtractTextFromPDFPage(string pdfFile){PdfReader reader = new PdfReader(pdfFile);int n = reader.NumberOfPages;for (int i = 1; i <= n; i++){string text = PdfTextExtractor.GetTextFromPage(reader, i);}try { reader.Close(); }catch { }}。
Java读取doc、docx、xls、xlsx、ppt、pptx、pdf文件内容

Java读取doc、docx、xls、xlsx、ppt、pptx、pdf⽂件内容读取⽂件信息所需依赖<!-- 读取Excel XLS --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!-- 读取PPT、DOC、Visio --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency><!-- 读取Excel XLSX、PPTX、DOCX、--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><!--读取pdf信息--><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.12</version></dependency><!-- https:///artifact/org.apache.pdfbox/fontbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.12</version></dependency>读取doc⽂件内容public static String readWord(String name){FileInputStream in;String text = null;try{in = new FileInputStream(name);WordExtractor extractor = new WordExtractor(in);text = extractor.getText();}catch (FileNotFoundException e){// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return text;}读取docx⽂件内容public static String readDoc(MultipartFile file) {if (file.isEmpty())return "";WordExtractor wordExtractor = null;try {InputStream inputStream = file.getInputStream();wordExtractor = new WordExtractor(inputStream);} catch (IOException e) {log.warn(e.toString());e.printStackTrace();}return wordExtractor.getText();}读取xls⽂件内容public static String readXls(MultipartFile file) {if (file.isEmpty()) return "";StringBuilder content = new StringBuilder();try {HSSFWorkbook excel = new HSSFWorkbook(file.getInputStream());//获取第⼀个sheetHSSFSheet sheet0 = excel.getSheetAt(0);for (Iterator rowIterator = sheet0.iterator(); rowIterator.hasNext(); ) {HSSFRow row = (HSSFRow) rowIterator.next();for (Iterator iterator = row.cellIterator(); iterator.hasNext(); ) {HSSFCell cell = (HSSFCell) iterator.next();//根据单元的的类型读取相应的结果if (cell.getCellType() == CellType.STRING)content.append(cell.getStringCellValue() + "\t");else if (cell.getCellType() == CellType.NUMERIC|| cell.getCellType() == CellType.FORMULA)content.append(cell.getNumericCellValue() + "\t");elsecontent.append("" + "\t");}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();log.warn(e.toString());}return content.toString();}读取xlsx⽂件内容public static String readXlsx(MultipartFile file) {if (file.isEmpty()) return "";StringBuilder content = new StringBuilder();try {XSSFWorkbook excel = new XSSFWorkbook(file.getInputStream()); //获取第⼀个sheetXSSFSheet sheet0 = excel.getSheetAt(0);for (Iterator rowIterator = sheet0.iterator(); rowIterator.hasNext(); ) { XSSFRow row = (XSSFRow) rowIterator.next();for (Iterator iterator = row.cellIterator(); iterator.hasNext(); ) {XSSFCell cell = (XSSFCell) iterator.next();//根据单元格的类型读取相应的结果if (cell.getCellType() == CellType.STRING)content.append(cell.getStringCellValue() + "\t");else if (cell.getCellType() == CellType.NUMERIC|| cell.getCellType() == CellType.FORMULA)content.append(cell.getNumericCellValue() + "\t");elsecontent.append("" + "\t");}}} catch (Exception e) {e.printStackTrace();log.warn(e.toString());}return content.toString();}读取pdf⽂件内容/*** 读取 PDF⽂本内容** @Param: MultipartFile* @return: pdf⽂本内容*/public static String readPdf(MultipartFile file) {StringBuilder content = new StringBuilder();try {InputStream is = file.getInputStream();PDFParser parser = new PDFParser(new RandomAccessBuffer(is)); parser.parse();// 读取⽂本内容PDDocument document = parser.getPDDocument();// 获取页码int pages = document.getNumberOfPages();PDFTextStripper stripper = new PDFTextStripper();// 设置按顺序输出stripper.setSortByPosition(true);stripper.setStartPage(1);stripper.setEndPage(pages);content.append(stripper.getText(document));} catch (Exception e) {e.printStackTrace();log.warn(e.toString());}return content.toString();}PDF⽂件加载有两种⽅式,⽆明显差异,⽅式⼆代码较简洁:// ⽅式⼀:InputStream input = null;input = new FileInputStream( pdfFile );//加载 pdf ⽂档PDFParser parser = new PDFParser(new RandomAccessBuffer(input));parser.parse();document = parser.getPDDocument();// ⽅式⼆:document=PDDocument.load(pdfFile);读取ppt⽂件内容public static String readPPT(MultipartFile file) {if (file.isEmpty()) return "";StringBuilder content = new StringBuilder();try {InputStream is = file.getInputStream();HSLFSlideShow hslfSlideShow = new HSLFSlideShow(is);List<HSLFSlide> slides = hslfSlideShow.getSlides();SlideShowExtractor slideShowExtractor = new SlideShowExtractor(hslfSlideShow); for (HSLFSlide slide : slides) {content.append(slideShowExtractor.getText(slide));}slideShowExtractor.close();} catch (IOException e) {log.warn(e.toString());e.printStackTrace();}return content.toString();}读取pptx⽂件内容public static String readPPTX(MultipartFile file) {if (file.isEmpty()) return "";StringBuffer content = new StringBuffer();try {InputStream is = file.getInputStream();XMLSlideShow xmlSlideShow = new XMLSlideShow(is);List<XSLFSlide> slides = xmlSlideShow.getSlides(); //获得每⼀张幻灯⽚for (XSLFSlide slide : slides) {CTSlide rawSlide = slide.getXmlObject();CTGroupShape spTree = rawSlide.getCSld().getSpTree();List<CTShape> spList = spTree.getSpList();for (CTShape shape : spList) {CTTextBody txBody = shape.getTxBody();if (null == txBody) {continue;}List<CTTextParagraph> pList = txBody.getPList();for (CTTextParagraph textParagraph : pList) {List<CTRegularTextRun> textRuns = textParagraph.getRList();for (CTRegularTextRun textRun : textRuns) {content.append(textRun.getT());}}}}xmlSlideShow.close();} catch (Exception e) {e.printStackTrace();}return content.toString();}。
java查找替换pdf中的指定文本

java查找替换pdf中的指定⽂本本⽂介绍通过Java程序批量替换PDF中的指定⽂本内容。
程序环境准备如下:程序使⽤环境如图,需要注意的是,本⽂使⽤了免费版的PDF jar⼯具;另外JDK版本建议使⽤⾼版本更佳。
jar⽂件导⼊后,可调⽤Spire.PDF提供的接⼝、⽅法等操作PDF,参考如下导⼊结果:注:可⼿动下载jar包。
下载后,解压⽂件,将lib⽂件夹下的Spire.Pdf.jar⽂件导⼊Java程序。
Java 代码⽰例import com.spire.pdf.*;import com.spire.pdf.general.find.PdfTextFind;import com.spire.pdf.general.find.PdfTextFindCollection;import com.spire.pdf.graphics.PdfBrushes;import com.spire.pdf.graphics.PdfRGBColor;import com.spire.pdf.graphics.PdfSolidBrush;import com.spire.pdf.graphics.PdfTrueTypeFont;import java.awt.*;import java.awt.geom.Rectangle2D;public class FindAndReplaceText {public static void main(String[] args) {//加载⽰例PDF⽂档PdfDocument pdf = new PdfDocument();pdf.loadFromFile("咖啡⾖.pdf");//遍历⽂档每⼀页for (int i = 0; i < pdf.getPages().getCount(); i++){//获取所有页⾯PdfPageBase page = pdf.getPages().get(i);//查找指定⽂本PdfTextFindCollection textFindCollection;textFindCollection = page.findText("咖啡",false);//创建画刷、字体PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.red));PdfTrueTypeFont font1= new PdfTrueTypeFont(new Font("宋体",Font.PLAIN,9),true);//⽤新的⽂本字符替换原有⽂本Rectangle2D rec;for(PdfTextFind find: textFindCollection.getFinds()){rec = find.getBounds();page.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);page.getCanvas().drawString("Coffee", font1, brush1, rec);}}//保存⽂档pdf.saveToFile("FindAndReplaceText.pdf");pdf.close();}}⽂本替换前后效果:以上就是java 查找替换pdf中的指定⽂本的详细内容,更多关于java 查找替换⽂本的资料请关注其它相关⽂章!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 提取PDF中文本和图片
PDF常携带大量且还原度高的信息内容,有时为了获得一些必要的数据我们需要从PDF 中读取文本和图片信息。
下面这篇文章将介绍通过Java实现提取PDF的文本和图片。
工具使用:
●Free Spire Pdf for Java 2.4.4 (免费版)
●Intellij IDEA
导入Jar 包:
首先,获取Free Spire.PDF for Java之后解压,以下是三种方式在IDEA中快速打开Project Structure界面;如下图:
然后:①选择“Modules”—“Dependencies”,添加外置jar包;②进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③勾选jar路径选项,点击”OK”/”Apply”;④导入完成。
如下图:
测试源文档参考如下:
Java 代码示例参考:
【示例 1】提取PDF 中文本内容
步骤一:添加命名空间; import com.spire.pdf.*; import java.io.FileWriter ;
步骤二:创建PDF实例和加载PDF源文件;
//创建PDF实例
PdfDocument doc = new PdfDocument();
//加载PDF源文件
doc.loadFromFile("data/PDF_3.pdf");
步骤三:使用StringBuilder方法定义一个字符缓冲区实例,for循环遍历整个PDF文档;
// 遍历PDF文档
StringBuilder buffer = new StringBuilder();
for(int i = 1; i<doc.getPages().getCount(); i++){
PdfPageBase page = doc.getPages().get(i);
buffer.append(page.extractText());
}
步骤四:定义一个writer实例将数据写到缓冲区,使用write()将缓冲区的数据写入text.txt 文件并保存。
//保存文本
String fileName = "output/text.txt";
FileWriter writer = new FileWriter(fileName);
writer.write(buffer.toString());
writer.flush();
writer.close();
文本提取结果:
【示例2】提取PDF中图片
步骤1:添加命名空间;
import com.spire.pdf.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
步骤2:创建PDF实例和加载PDF源文件。
//创建一个PDF实例
PdfDocument pdf = new PdfDocument();
//加载PDF源文档
pdf.loadFromFile("data/PDF_3.pdf");
步骤3:for循环遍历PDF每一页,使用extractImages()方法获取指定页上的图片,最后以PNG格式保存图片。
//声明一个变量
int index = 0;
//遍历每一页PDF
for (int i= 0;i< pdf.getPages().getCount(); i ++){
//获取PDF文档页码
PdfPageBase page = pdf.getPages().get(i);
//提取图片
for (BufferedImage image : page.extractImages()) {
//确定路径和名称
File output = new File("output/" + String.format("Image_%d.png", index++));
//以png格式保存文件
ImageIO.write(image, "PNG", output);
}
}
图片提取主要结果:
(本文完)。