【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 07:00 点击:

本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过Asp.Net创建PDFs,就像HTML和ASP.Net为文本提供了多种容器一样,iTextSharp提供了Chunk,Phrase和Paragraph这三个类作为容器,在开始之前,如果你还没有阅读我之前的文章,那么地址为:

       在ASP.NET中创建PDF-iTextSharp起步

       在Asp.Net中操作PDF - iTextSharp - 使用字体

 

Chunks

      

 

块(Chunks)是容纳文本的最小容器,就像ASP.Net中的<asp:Label>一样。就像使用Label一样,对于块的使用需要小心.下面代码展示如何为块设置文本,然后将其写入PDF 3次.

 

              string path = Server.MapPath("PDFs");

 

Rectangle r = new Rectangle(400, 300);

 

Document doc = new Document(r);

 

PdfWriter.GetInstance(doc, new FileStream(path + "/Blocks.pdf", FileMode.Create));

 

doc.Open();

 

Chunk c1 = new Chunk("A chunk represents an isolated string. ");

 

for (int i = 1; i < 4; i++)

 

{

 

    doc.Add(c1);

 

}

[接下来的一段你要格外注意,我们后面还要用到]

   结果如下,可以看出文本已经被加入文档,但显示出来却是一团乱麻.Chunk并不知道文本长度何时超过文档宽度并自动换行。你可以使用”\n”或者Environment.NewLine,甚至是Chunk.NEWLINE作为给Chunk对象赋值的一部分.

    1

    Chunk有一系列方法允许你为文本设置样式,比如setUnderLine(), setBackGround(), 和 setTextRise()以及一些构造函数来设置字体类型以及风格.

 

 

 

Chunk chunk = new Chunk("Setting the Font", FontFactory.GetFont("dax-black"));

chunk.SetUnderline(0.5f, -1.5f);

 

 

 

    2

    

PHRASE

    Phrase是比Chunk大一级的容器,Phrase可以理解为一组Chunk,并且会在长度超过文档宽度后自动换行,每一行之间的行距(测量方法其实是每行底部之间的距离)是字体大小的1.5倍,因为在iTextSharp行距之间的举例是12pt,所以下面代码之间的行距为16pt.你可以在Phrase初始化的时候设置字体和行距.当然也可以通过其多种构造函数重载来在初始化时为Phrase添加内容.

     下面代码展示了前面3个chunk加入Phrase后展示的结果:

 

 

       Phrase phrase = new Phrase();

 

for (int i = 1; i < 4; i++)

 

{

 

      phrase.Add(c1);

 

}

 

 

    3

 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET&#160;GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1