import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
import org.apache.pdfbox.util.PDFTextStripper;
/**
* 使用 pdfbox 解析pdf 文档信息
* @author longhuiping
*
*/
public class PDFParse {
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
/**
* 解析pdf文档信息
* @param pdfPath pdf文档路径
* @throws Exception
*/
public static void pdfParse( String pdfPath, String imgSavePath ) throws Exception
{
InputStream input = null;
File pdfFile = new File( pdfPath );
PDDocument document = null;
try{
input = new FileInputStream( pdfFile );
//加载 pdf 文档
document = PDDocument.load( input );
/** 文档属性信息 **/
PDDocumentInformation info = document.getDocumentInformation();
System.out.println( "标题:" + info.getTitle() );
System.out.println( "主题:" + info.getSubject() );
System.out.println( "作者:" + info.getAuthor() );
System.out.println( "关键字:" + info.getKeywords() );
System.out.println( "应用程序:" + info.getCreator() );
System.out.println( "pdf 制作程序:" + info.getProducer() );
System.out.println( "作者:" + info.getTrapped() );
System.out.println( "创建时间:" + dateFormat( info.getCreationDate() ));
System.out.println( "修改时间:" + dateFormat( info.getModificationDate()));
//获取内容信息
PDFTextStripper pts = new PDFTextStripper();
String content = pts.getText( document );
System.out.println( "内容:" + content );
/** 文档页面信息 **/
PDDocumentCatalog cata = document.getDocumentCatalog();
List pages = cata.getAllPages();
int count = 1;
for( int i = 0; i < pages.size(); i++ )
{
PDPage page = ( PDPage ) pages.get( i );
if( null != page )
{
PDResources res = page.findResources();
//获取页面图片信息
Map imgs = res.getImages();
if( null != imgs )
{
Set keySet = imgs.keySet();
Iterator it = keySet.iterator();
while( it.hasNext() )
{
Object obj = it.next();
PDXObjectImage img = ( PDXObjectImage ) imgs.get( obj );
img.write2file( imgSavePath + count );
count++;
}
}
}
}
}catch( Exception e)
{
throw e;
}finally{
if( null != input )
input.close();
if( null != document )
document.close();
}
}
/**
* 获取格式化后的时间信息
* @param dar 时间信息
* @return
* @throws Exception
*/
public static String dateFormat( Calendar calendar ) throws Exception
{
if( null == calendar )
return null;
String date = null;
try{
String pattern = DATE_FORMAT;
SimpleDateFormat format = new SimpleDateFormat( pattern );
date = format.format( calendar.getTime() );
}catch( Exception e )
{
throw e;
}
return date == null ? "" : date;
}
public static void main( String [] args ) throws Exception{
pdfParse("f:/pdf/1.pdf","f:/pdfimg/");
}
}
分享到:
相关推荐
我们可以使用PDFBox开发可以创建,转换和操作PDF文档的Java程序。PDFBox的主要功能: Extract Text – 使用PDFBox,您可以从PDF文件中提取Unicode文本。 Split & Merge – 使用PDFBox,您可以将单个PDF文件分成多个...
pdfbox java解析pdf文档jar包+源代码+帮助文档+example
itext5.5.12源码、pdfbox2.012源码。 itext官方文档(英文)。 itext签名验签官方文档(英文)。 itext解析PDF结构工具。 pdfbox解析PDF结构工具。
pdf文档的内容都是坐标定位的,文档内容主要包含文本、图片、线条;需要用到pdfbox和pdf2dom两个依赖包
----使用iText解析PDF 文档代码 PDFBoxHello.java ----------- --PDFBox测试代码 PDFBoxLuceneIndex.java ------ --PDFBox创建PDF文件的Lucene索引 PDFBoxPathIndex.java ------- --PDFBox创建指定目录PDF文档...
这是个奇怪的现象,因为PDF文档是企业信息系统存储和交换信息的大势所趋,而Java技术特别适合这种应用。然而,Java开发人员似乎直到最近才获得成熟可用的PDF支持。 PDFBox(一个BSD许可下的源码开放项目)是一个为...
PDFBox是一个开源的Java库,可以用于创建、编辑和提取PDF文档的内容。它提供了丰富的API,方便开发者进行各种操作,如添加水印、合并文档等。 使用iText库处理PDF文档 iText是一个功能强大的Java库,专门用于处理PDF...
很全,还有pdfbox的类文件呢,还有jar包,解析pdf文件必备。没分了,下完之后又传上来滴...
pdfbox java解析pdf文档jar包 必须一分某有办法,随意;pdfbox java解析pdf文档jar包 必须一分某有办法,随意
pdfbox-0.7.3.jar包,用于解析pdf文档,读取文档内容。
pdf文档解析工具类,pdfbox工具jar包
| | | Parsr是一个最小的文档(图像,pdf,docx,eml )清洗,解析和提取工具链,可生成JSON,Markdown(MD),CSV / Pandas DF或TXT格式的随时可用,有组织且可用的数据。 它为分析,数据科学家和开发人员提供了...
PDF转换: 通过对OFD的文档进行解析,使用 Apache Pdfbox生成并转换OFD中的元素为PDF内的元素实现PDF的转换。 图片转换: 通过对OFD的文档进行解析,采用java.awt绘制图片,支持转换为PNG、JPEG图片格式。 SVG矢量...
最新的pdfbox+fontbox jar包,可用来解析pdf文档中的上一页、下一页、文本值。pdf转txt。相当不错,推荐给大家
PDFbox 是apache 下 用于解析 PDF 文档的开源工具,非常实用于 JAVA 下解析PDF文档
用于pdf解析,包含SpirePDF PDFBOX
apache.pdfbox 所需架包 1.8版本 ,方便pdf解析为txt文档。
pdf文档解析工具类,pdfbox工具jar包 pdf文档解析工具类,pdfbox工具jar包 pdf文档解析工具类,pdfbox工具jar包 pdf文档解析工具类,pdfbox工具jar包
非常强悍的PDF生成和解析Java类库,以上PDFBox文档是核心jar包
使用Javascript工具解析PDF文件并将其转换为Markdown格式。 在线版本位于 ! 主要变化 2017年4月-0.1:初始版本 有助于 使用和/或打开! 有用的构建命令 npm install下载所有必需的npm软件包 npm run lint Lint的...