最近在帮公司做工具,需要读取PDF中表格的数据。网上查了,大部分PDFBox读取的代码都大致相同,一行一行从头读到尾。尝试读取PDF表格的人可能会遇到表格有空数据时,列与列就会对不齐,这样就不能很好地进行数据的处理了。网上看到一个例子,用iText坐标精确读取的例子,参考以后出现了亚洲语种字体不支持,添加了语言包iTextAsian.jar导入字体后,结果发现打印的都是空格无法处理。后找到了PDFBox坐标读取的方法,相当给力。在此过程中了解到有很多人遇到了我这样的问题。所以写下来望对现在还未解决问题还有以后遇到此问题的人提供帮助。
上代码:
package com.pdfbox.util.test;
import org.apache.pdfbox.exceptions.InvalidPasswordException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.util.PDFTextStripperByArea;
import java.awt.Rectangle;
import java.util.List;
public class ExtractTextByArea
{
private ExtractTextByArea()
{
}
public static void main( String[] args ) throws Exception
{
String file = "H:\123.pdf";
PDDocument document = null;
try
{
document = PDDocument.load( file);
if( document.isEncrypted() )
{
try
{
document.decrypt( "" );
}
catch( InvalidPasswordException e )
{
System.err.println( "Error: Document is encrypted with a password." );
System.exit( 1 );
}
}
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition( true );
Rectangle rect = new Rectangle( 10, 280, 275, 60 );
stripper.addRegion( "class1", rect );
List allPages = document.getDocumentCatalog().getAllPages();
PDPage firstPage = (PDPage)allPages.get( 0 );
stripper.extractRegions( firstPage );
System.out.println( "Text in the area:" + rect );
System.out.println( stripper.getTextForRegion( "class1" ) );
}
finally
{
if( document != null )
{
document.close();
}
}
}
}
PDFBox.jar最好用1.7及以上版本的,它包含了fontbox和jempbox等辅助包。希望能帮助一些人解决问题。
---------------------
作者:bacoder
来源:CSDN
原文:https://blog.csdn.net/bacoder/article/details/43536157
版权声明:本文为博主原创文章,转载请附上博文链接!
首先:我们要了解以下的代码含义:
Rectangle rectFirstPage = new Rectangle( 220, 130, 130, 900 );
他其实对应的就是以下图示内容:
其次:上代码
PDDocument document = PDDocument.load(new File("E:\\2018workFolderShun\\chinaCC测试\\财务\\2017-4分类.pdf"));
PDFTextStripper textStripper = new PDFTextStripper();
// System.out.println(textStripper.getText(document));
// document.close();
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition( true );
Rectangle rectFirstPage = new Rectangle( 220, 130, 130, 900 );
stripper.addRegion( "class1", rectFirstPage );
PDPageTree allPages = document.getDocumentCatalog().getPages();
PDPage firstPage = (PDPage)allPages.get(0);
stripper.extractRegions( firstPage );
System.out.println( stripper.getTextForRegion( "class1" ) );
System.err.println("-------------------------------");
Rectangle rectFrom2 = new Rectangle( 220, 70, 130, 900 );
stripper.addRegion( "class1", rectFrom2 );
for (int i = 1; i < allPages.getCount(); i++) {
firstPage = (PDPage)allPages.get(i);
stripper.extractRegions( firstPage );
System.out.println( stripper.getTextForRegion( "class1" ) );
}
最后:依赖包
---------------------
作者:顺子在帝都2017
来源:CSDN
原文:https://blog.csdn.net/shunzi2016/article/details/80243262
版权声明:本文为博主原创文章,转载请附上博文链接!
任务是提取pdf文件中的数据,并将其转化到csv格式的文件中。
首先用到的工具为开源jar包:pdfbox,由于pdf中没有表结构,且要提取的pdf文件格式固定,pdfbox提供extractbyarea方法,所以通过坐标可以提取表格中每一列的数据,好像方法挺笨的,但是没找到其他跟好的方法。
关于java操作pdf,在网上看到好多人说itext比pdfbox方便,功能强大,但是itext好像只是在生成pdf文件时比较方便,图表插入很方便,但是不太适合读取pdf中的信息。
然后是将提取的信息保存到csv文件中,居然还有个开源的javacsv.jar,用起来还是比较方便的
---------------------
作者:dragonfly
来源:CSDN
原文:https://blog.csdn.net/fan_long_fei/article/details/38335225
版权声明:本文为博主原创文章,转载请附上博文链接!
相关推荐
在本示例中,我们将专注于如何使用PDFBox读取PDF的内容。 首先,你需要在你的项目中引入PDFBox库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.pdfbox <artifactId>...
总结来说,C#中使用PDFBox读取PDF并转换为TXT文件,主要涉及以下步骤: 1. 引入IKVM.NET和PDFBox的Java库。 2. 初始化Java虚拟机。 3. 加载PDF文件并创建`PDDocument`对象。 4. 使用`PDFTextStripper`提取PDF文本。 ...
Apache PDFBox是一个开源Java库,支持PDF文档的开发和转换。 我们可以使用PDFBox开发可以创建,转换和操作PDF文档的Java程序。PDFBox的主要功能: Extract Text – 使用PDFBox,您可以从PDF文件中提取Unicode文本。 ...
pdf文档的内容都是坐标定位的,文档内容主要包含文本、图片、线条;需要用到pdfbox和pdf2dom两个依赖包
利用pdfbox读取pdf内容 ,对于大部分未加过密或不是用图片生成的pdf能读出来. 引入pdfbox-app-2.0.12, IKVM.Runtime, IKVM.OpenJDK.Util, IKVM.OpenJKD.Text IKVM.OpenJKD.SwingAWT IKVM.OpenJKD.Core 后运行按照...
使用PDFBox读取PDF数据的基本步骤如下: ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; public class PdfBoxExample { public static void main(String...
在Java编程环境中,读取PDF文件中的内容是一个常见的任务,特别是在处理文档自动化或者数据分析时。PDF(Portable Document Format)是一种跨平台的文件格式,用于精确地保留文档的格式和内容。下面将详细介绍如何...
在这个场景中,可能需要读取PDF中的特定数据,如表格或文本段落,然后进行后续处理。 3. **批量插入**:为了高效地将大量数据(38万条)插入数据库,一般会采用批量操作,而不是一条一条插入。Java的JDBC API支持...
2. 使用Apache PDFBox读取PDF: ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; public class PdfReaderExampleWithPDFBox { public static void main...
下面我们将深入探讨如何使用C#和PDFBox的IKVM版本来读取PDF文件: 1. **安装IKVM**: 首先,你需要获取PDFBox的Java库,并且下载IKVM的.NET版本。将IKVM的dll文件添加到你的C#项目引用中,同时也要包含PDFBox的Java...
以下是一个使用Apache PDFBox读取PDF文件内容的基本示例: ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; public class ReadPDF { public static void ...
总之,Java通过iText和PDFBox等库,提供了强大而灵活的工具来创建和读取PDF文档。理解并熟练运用这些库,可以方便地进行PDF文件的处理工作。在实际项目中,根据需求选择合适的库和方法,能大大提高开发效率。
本文将详细介绍如何使用Apache POI库来操作docx文件,以及使用其他的Java库如iText或Apache PDFBox将docx转换为PDF。 首先,Apache POI是一个流行的API,它允许Java程序员读取、写入和修改Microsoft Office格式的...
标题中的“dotnet-PdfPig从C中读取PDF中的文本内容PdfBox的移植”表明这是一个关于.NET框架下的PDF处理库PdfPig的使用教程,特别提到了它是PdfBox的一个移植版本。PdfBox是Java平台上用于处理PDF文档的开源库,而...
`getText`方法读取PDF的内容,并将其转换为纯文本,最后打印出来。确保替换`"path_to_your_pdf.pdf"`为实际PDF文件的路径。 值得注意的是,PDFBox库可以处理各种复杂的PDF结构,包括表格、图像和多语言文本。但是,...
#### 四、读取PDF文档 对于PDF文档,可以使用Apache PDFBox库来读取内容。 ##### 1. 引入依赖 如果你使用Maven,可以在`pom.xml`文件中添加以下依赖: ```xml <groupId>org.apache.pdfbox <artifactId>pdfbox...
- 读取内容:读取PDF文件时,可以逐页解析,获取页面上的文本、图像、表格等元素。例如,使用PDFBox,可以创建`PDDocument`对象来加载PDF,然后遍历`PDPage`对象获取页面内容。 - 提取信息:如果需要提取文本,...