【译】在Asp.Net中操作PDF – iTextSharp-列表
原文 【译】在Asp.Net中操作PDF – iTextSharp-列表
在前文中,我们已经知道了如何利用iTextSharp创建PDF文档,设置字体样式和风格.本文开始讲述iTextSharp中的有序列表和无需列表.如果你还没阅读我前面的文章,那么地址是:
在Asp.Net中操作PDF - iTextSharp - 使用字体
在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
在iTextSharp中列表的创建是通过iTextSharp.text.List对象实现的。列表实质上是iTextSharp.text.ListItem的集合.也就是由ListItem组成的数组.ListItem继承了Paragraph对象(而Paragraph对象继承于Phrase,Phrase又继承于Arraylist),所以生成的每一个List都会自动换行.就如同List在HTML分为<ul>和<ol>一样,iTextSharp中列表同样分为有序列表和无序列表.下面我们来直接看如何生成列表的代码:
string path = Server.MapPath("PDFs");
it.Document doc = new it.Document();
try
{
PdfWriter.GetInstance(doc, new FileStream(path + "/Lists.pdf", FileMode.Create));
doc.Open();
it.List list = new it.List(it.List.UNORDERED);
list.Add(new it.ListItem("One"));
list.Add("Two");
list.Add("Three");
list.Add("Four");
list.Add("Five");
it.Paragraph paragraph = new it.Paragraph();
string text = "Lists";
paragraph.Add(text);
doc.Add(paragraph);
doc.Add(list);
}
catch (it.DocumentException dex)
{
Response.Write(dex.Message);
}
catch (IOException ioex)
{
Response.Write(ioex.Message);
}
finally
{
doc.Close();
}
如果你对上面代码的意思并不了解.那么为什么要用”it"引用List的确需要解释一下.正如代码所示,it作为引用某些类,因为如果你直接在ASP.Net code-behind模式下工作,你会发现visual studio在引用iTextSharp的ListItem时和也包含ListItem的System.Web.UI.WebControls发生命名空间冲突.这意味着如果仅仅是用如下代码:
ListItem li = new ListItem();
则会报不明确引用的警告。解决方法是使用完全引用:
iTextSharp.text.ListItem li = new iTextSharp.text.ListItem();
但是使用完全引用又臭又长,所以这里使用了简洁引用:
using it = iTextSharp.text;
现在,你就可以使用别名了.
回到讲述我们实际代码的作用,第一件事是创建一个List对象,并传入一个布尔类型的参数告诉List生成的是有序或无序列表.默认是False(也就是无序列表),然后为List加入了5个项。第一个项是通过匿名函数传入String参数类型来创建ListItem并传入,从第二个开始,则是直接传入String类型的参数.最后是创建一个Paragraph对象和list对象共同传入document.

如上图所见,每一个列表项都像Paragraph那样自己单占一行.还有列表是无序列表,每一个列表项之前都用一个横杠作为修饰,并且列表没有缩进。但iTextSharp提供了多种方法允许设置列表使其更加美观:
it.List list = new it.List(it.List.UNORDERED, 10f);
list.SetListSymbol("\u2022");
list.IndentationLeft = 30f;
上面第二个参数(float类型)传入List的构造函数,用于将每一个列表项的缩进设置成10(也就是列表符号和列表项第一个字符的距离。).然后我通过SetListSymbol方法将列表项符号改成更传统的”.”,最后我将整个列表向右缩进30,现在列表看起来就好多了:

如果你使用有序列表并将罗马数字作为标识,你可以使用RomanList类:
RomanList romanlist = new RomanList(true, 20);
romanlist.IndentationLeft = 30f;
romanlist.Add("One");
romanlist.Add("Two");
romanlist.Add("Three");
romanlist.Add("Four");
romanlist.Add("Five");
doc.Add(romanlist);
由于某些奇怪的理由,传入RomanList构造函数的第二个参数是一个Int类型的值,第一个参数告诉RomanList究竟使用大写还是小写作为行项目标识:

还有一个GreekList类支持使用希腊字符作为列表项目的标识,还有其它两个类ZapfDingbatsList 和ZapfDingbatsNumberList,由于他们使用了ZapfDingBats字体,所以这两个类对列表项符号提供了更多丰富的选项,希腊和罗马字符作为行项目标识时,分别不能超过24和26个行项目,而ZapfDingBatsNumberList最多只能处理10个字符,当字符超出范围后,列表又会从0开始.
ZapfDingbatsList zlist = new it.ZapfDingbatsList(49, 15);
zlist.Add("One");
zlist.Add("Two");
zlist.Add("Three");
zlist.Add("Four");
zlist.Add("Five");
doc.Add(zlist);

列表之间还可以相互嵌套,因为List.Add()方法接受一个Object类型的参数,所以你只要传入一个有效的List对象就行。下面代码首先创建了一个RomanList对象,然后再创建一个有序列表.我们将RomanList对象添加到有序列表上,则RomanList会相对于父有序列表自动向后缩进:
RomanList romanlist = new RomanList(true, 20);
romanlist.IndentationLeft = 10f;
romanlist.Add("One");
romanlist.Add("Two");
romanlist.Add("Three");
romanlist.Add("Four");
romanlist.Add("Five");
List list = new List(List.ORDERED, 20f);
list.SetListSymbol("\u2022");
list.IndentationLeft = 20f;
list.Add("One");
list.Add("Two");
list.Add("Three");
list.Add("Roman List");
list.Add(romanlist);
list.Add("Four");
list.Add("Five");
doc.Add(paragraph);
doc.Add(list);

-----------------
原文链接:Lists with iTextSharp
translated by CareySon
【译】在Asp.Net中操作PDF – iTextSharp-列表的更多相关文章
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
原文 [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵 ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 绘制矢量图
原文 [译]在Asp.Net中操作PDF - iTextSharp - 绘制矢量图 在上一篇iTextSharp文章中讲述了如何将现有的图片插入PDF中并对其进行操作.但有时,你需要在PDF中绘制不依 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 操作图片
原文 [译]在Asp.Net中操作PDF – iTextSharp - 操作图片 作为我的iTextSharp系列的文章的第七篇,开始探索使用iTextSharp在PDF中操作图片,理解本篇文章需要看 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 使用表格
原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用表格 使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 使用链接和书签
原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用链接和书签 用户和PDF文档的交互可以通过锚(链接)和书签进行,接着我前面iTextSharp的系列文章,本篇文章主要讲通过 ...
- 【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
原文 [译]在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本 本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过As ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
原文 [译]在Asp.Net中操作PDF - iTextSharp - 使用字体 紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方 ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版(转)
[译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵盖 ...
- 在Asp.Net中操作PDF – iTextSharp - 使用表格
使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并不会深入探讨表格,仅仅是提供一个使用iTextSharp生成表格的方法介绍 使用i ...
- 在Asp.Net中操作PDF – iTextSharp - 操作图片
iTextSharp支持所有主流的图片格式,比如:jpg, tif, gif, bmp, png和wmf.在iTextSharp中使用Image.GetInstance()方法创建图片有很多种方式,或 ...
随机推荐
- 5种方法去掉HTML中Inline-Block元素之间的空白
5种方法去掉HTML中Inline-Block元素之间的空白 记得年轻时我在IE6上开发,绝望的希望IE6能支持display: inline-block功能.当需要在”inline”元素上控制mar ...
- sql学习之基础(MySql)
--#创建一个数据库 create database excise01; --#查看所有数据库 show databases; --#查看刚建的数据库 show create database exc ...
- CSS技巧!像table一样布局div
摘自:http://www.cnblogs.com/hnyei/archive/2011/09/19/2181442.html 许多网页设计师都喜欢,将两个或者多个容器等高的并排放置,并在里面展示每个 ...
- LNMP一键安装结果
============================== Check install ============================== Checking ... Nginx: OK M ...
- QMessageBox 用法
案例一:QMessageBox msgBox;msgBox.setText("The document has been modified.");msgBox.setInforma ...
- ThinkPHP 3.1.2 模板中的基本语法<2>
本节课大纲: 一.导入CSS和JS文件 1.css link js scr <link rel='stylesheet' type='text/css' href='__PUBLIC__/Css ...
- Spreadsheets
很水的一道题,提醒自己要认真,做的头都快晕了.考虑26的特殊情况. D - Spreadsheets Time Limit:10000MS Memory Limit:65536KB 6 ...
- css3.0
css3.0相比css2.0多了些我们经常需要使用的标签属性,例如:圆角,个别圆角,不透明度,阴影特效等 1.圆角(即如何画圆)border-radius a{width:20px; height:2 ...
- C#堆栈
栈就是堆栈,因为堆和堆栈这样说太拗口了,搞得像绕口令,所以有些时候就把堆栈简称为栈.堆和栈,你看这又多舒服. 但无论什么时候,堆栈都不等于堆和栈,必须说,堆和栈或者堆和堆栈. 有人说:“C#的所有值类 ...
- zabbix 邮件告警配置
使用外部邮箱账号发送报警邮件设置 一.关闭sendmail或者postfix service sendmail stop #关闭 chkconfig sendmail off #禁止开机启动 serv ...