`
longhuiping
  • 浏览: 19585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用pdfbox解析pdf文档信息(属性,内容,图片)

阅读更多
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/");
	}
}

分享到:
评论
4 楼 ruijf 2013-04-07  
为什么我一份pdf提取的图片有的全是黑色的?有的正常的
3 楼 hntjzln 2011-10-27  
非常好,正好用,顺便问下,怎么获取表格
2 楼 wangruiyingdemama 2011-07-31  
  帮忙解决了一个大问题!!!!
1 楼 小小流浪猪 2010-09-26  
3Q

相关推荐

    【Java】基于Pdfbox解析PDF文档中指定位置的文字和图片

    我们可以使用PDFBox开发可以创建,转换和操作PDF文档的Java程序。PDFBox的主要功能: Extract Text – 使用PDFBox,您可以从PDF文件中提取Unicode文本。 Split & Merge – 使用PDFBox,您可以将单个PDF文件分成多个...

    pdfbox java解析pdf文档jar包+源代码+帮助文档+example

    pdfbox java解析pdf文档jar包+源代码+帮助文档+example

    itext5.5.12和pdfbox源码及文档和解析工具

    itext5.5.12源码、pdfbox2.012源码。 itext官方文档(英文)。 itext签名验签官方文档(英文)。 itext解析PDF结构工具。 pdfbox解析PDF结构工具。

    java读取pdf的文字、图片、线条和对应坐标

    pdf文档的内容都是坐标定位的,文档内容主要包含文本、图片、线条;需要用到pdfbox和pdf2dom两个依赖包

    毕设 Lucene解析索引PDF文档的内容

    ----使用iText解析PDF 文档代码 PDFBoxHello.java ----------- --PDFBox测试代码 PDFBoxLuceneIndex.java ------ --PDFBox创建PDF文件的Lucene索引 PDFBoxPathIndex.java ------- --PDFBox创建指定目录PDF文档...

    PDF解析需要的jar(pdfBox2.0)

    这是个奇怪的现象,因为PDF文档是企业信息系统存储和交换信息的大势所趋,而Java技术特别适合这种应用。然而,Java开发人员似乎直到最近才获得成熟可用的PDF支持。  PDFBox(一个BSD许可下的源码开放项目)是一个为...

    Java实现PDF文档添加水印信息.pptx.pptx

    PDFBox是一个开源的Java库,可以用于创建、编辑和提取PDF文档的内容。它提供了丰富的API,方便开发者进行各种操作,如添加水印、合并文档等。 使用iText库处理PDF文档 iText是一个功能强大的Java库,专门用于处理PDF...

    PDFBox源文件和帮助文档+jar包0.7.3

    很全,还有pdfbox的类文件呢,还有jar包,解析pdf文件必备。没分了,下完之后又传上来滴...

    pdfbox资源jar

    pdfbox java解析pdf文档jar包 必须一分某有办法,随意;pdfbox java解析pdf文档jar包 必须一分某有办法,随意

    pdfbox-0.7.3

    pdfbox-0.7.3.jar包,用于解析pdf文档,读取文档内容。

    PDFBox jar包

    pdf文档解析工具类,pdfbox工具jar包

    解析器:将PDF,文档和图像转换为丰富的结构化数据

    | | | Parsr是一个最小的文档(图像,pdf,docx,eml )清洗,解析和提取工具链,可生成JSON,Markdown(MD),CSV / Pandas DF或TXT格式的随时可用,有组织且可用的数据。 它为分析,数据科学家和开发人员提供了...

    OFD转换PDF、IMG、SVG、HTML工具JAR包

    PDF转换: 通过对OFD的文档进行解析,使用 Apache Pdfbox生成并转换OFD中的元素为PDF内的元素实现PDF的转换。 图片转换: 通过对OFD的文档进行解析,采用java.awt绘制图片,支持转换为PNG、JPEG图片格式。 SVG矢量...

    pdfbox+fontbox(1.8.9)

    最新的pdfbox+fontbox jar包,可用来解析pdf文档中的上一页、下一页、文本值。pdf转txt。相当不错,推荐给大家

    Apache PDFbox

    PDFbox 是apache 下 用于解析 PDF 文档的开源工具,非常实用于 JAVA 下解析PDF文档

    PDF文件解析工具及说明文档

    用于pdf解析,包含SpirePDF PDFBOX

    apache.pdfbox 所需架包 1.8版本

    apache.pdfbox 所需架包 1.8版本 ,方便pdf解析为txt文档。

    PDFBox jar包-Java工具类资源

    pdf文档解析工具类,pdfbox工具jar包 pdf文档解析工具类,pdfbox工具jar包 pdf文档解析工具类,pdfbox工具jar包 pdf文档解析工具类,pdfbox工具jar包

    PDFBox.jar

    非常强悍的PDF生成和解析Java类库,以上PDFBox文档是核心jar包

    pdf到markdown:PDF到Markdown转换器

    使用Javascript工具解析PDF文件并将其转换为Markdown格式。 在线版本位于 ! 主要变化 2017年4月-0.1:初始版本 有助于 使用和/或打开! 有用的构建命令 npm install下载所有必需的npm软件包 npm run lint Lint的...

Global site tag (gtag.js) - Google Analytics