iText 学习(六)

一、 锚点Anthor

      我们都知道HTML中的超文本链接,当我们点击某些语句,你能够跳转到网上的其他页。在PDF中也可以实现这种功能。

     你想在文档中添加一个外部链接(例如使用URL链接到WEB上的其他文档),你可以简单地使用Anchor对象,它派生于Phrase对象,

     使用方法相同。只是额外添加了两个方法:setName()和 setReference()。


public class Six {
	public static void main(String[] args)throws Exception {
		Document doc = new Document();
		PdfWriter.getInstance(doc, new FileOutputStream("d:\\six.pdf"));
		doc.open();
		
		//添加外部锚点
		Anchor anchor = new Anchor("baidu", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE, BaseColor.BLUE));
		anchor.setReference("http://www.xxxx.com");
		//设置锚点的名称(用户在使用内部锚点时定位的地方)
		anchor.setName("baidu");
		doc.add(anchor);
		
		Paragraph p = new Paragraph();
		p.add("string");
		doc.add(p);
		
		//添加内部锚点
		Anchor anchor2 = new Anchor("innter", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE, BaseColor.BLUE));
		anchor.setReference("#baidu");
		//设置锚点的名称(用户在使用内部锚点时定位的地方)
		anchor.setName("inner");
		doc.newPage();
		doc.add(anchor2);
		doc.close();
	}
}

         

                  1、Chunk.setLocalDestination(),和Anchor.setName()一样效果,可以设置为文档内部的一个书签。

                  2、Chunk.setLocalGoto()和Anchor.setReference()一样效果,不过引用的是文档内部的书签。

                  3、Chunk.setRemoteGoto()可以引用以下几种情况:

                               1、一个外部链接,这个和Anchor.setReference()一样的效果;

                                2、其它pdf文档中某一页,如代码page1.setRemoteGoto("movie_links_1.pdf", 1);应该就是movie_links_1.pdf文档的第一页面。

                                3、其它pdf文档中的内部书签,如代码link.setRemoteGoto("movie_links_1.pdf", reader.getString(0));第二个参数就是movie_links_1.pdf文档的内部书签。


二、章(Chapter)、部分(Section)

           在代码中,Chapter相关联的数字是通过构造器中传入进去的,默认情况下在数字后面有一个点,不过可以通过NumberStyle来修改。

           Seciton对象都是通过AddSection来并传入Section的标题传入进去。此标题会呈现在Pdf文档和对应的书签上,如

           果希望使用不同的书签标题可以使用BookmarkTitle属性来修改。代码中Section还通过Indentation属性要修改缩进,

           不过这个只会影响Pdf文档中的缩进,不会对书签有影响。最后我们看下subsection书签的数字,它不是这样标记 5.4.1,5.4.2而是

          1.,2.。因为在代码中设置了属性NumberDepth=1。这里要注意的是Section类实现的不是IElement接口,是ILargeElement接口。

          iText一般会尽快的将Pdf的语句写入到输出流中,这样就可以方便释放内存。但对于类似Section对象,

         只有在其被加入到Document类是iText才会作Pdf语法的转换工作,这也意味Section会一直保存在内存中直到iText完成转换工作。


         不过有以下几种方法解决Section的问题:

                    1、将Chapter定义为未完成(incomplete),然后将其以不同的片段加入到Document中。

                    2、使用PdfOutLint对象来创建书签。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值