天道酬勤

摘要: 前言在第二节中我们创建了大量high-level的对象,iText会自动对其布局。在第三节的时候我们学会了writing to direct content,然后使用ColumnText对象将high-levl和lowel-level对象组合起来使用。目前为止我们将PdfPTable对象当作high-level对象使用,因此在其被添加到Document时:单元格的文本内容会被添加到文本层(text layer),其它所有的边框,背景色,图片都添加到文本层的下面。但是我们也可以将PdfPTable添加到文本层的上面抑或是图形层的下面。Working with WriteSelectedRows( 阅读全文
posted @ 2012-07-10 22:19 JulyLuo 阅读(2829) 评论(3) 推荐(2)
摘要: 前言在上一节中,通过listing 4.16产生的表格拥有一个头,表头中显示的为日期。如果我们仔细观察此PDF的话你会发现基本上每一部电影的信息都会超过一页,表格中数据被分割的不错,但是表头却消失了。在这一节中我们会fix这个问题,而且还会为表格添加footer。Repeating headers and footers好了直接上效果图:上图是具体一天的电影播放信息,日期显示在第一行,第二行包括一些列的描述信息:Location,Time,Run Length等,同样的信息还被加入到footer中。为了实现上图的效果我们需要添加三列:背景为黑色且有日期的一列,背景为灰色的二列(一列添加到hea 阅读全文
posted @ 2012-07-09 19:08 JulyLuo 阅读(7431) 评论(2) 推荐(0)
摘要: 前言PdfPCell类继承于Rectangle类,因此也继承了很多修改边框和背景色的属性和方法,后续我们会讨论到,但现在我们先要说明PdfPCell的内容模式。在iText的内部PdfPCell的内容被保存在ColumnText对象里面,如果你对ColumnText类有比较清晰的了解那么PdfPCell就很好理解了。但如果大家跳过了第三节直接到这里的话,那还是希望大家先学习第三节中关于ColumnText的内容。PdfPCell in text mode在这个子节中我们会用Phrase和Chunk对象作为填充表格的内容,以下为效果图:这里不能使用Paragraph,List或者Image对象, 阅读全文
posted @ 2012-07-08 16:56 JulyLuo 阅读(4063) 评论(4) 推荐(1)
摘要: 前言iText已经有10年的历史了,如果有人问在这10年中iText中那个对象是最重要的话,本书的作者会毫不犹豫的说是PdfPTable和PdfPCell。因为作者大部分的工作(相信也是大多数人的工作)就是从数据中取出数据然后在文档中以表格的形式呈现出来。因为两个类实在是太重要,这里我们会花费整个第二章的内容来详细说明。Constructing tables在iText中处理Table的有很多老版本的类如Table和PdfTable,但由于有些缺点,而且在处理多页的情况分割表格,控制表格单元格等情况下力不从心,因此有了PdfPTable和PdfPCell的出现。iText最新的版本已经移出了P 阅读全文
posted @ 2012-07-02 22:55 JulyLuo 阅读(3600) 评论(2) 推荐(1)
摘要: 前言在这一节中我们会讨论两个可重用的对象:Image和PdfTemplate对象。在2.3节我们往文档中添加图片的时候其实就已经接触到Image对象。在一般情况下,图片的字节会被保存在pdf文件中分开的流中,页面如果想要包含这个图片只需引用即可,这种类型的对象也叫做XObject。XObject有很多的类型,不过Image和Form XObject是最重要的。Image XObjects当我们将图片添加到文档中时其实就已经和image XObject打交道了,我们知道通过Document.Add方法添加的图片都位于文本的下面,但如果我们希望图片在文本的上面那要如何实现呢?将图片添加到最上层这里 阅读全文
posted @ 2012-06-30 23:47 JulyLuo 阅读(2511) 评论(0) 推荐(2)
摘要: 前言在这一节中我们将会学习ColumnText对象的使用:如果只是往ColumnText中加入Chunk或者Phrase对象,那么我们就处于文本模式(text mode);如果加入其它高层次的对象那么就处于组合模式(composite mode)。在listing3.13种我们调用方法ShowMovieInfo来文档上打印一个大大的P字符。我们希望通过相同的方法往矩形中添加电影的标题,但是ShowTextAligned方法不能包裹文本,而且在这个方法中我们不能再string或者Chunk对象中使用换行。现在我们使用ColumnText提供的SetSimpleColumn方法来完成前一节的Fil 阅读全文
posted @ 2012-06-28 22:10 JulyLuo 阅读(4095) 评论(0) 推荐(1)
摘要: iTex in Action 2nd读书笔记3.3节 阅读全文
posted @ 2012-06-27 22:04 JulyLuo 阅读(3600) 评论(1) 推荐(2)
摘要: 前言在第一节中我们学会了如何创建一个pdf文档,在2.2和2.3节时介绍了iText中的high-level对象的使用。接下来中我们会学习一种完全不同的添加内容模式:这通常也叫做low-level operations,因为我们是直接将pdf的语法添加到页面的内容流中。Introducing the concept of direct content好了先上图:图的左边是通过先添加一个包裹了文本"Foobar Film Festival"的Paragraph到文档中,然后又将一张图片添加到文档中,不过图片的定位是通过SetAbsolutePosition方法实现的。在这里添 阅读全文
posted @ 2012-06-25 22:31 JulyLuo 阅读(3067) 评论(1) 推荐(0)
摘要: Adding Anchor, Image, Chapter, and Section objects在上篇2.1节中,我向大家介绍了很多high-level类的使用。里面用到了ERD图中几乎所有的字段,但有个一没有用到:imdb。这个字段存储的是电影在网站imdb.com上的ID,缩写为IMDB(Internet Movie Database),因此这一节中我们会在文档中加入一些超链接。如果你下载了本书的源代码,里面会有一个resources文件夹,此文件夹中有一个poster文件夹:里面包含了每个imdb对应的图片(如Superman Return(超人归来)的ID是0348150,那么里面 阅读全文
posted @ 2012-06-24 22:43 JulyLuo 阅读(3341) 评论(0) 推荐(0)
摘要: 前言这是我写iText in Action 2nd读书笔记的第二篇,但在上一篇有资源下载和代码的一些说明,如果大家对iTextSharp和PDF有兴趣,希望还是先看第一篇。现在我们将重点集中到第四步:添加内容。这里说的添加内容都是通过Document.Add()方法调用,也就是通过一些high-level的对象实现内容的添加。这一节如标题要介绍Chunk、Phrase、Paragraph和List对象的属性和使用。Document的Add方法接受一个IElement的接口,我们先来看下实现此接口的UML图:上图是iText中对应的类图,在iTextSharp中,只要将接口的名称前加上I即可如( 阅读全文
posted @ 2012-06-23 22:38 JulyLuo 阅读(6413) 评论(0) 推荐(0)