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

iText 读取pdf的各级标题和标题对应页码

阅读更多
   因为要做全文检索的项目,需要获取pdf文件的指定标题和标题对应的页码,上网查了相关资料,决定用iText开发包,废话不多说直接上代码。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.SimpleBookmark;
 
public class TestPdf {
	
   public static void main ( String [] args ) throws Exception {
     PdfReader reader = new PdfReader ( "e:/test.pdf" ) ;
     List<HashMap<String, Object>> list = SimpleBookmark.getBookmark ( reader ) ;
 
     for ( Iterator<HashMap<String, Object>> i = list.iterator () ; i.hasNext () ; ) {
   
       showBookmark ( i.next ()) ;
      
     }
     for ( Iterator<HashMap<String, Object>> i = list.iterator () ; i.hasNext () ; ) {

    	   getPageNumbers( i.next ());
       }

   }
 //获取标题
   private static void showBookmark ( HashMap<String, Object> bookmark) {
	   System.out.println (bookmark.get ( "Title" )) ;  
     @SuppressWarnings("unchecked")
	ArrayList<HashMap<String, Object>> kids =  (ArrayList<HashMap<String, Object>>) bookmark.get ( "Kids" ) ;
     if ( kids == null )
       return ;
     for ( Iterator<HashMap<String, Object>> i = kids.iterator () ; i.hasNext () ; ) {
    
        showBookmark ( i.next ()) ;
     }
   }
   
  //获取页码
   public static void getPageNumbers(HashMap<String, Object> bookmark) {
       if (bookmark == null)
           return;
       
           if ("GoTo".equals(bookmark.get("Action"))) {

               String page = (String)bookmark.get("Page");
               if (page != null) {

                   page = page.trim();

                   int idx = page.indexOf(' ');

                   int pageNum;

                   if (idx < 0){

                       pageNum = Integer.parseInt(page);
                       System.out.println ("pageNum :"+ pageNum) ;    
                   }
                   else{
            
                       pageNum = Integer.parseInt(page.substring(0, idx));
                       System.out.println ("pageNum:" +pageNum) ;    
                   }
               }
               @SuppressWarnings("unchecked")
			ArrayList<HashMap<String, Object>> kids =  (ArrayList<HashMap<String, Object>>) bookmark.get ( "Kids" ) ;
               if ( kids == null )
                 return ;
               for ( Iterator<HashMap<String, Object>> i = kids.iterator () ; i.hasNext () ; ) {

            	   getPageNumbers ( i.next ()) ;
                }

               }  
       }
  
}

分享到:
评论

相关推荐

    Android使用iText生成pdf并读取pdf内容

    在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...

    itext7 pdf转图片

    在IT行业中,iText是一个广泛使用的Java和.NET库,用于创建、编辑和处理PDF文档。在最新的版本iText 7中,它提供了丰富的功能,包括将PDF文档转换为图像。这个话题涉及到PDF处理和图像转换两个核心领域。下面将详细...

    itext 生成pdf 目录

    iText 是一个强大的Java库,专门用于创建和修改PDF文档。在PDF文档中,目录(或书签)是用户友好的导航工具,可以帮助读者快速跳转到特定章节或页面。本篇文章将深入探讨如何使用iText来生成PDF的目录。 首先,理解...

    使用IText生成PDF和WORD文档

    IText是一款广泛使用的Java库,专门用于创建和编辑PDF及Word文档。在本文中,我们将深入探讨如何利用IText库生成这两种格式的文档,并通过实际的源码示例来理解其工作原理。 首先,让我们从PDF(Portable Document ...

    iText_pdf.rar_iText pdf_itext PDF类

    标题中的“iText_pdf.rar_iText pdf_itext PDF类”表明这是一个关于iText的压缩包,包含了与创建PDF相关的源代码和示例。 iText的核心功能包括但不限于以下几点: 1. **文本和图像处理**:你可以使用iText向PDF中...

    Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)

    本文将深入探讨如何使用iText7这个库在Java环境中生成带有页码和目录的PDF文件。 iText7是一款功能丰富的PDF处理库,它支持创建、编辑、解析和展示PDF文档。在Java中,我们可以利用iText7轻松地生成具有复杂结构的...

    iText7 html转换为pdf生成页码、页眉、页脚DEMO

    itext7 html转换为pdf;iText7页码、页眉、页脚,itext 的复杂表格实现;完整springboot项目代码

    itextpdf 导出pdf 表格 自动分页中文 目录

    iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...

    Itext删除PDF的图层

    总的来说,"Itext删除PDF的图层"涉及到PDF的高级特性,需要对PDF标准和Itext库有深入理解。通过`OCGParser`和`OCGRemover`这两个类,我们可以有效地管理和定制PDF文档的内容,满足特定场景的需求。

    itext实现pdf打印之二

    iText是一款强大的开源Java库,用于处理PDF文档,包括创建、编辑、读取和打印PDF文件。本篇文章将深入探讨如何使用iText库进行PDF打印。 首先,我们需要了解iText的基本概念。iText提供了PDFDocument、PDFPage、PDF...

    iText操作Pdf简单整理

    在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText的主要库,包含了处理PDF文档的核心功能。如果需要处理中文字符或者亚洲语言,还需要引入`itext-asian-5.1.0.jar.zip`解压后...

    java使用itext导出PDF文本绝对定位(实现方法)

    java使用iText导出PDF文本绝对定位(实现方法) iText是一个流行的Java类库,用于生成PDF文档。下面我们将探讨如何使用iText在Java中导出PDF文本,并实现绝对定位。 iText简介 iText是一个开源的Java类库,用于...

    利用ITEXT、PDFBOX将PDF转为图片

    2. **读取PDF**:使用ITEXT,你可以通过`PdfReader`类打开并读取PDF文档。`PdfReader`对象提供了访问PDF页面的方法。 ```java PdfReader reader = new PdfReader("path_to_your_pdf"); ``` 3. **获取PDF页面**:...

    c# winform Itext 实现PDF导出简单demo

    在C# WinForm应用中,Itext库是一个强大的工具,用于创建、编辑和管理PDF文档。这个简单的demo展示了如何利用Itext库将数据导出为PDF格式,非常适合初学者理解和实践。下面,我们将深入探讨这个知识点,以及如何一...

    itextpdf.jar

    本文将深入探讨iTextPDF的核心功能和应用。 iTextPDF,这个名字源自荷兰语“tekst”,意为“文本”,它由iText Software公司开发,是一个开放源代码的PDF库,主要支持Java和.NET平台。iTextPDF提供了一整套API,...

    Itext生成PDF所需要的最全Jar包

    - `itextpdf`:这个模块是Itext的主要接口,包含了生成PDF所需的主要API。你可以使用这些API创建新的PDF文档,或者对已有的PDF进行操作。 在实际使用中,你需要将这些Jar包添加到你的项目类路径中,然后就可以通过...

    springboot使用itext生成pdf并保存到本地

    &lt;artifactId&gt;itextpdf &lt;version&gt;5.5.13 ``` 接下来,我们需要一个HTML页面作为PDF的源内容。你可以使用任何你喜欢的方式(如Thymeleaf或Freemarker)来创建HTML,然后使用iText的HTML-to-PDF转换功能将其转换为...

    java使用itext实现pdf文件下载

    &lt;artifactId&gt;itextpdf &lt;version&gt;5.5.13 ``` 接下来,我们将探讨如何生成PDF文件。以下是一个简单的例子,展示如何创建一个包含简单文本的PDF文档: ```java import com.itextpdf.text.Document; import ...

    itext生成PDF开发文档

    2. `io` - 提供了输入/输出操作,如读取和写入 PDF 文件。 3. `layout` - 包含布局元素,如段落、表格和列表,以及对它们的样式控制。 4. `forms` - 支持 PDF 表单的创建和处理。 5. `pdfa` - 用于创建符合 PDF/A ...

    freemarker+itext生成PDF

    4. **生成PDF**:使用Itext读取FreeMarker处理后的结果,并将其转换为PDF文档。 在给定的文件列表中,`pom.xml`可能是Maven项目的依赖管理文件,其中会包含FreeMarker和Itext的依赖项。`src`则包含了源代码,可能...

Global site tag (gtag.js) - Google Analytics