.NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)

本文介绍了如何在C# 2.0中利用iTextSharp库创建PDF文档,详细讲解了创建Document对象、设置页边距、创建Writer、添加元数据、插入内容以及使用表格等步骤,并提供了代码示例。
摘要由CSDN通过智能技术生成

该文主要介绍如何借助iTextSharp在C# 2.0中制作PDF文件,本文的架构大致按照iTextSharp的操作文档进行翻译,如果需要查看原文,请点击一下链接:http://itextsharp.sourceforge.net/tutorial/

一、 iTextSharp的介绍和下载

(1)用户可以浏览官网进行查看:http://itextsharp.sourceforge.net/index.html

iText# (iTextSharp) is a port of the iText open source java library written entirely in C# for the .NET platform. iText# is a library that allows you to generate PDF files on the fly. It is implemented as an assembly.

(2)以下链接用于下载:http://sourceforge.net/project/platformdownload.php?group_id=72954

下载后为一个解压缩文件,用户直接解压后得到一个dll动态链接库,在创建的项目中直接引入即可使用(本文的所有代码均在VS 2005环境下测试通过

二、创建一个PDF文档(原文:http://itextsharp.sourceforge.net/tutorial/ch01.html

2.1 示例代码分析

创建一个PDF文档大致包括五个步骤,代码如下:

该段代码的效果是可以在当前工作目录下,生成一个名字叫做Chap0101.pdf的PDF文档

2.2 第一步:创建Document对象

(1) Document对象

iTextSharp.text.Document有三个构造函数,分别为:

第一个构造函数调用第二个构造函数,参数为PageSize.A4

第二个构造函数调用第三个构造函数,其中每个边距默认值为36

(2) Page Size

你可以创建自己的用于特定颜色的Rectangle对象,并将其作为pageSize。我们对前面的代码进行修改,即创建一个长的、窄的、背景颜色为淡黄色的PDF文档。代码如下:

大多pageSizes都是采用了PORTRAIT格式,如果你想在LANDSCAPE应用它们,你必须使用rotate(),代码如下:

(3) Margins

在创建document的过程中,你也可以定义左、右、上、下边距,代码如下所示:

注意:如果你修改pageSize,会在下一个页面创建时产生影响;如果你修改margins,则会在当前页面立即产生影响。

2.3 创建Write对象

一旦成功创建了document,我们必须创建一个或者多个实例用于监听document,所有的writers继承于iTextSharp.text.DocWriter类。即你可以iTextSharp.text.pdf.PdfWriter 使用来生成PDF文档,而如果需要生成Tex文档你必须使用iTextSharp.text.TeX.TeXWriter。

你可以使用以下的方式创建实例:

在使用过程中,你几乎不会使用到writer对象(除了你想创建高级的PDF文件或者你想使用一些特定的函数,比如ViewerPreferences或者Encryption),所以获取这类实例就足够了。

该函数的第一个参数即第一步所创建的document对象;

第二个参数为不同类型的Stream对象,目前我们都只使用System.IO.FileStream,后来我们会使用到System.IO.MemoryStream. 

2.4 元数据以及打开document

在你添加实际数据(即内容)是,你可能想加入某些关系到document的元数据,其方法如下:

你可以选择自己的Title,Subject,Keywords,Author以及Creator,但是添加制作者的函数必须一直使用,以及添加创建时间的方法添加的当前系统的时间(事实上,这两个方法是被自动调用的),你可以用客户的姓名作为Header,但是这对于PdfWrite没有任何影响。

2.5 添加内容

1、在前面的三个步骤中,你遇到了诸如:Phrase,Paragraph…的对象,在以后的章节会详细的给予介绍。有些时候,你可能希望writer可以忽略document中的行为,相关的代码可以查看

2、如果你想创建两个writer:writerA和writerB(这个代码在第二步会丢出异常)

实际上,我们需要对其进行简单的修改,修改后的代码如下:

2.6 关闭document

关闭document相当重要,因为它会影响和关闭writer写的输出流,close方法为finalize方法,但是你不能依靠它,你必须手工对其进行关闭。

三、Chunks, Phrases 和Paragraphs(原文http://itextsharp.sourceforge.net/tutorial/ch02.html)

3.1 Chunk

Chunk是能够添加到document文本中最小的重要部分。Chunk能够为其他的元素诸如Phrase以及Paragrph等构建块,一个Chunk就是一个附有指定字体的字符串,在添加chunk的文本的对象中,所有其他的版面设计参数都应该定义。

下面的代码表示我们创建内容为"Hello world"格式为(red, italic COURIER font of size 20)的Chunk:

 

 

 

3.2 Phrases

Phrases是一系列拥有特定的作为额外参数的leading(=两行之间的空间)的Chunk

Phrases拥有一个主字体,但是其他的chunks可以拥有不同于这个主字体的其余字体,你可以从多种构造函数中创建Phrases对象。代码如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值