iText使用教程(4)

6 篇文章 0 订阅

Image对象

如果你学习过API,你可能已经注意到可以通过几种构造函数来创建图片,本手册中,我们将仅仅告诉你最简单的解决方案,如访问通过文件名或URL确定的图片生成的Image对象。

public static Image getInstance(Uri url)
public static Image getInstance(string filename)


Image是一个抽象类,故得到实例的方法将判断给出的图片的类别(GIF、Jpeg、PNG……)并返回对象的类别Gif、Jpeg、Png……,一些图片会被忽略,如果你想知道哪些图片会被忽略,请查阅FAQ(http://www.lowagie.com/iText/faq.html#images)。

通过URL得到图片实例
这是添加一个图片最简单的办法,见示例代码0601,我们添加了一个WMF、一个Gif、一个Jpeg和一个PNG图片到文档中,使用4个URL得到:

Image wmf = Image.getInstance(new URL("../examples/harbour.wmf"));
Image gif = Image.getInstance(new URL("../examples/vonnegut.gif"));
Image jpeg = Image.getInstance(new URL("../examples/myKids.jpg"));
Image png = Image.getInstance(new URL("../examples/hitchcock.png"));


备注:许多PDF库在插入一个图片前都将其解压缩并转换成位图格式,下面是几个我为什么不这样做的原因:

  • 这将导致PDF文件增大,这样产生的PDF文件尺寸是不同图片文件尺寸总和的数十倍。
  • 面临一个法律问题:LZW算法受专利保护,所以不允许使用这种算法来解压缩GIF等文件。


通过文件名得到图片实例
通过简单地改变图片引用路径将示例代码0601改成示例代码0602:

Image gif = Image.getInstance("vonnegut.gif");
Image jpeg = Image.getInstance("myKids.jpg");
Image png = Image.getInstance("hitchcock.png");


同示例代码0601的区别只是该图象从本地获取而已,另外一个例子见示例代码0603。


图片的位置

对齐方式
通过下面方法设置图片的对齐方式:

Alignment = Image.RIGHT
Alignment = Image.MIDDLE
Alignment = Image.LEFT


参见示例代码0604。
我们将Vonnegut的图片放在右边,小孩的图片放在中间,hitchcock的图片放在左边。

图片和文本
另外,你还可以指定文本相对图片的环绕方式:

Alignment = Image.RIGHT | Image.TEXTWRAP
Alignment = Image.MIDDLE
Alignment = Image.LEFT | Image.UNDERLYING


见示例代码0506,文字在Vonnegut图片的左侧,并不在我小孩的图处环绕,且排在Hitchcock图片的上面。
说明:该功能尚有一些BUG。

绝对位置
当制作PDF文件时,你可能用到该方法:

public void setAbsolutePosition(int absoluteX, int absoluteY)


将一个图片放要页面上一个绝对位置的代码见示例代码0606,我们在不同的坐标处添加了两幅图片,这里使用给定的坐标将图片放在了左下角,通过将图片的宽度和高度作为X和Y坐标将设置第一个图片,坐标的2倍设置第二个图片。


缩放和旋转图片

缩放
有几种办法可以缩放图片:

public void scaleAbsolute(int newWidth, int newHeight)
public void scalePercent(int percent)
public void scalePercent(int percentX, int percentY)
public void scaleToFit(int fitWidth, int fitHeight)


小孩的图片大小为194×202象素,如果你想让图片小一些,你可以通过scaleAbsolute(97, 101)进行缩放,使用scalePercent(50)也能到达同样的效果。
还可以通过scaleAbsolute(194, 101)来减小,所以这些例子都放在了示例代码0607中。



对分辨率的影响
如果一个图片不经任何缩放,其分辨率(resolution)为72,如果该图片缩放比例为50%,则分辨率为144,如果有更低的缩放比,则分辨率将更大,因为象素相同但尺寸变得更小了。使用72/300=24%的比例放置一个300dpi的图片,例:你用300dpi扫描了一个5×5英寸的图片,图片结果为1500×1500象素(5×300),当你用24%(72/300=0.24)的比例将该图片放置到PDF文件中时,PDF中的图片将为5×5英寸1500X1500象素300dpi,该图片将始终为1500X1500象素而不管尺寸如何。

旋转
可以通过下面的方法旋转图片

public void setRotation(double r)


详见示例代码0608。


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

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是一个比较高级的话题,理由如下:

  • 首次使用到了System.Drawing.Bitmap类。该类在.net框架中,可以使用更多类型的图片,如TIFF、GIF,而这些图片在iText中均不支持,你可以检查一下.net框架看看你需要的图片格式是否得到支持。
  • 前面的例子中,还有一些事情要注意:当添加一个图片时不会出现什么问题,文字始终浮于图片上面,本例中,我们希望图片浮在文字上面。这也是为什么我们将使用iTextSharp.text.pdf.PdfContentByte类的原因(见第十章)。
  • 你将发现使用的图片为透明的gif格式,你可以到http://itextsharp.sourceforge.net/examples/h.gif下载得到。

http://www.laozizhu.com/view-iText%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%284%29-138895.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值