iText中文帮助文档(7)

2018-12-21 12:10

到目前为止,所有例子中使用的图片均来自地本地磁盘或者某个网站,但也可能使用包含图片信息的数组来得到图片的实例:

public static Image getInstance(byte[] img)

该方法同前面方法的效果相同,返回一个新的Gif,Jpeg或者Png类别的Image对象。

在示例代码0609中,我们添加一个从一个Jpeg文件中读入到字节数组中的图片,很明显,使用其他getInstance方法得到实例更优越,但这仅仅是一个例子,该getInstance方法在动态创建那些根本不存在的图片时非常有用。 该例子也演示了如何创建和使用一个原始图片。

public static Image getInstance(int width, int height, int components, int bpc, byte data[])

本例中创建了一个100×100象素的图片,因为每个象素用RGB描述,所以图片大小为100×100×3字节。

System.Drawing.Bitmap

示例代码0610是一个比较高级的话题,理由如下:

1. 首次使用到了System.Drawing.Bitmap类。该类在.net框架中,可以使用更多类型的图片,

如TIFF、GIF,而这些图片在iText中均不支持,你可以检查一下.net框架看看你需要的图片格式是否得到支持。

2. 前面的例子中,还有一些事情要注意:当添加一个图片时不会出现什么问题,文字始终浮于图片

上面,本例中,我们希望图片浮在文字上面。这也是为什么我们将使用iTextSharp.text.pdf.PdfContentByte类的原因(见第十章)。 3. 你将发现使用的图片为透明的gif格式,你可以到

http://itextsharp.sourceforge.net/examples/h.gif下载得到。

TIFF和CCITT

示例代码0611也是一个比较高级的话题,例中转换一个TIFF文件到PDF文件。

? 图片遮罩

示例代码0613在,我们创建了一个用作遮罩的图片

3C

该图片尺寸为8×8象素,每组一个字节,使用makeMask()方法可以转换成遮罩。

byte maskr[] = {(byte)0x3c, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xe7, (byte)0x7e, (byte)0x3c}; Image mask = Image.getInstance(8, 8, 1, 1, maskr); mask.makeMask();

mask.setInvertMask(true);

我们可以用该遮罩直接遮住其他图片的一部分。 PdfContentByte cb = writer.DirectContent; Image image = Image.getInstance(\image.ImageMask = mask;

或者我们将该遮罩用于模板遮罪中。

PdfContentByte cb = writer.DirectContent; cb.setRGBColorFill(255, 0, 0);

7E E7 C3 C3 E7 7E 3C

cb.addImage(mask, mask.scaledWidth() * 8, 0, 0, mask.scaledHeight() * 8, 100, 400);

关于ContentByte对象更多信息请参见第十章。

图片和其他对象

? 图片在块中

有时,可以方便地将图片置于块中,通过一定偏移将一个图片置于块中: Chunk ck = new Chunk(img, 0, -5);

具体代码见示例代码0614,我们可以添加该特殊图片块到短句、表格等,本例中的图片请到

http://itextsharp.sourceforge.net/examples/pngnow.png下载。 ? 图片在表格中

你可以将图片添加到单元格中,但有两个副作用:

? 表格的宽度是确定,当图片超出单元格的宽度时,将自动缩小。 ? 你不能进行文字绕排和为图片添加下划线。 参见示例代码0615。 ? 图片链接注释

如果你希望得到一个可点击的图片,或者想添加链接注释到图片上,你需要创建一个Annotation对象,并添加到图片上,你不需要指定位置(你可以使用0,0,0,0),该位置会内部更新以适合该图片。

gif.Annotation = new Annotation(0, 0, 0, 0, \jpeg.Annotation = new Annotation(\\are my children\0, 0, 0, 0);

参加示例代码0616。

第二部分 其他文档格式

第七章 XML和 (X)HTML

本章主要介绍了如何利用iText控件生成XLM文档和(X)HTML文档,但我们对这些并不感兴趣,故只介绍本章中提到的将XML转为PDF。

在第一章中,我们通过5步生产一个PDF文件,为了将一个XML文件转换为PDF文件,只需重写第3和第4步,第5步由解析器自动处理。 //第3步:创建一个解析器并设置文档句柄:

iTextHandler h = new iTextHandler(document); //第4步,转换该文档: h.Parse(\Chap0701.xml\ 示例代码见示例代码0702

第八章 RTF文件

RTF包

RTF包是基于iText包扩展出来的,允许iText除生成PDF文件外还可以输出RTF文件,除了一些在RTF包中不支持的特性外,大多数PDF文件特性都可以使用。

创建一个RTF文档

创建一个RTF文档和创建一个PDF文档方法是一样的,都是这基本的5步,唯一的区别是第2步中用RtfWriter代替了PdfWriter,见示例代码0801。 第1步 创建一个the iTextSharp.text.Document对象的实例: Document document = new Document();

第2步 创建一个document的RtfWriter将document写入你选择的输出流: RtfWriter.getInstance(document, new

FileStream(\FileMode.Create); 第3步 打开document: document.Open();

第4步 添加内容到document

document.Add(new Paragraph(\Hello World\ 第5步 关闭document document.Close();

关于如何创建其他对象并添加到document中,请参见其他章节的内容。

不支持的特性

? ? ? ? ? ? ? ? ? ?

水印 阅读器参数 加密 内嵌字体 块间距 段落右缩排 列表右缩排 无圆点符号列表 嵌套表格

除JPEG和PNG的其他图片

RTF中扩展的页眉和页脚

写入RTF时无法在开始新页前通过setHeader方法改变文档的页眉或页脚,这里有两个办法来解决这个问题。

?

利用“Chapters”,添加一个新“chapter”到文档前,使用setHeader或setFooter,你可以在不同的

“Chapters”中使用不同的页眉或页脚,见示例代码0802。

?

使用RtfHeaderFooters类。该类允许你设置4个页眉或页脚,并指定在哪页出现。你当然可以结合

Chapter创建4个不同的页眉或页脚,见示例代码0803。

? 使用RtfHeaderFooters类

第1步创建一个RtfHeaderFooters类:


iText中文帮助文档(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第2课时 整数运算律的推广 山亭

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: