Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 使用iText读取PDF文档目录列表(zz)

Java 使用iText读取PDF文档目录列表(zz)

作者头像
forrestlin
发布于 2022-04-02 02:16:19
发布于 2022-04-02 02:16:19
2.3K0
举报
文章被收录于专栏:蜉蝣禅修之道蜉蝣禅修之道

iText是一个十分强大的用java操作pdf的类库,可以读取和写入pdf,以下是使用iText读取pdf目录结构的方法。

public class HelloWorldBookmarks {  public static void main ( String [] args ) throws Exception {  PdfReader reader = new PdfReader ( "test.pdf" ) ;  List list = SimpleBookmark.getBookmark ( reader ) ;  for ( Iterator i = list.iterator () ; i.hasNext () ; ) {  showBookmark (( Map ) i.next ()) ;  }  }

 private static void showBookmark ( Map bookmark ) {  System.out.println ( bookmark.get ( "Title" )) ;  ArrayList kids = ( ArrayList ) bookmark.get ( "Kids" ) ;  if ( kids == null )  return ;  for ( Iterator i = kids.iterator () ; i.hasNext () ; ) {  showBookmark (( Map ) i.next ()) ;  }  }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
J2SE1.5的新特点(之一)
J2SE1.5的新特点<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> <?xml:namesp
田春峰-JCJC错别字检测
2019/02/14
5430
Java面试集合(二)
4.简单说说String类和StringBuffer类之间的区别? 答:String类是不可变的类,字符串一旦被初始化就不可能改变;StringBuffer是可变的字符串类,可以修改字符串的值。
达达前端
2019/07/03
3980
五、集合基础【黑马JavaSE笔记】
注:以上方法时List集合特有的方法,Collection集合没有这些方法,但是ArrayLIst集合有这些方法,因为ArrayList继承自List集合。
啵啵鱼
2022/11/23
7580
五、集合基础【黑马JavaSE笔记】
第50节:Java当中的泛型
这就存在一个问题,如果集合存储元素时,而且存储对象有很多,而且对象类型不相同,就很容易导致隐患。
达达前端
2019/07/03
6960
第50节:Java当中的泛型
【小家java】java5新特性(简述十大新特性) 重要一跃
所谓类型擦除指的就是Java源码中的范型信息只允许停留在编译前期,而编译后的字节码文件中将不再保留任何的范型信息。也就是说,范型信息在编译时将会被全部删除,其中范型类型的类型参数则会被替换为Object类型,并在实际使用时强制转换为指定的目标数据类型。而C++中的模板则会在编译时将模板类型中的类型参数根据所传递的指定数据类型生成相对应的目标代码。
YourBatman
2019/09/03
5650
Java 基础 -- 泛型、集合、IO、反射
计划把 Java 基础的有些部分再次看一遍,巩固一下,下面以及以后就会分享自己再次学习的一点笔记!不是有关标题的所有知识点,只是自己觉得模糊的一些知识点。 1.  对于泛型类而言,你若没有指明其类型,默认为Object; 2.  在继承泛型类以及接口的时候可以指明泛型的类型,也可以不指明; 3.   泛型也数据库中的应用:       写一个 DAO 类对数据库中的数据进行增删改查其类型声明为 <T> 。每张表对应一个类,对应每一张表实现一个类继承该 DAO 类并指明 DAO 泛型为该数据表对应的类,再实现
bgZyy
2018/05/16
9540
String、StringBuffer、StringBuilder三者之间的区别
String是不可变类,所以任何对String的操作都将引发新的String对象的生成。但是StringBuffer是可变类,任何对StringBuffer所指代的字符串改变都不会产生新的对象。
Michel_Rolle
2023/07/30
2.7K0
07 - JavaSE之容器
Collection 接口的子接口分为:Set接口(包含 HashSet类) + List接口(包含LinkedList 类和 ArrayLis t类) Map接口:包含HashMap类
Daotin
2018/08/31
3560
07 - JavaSE之容器
奇奇怪怪的面试题
两个线程并发执行下列代码,其中直接使用线程安全类ConcurrentHashMap的put方法时不需要考虑多线程间互相覆盖的问题。
九转成圣
2024/04/10
930
设计模式之访问者模式(行为型)
访问者模式:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。所以访问者模式是一种对象行为型模式。
SmileNicky
2019/03/20
5520
Java 集合框架(List、Set、Map、Iterator、Stack、Properties)
相关文献:https://www.runoob.com/java/java-collections.html
Michael阿明
2021/09/06
3010
SpringBoot + ITextPdf:高效生成 PDF 预览文件
其实公司之前的项目里是用到了帆软报表的,然而最近接了一个新项目,这个项目独立部署在甲方的独立环境中,组长的意思是不用再单独部署一套帆软报表,成本太大,用其他方式实现一下。虽然我不太理解成本大在哪儿,不过身为助理工程师,别管那么多,照着干就完事了。
程序员皮皮林
2024/10/08
9760
SpringBoot + ITextPdf:高效生成 PDF 预览文件
JAVA: List用法
1、List中可以添加任何对象,包括自己定义的新的类。 class Person{ ..... } 上面定义了一个Person类,下面看好如何使用List Person p1=new Person(); Person p2=new Person(); List list=new ArrayList(); list.add(p1); list.add(p2);//这里是将对象加入到list中 for(int i=0;i Person p=(Person)list.get(i);//注意,这里一定要强制类型转
战神伽罗
2019/07/22
3.7K0
Map的5种遍历方法
//循环遍历map的方法 public class MapF { public static void main(String[] args) { Map<String, Integer> tempMap = new HashMap<String, Integer>(); tempMap.put("a","12"); tempMap.put("b","34"); tempMap.put("c","56");
挨踢小子部落阁
2023/03/16
6500
Map的5种遍历方法
Java 集合demo学习
以下实例演示了使用 Java Util 类的 Arrays.asList(name) 方法将数组转换为集合:
默 语
2024/11/20
460
Springboot输出PDF文件
有个人(死需求)跑过来跟你说,这些都给我输出成报告,pdf格式的,所以就有了下面这个,做一下笔记,以后有用直接过来拿。在网上找了一下,发现大家都是在用itext。iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
用户3467126
2019/09/27
3K2
Springboot输出PDF文件
Java基础教程--安卓入门教程(七)
接口的基本语法 接口的基本语法(一) 使用interface定义 接口当中的方法都是抽象方法; 接口当中的方法都是public权限 接口中全是抽象函数,不能生成对象 interface USB{  public void read();  public void write(); } class USBPhone implements USB{ //复写  public void read(){   System.out.println("USBPhone read");  }  public void write(){   System.out.println("USBPhone write");  } } class Test{  public static void main(String args[]){   USBPhone usbPhone = new USBPhone();   USB usb = usbPhone;   usb.read();   usb.write();  } }
达达前端
2022/04/29
7000
Java基础教程--安卓入门教程(七)
JDK源码阅读:ArrayList原理
查询快:由于数组在内存中是一块连续空间,因此可以根据地址+索引的方式快速获取对应位置上的元素。
鳄鱼儿
2024/05/21
1320
Java基础之集合
-集合结构只要发生改变,迭代器必须重新获取,如果还是用的之前的迭代器,就会出现异常java.util.ConcurrentModificationException
shaoshaossm
2022/12/27
5330
Java基础之集合
itext7知识点研究(PDF编辑)
static class MyEventListener implements IEventListener { private List<Rectangle> rectangles = new ArrayList<>(); @Override public void eventOccurred(IEventData data, EventType type) { if (type == EventType.RENDER_TEXT) { TextRenderInfo renderInfo = (TextRenderInfo) data; Vector startPoint = renderInfo.getDescentLine().getStartPoint(); Vector endPoint = renderInfo.getAscentLine().getEndPoint(); float x1 = Math.min(startPoint.get(0), endPoint.get(0)); float x2 = Math.max(startPoint.get(0), endPoint.get(0)); float y1 = Math.min(startPoint.get(1), endPoint.get(1)); float y2 = Math.max(startPoint.get(1), endPoint.get(1)); rectangles.add(new Rectangle(x1, y1, x2 - x1, y2 - y1)); } } @Override public Set<EventType> getSupportedEvents() { return new LinkedHashSet<>(Collections.singletonList(EventType.RENDER_TEXT)); } public List<Rectangle> getRectangles() { return rectangles; } public void clear() { rectangles.clear(); } } static class MyCharacterEventListener extends MyEventListener { @Override public void eventOccurred(IEventData data, EventType type) { if (type == EventType.RENDER_TEXT) { TextRenderInfo renderInfo = (TextRenderInfo) data; for (TextRenderInfo tri : renderInfo.getCharacterRenderInfos()) { super.eventOccurred(tri, type); } } } }
老梁
2019/09/10
2.8K0
itext7知识点研究(PDF编辑)
相关推荐
J2SE1.5的新特点(之一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档