当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

用C#制作PDF文件全攻略

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:51:02

:2011-02-09 10:04:49

PDF文件在当前的办公环境中应用非常广泛,但是关于使用C#制作PDF文件的资料很少,后经多方查找和研究,终于找打了一个比较好的方法,下面详细来叙述它。

要用本文的方法生成PDF文件,需要两个控件:itextsharp.dll和ICSharpCode.SharpZipLib.dll,由于示例代码实在太多,我将代码全部整理出来,放在另外一个文件“示例代码.doc”中,所有这些资源,我均放在了本人的ftp站点(ftp://202.107.251.26)上的“Pdf文件制作全攻略”文件夹中(文件夹中另外两个rar压缩文件为两个控件的源代码,供大家学习研究使用),你可以到这里下载相应的资源,或者直接到原网站下载。

为便于调试和叙述,所有例子均为DOS控制台程序,windows程序使用方法完全一样,按照下面的步骤创建一个可调试的项目:

1、 打开VS2003;

2、 单击菜单“文件”→“新建”→“项目”,在项目类型中选择“Visual C#项目”,在模板中选择“控制台应用程序”,输入文件名称如“MakePdf”,指定好存放路径,然后点确定按钮;

3、 在“解决方案资源管理器”中右键单击“引用”,从弹出的菜单中选择“添加引用”,在“.NET”选项夹中选择“浏览”,添加前面提到的两个应用,如下图:

4、 在代码窗口顶部添加两个引用:

using iTextSharp.text;

using iTextSharp.text.pdf;

至此,准备工作完毕。

第一部分 iText的简单应用

第一章 创建一个Document

利用iText五步创建一个PDF文件:helloword。

第一步,创建一个 iTextSharp.text.Document对象的实例:

Document document = new Document();

第二步,为该Document创建一个Writer实例:

PdfWriter.getInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));

第三步,打开当前Document

document.Open();

第四步,为当前Document添加内容:

document.Add(new Paragraph("Hello World"));

第五步,关闭Document

document.Close();

完整的代码见示例代码0101。

在例中,不难看出,制作一个PDF文件是非常简单的。

注:如果你将例中“document.Add(new Paragraph("Hello World")); ”中的字符串“Hello Word”换成中文,如“这是我的第一个PDF文件”,产生的结果一定让你大失所望,因为生成的PDF文件中并没有将中文显示出来,不要担心,在第9章中要专门讲解字体问题,中文显示也就迎刃而解了,如果不能正确显示中文,也就没有必要翻译本文了。

下面对这几步做详细介绍。

第一步 创建一个Document实例:

iTextSharp.text.Document-object共有三个构造函数:

public Document();

public Document(Rectangle pageSize);

public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int arginBottom);

第一个构造函数以A4页面作为参数调用第二个构造函数,第二个构造函数以每边36磅页边距为参数调用第三个构造函数

u 页面尺寸:

你可以通过指定的颜色和大小创建你自己的页面,示例代码0102创建一个细长的浅黄色背景的页面:

Rectangle pageSize = new Rectangle(144, 720);

pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);

Document document = new Document(pageSize);

通常,你不必创建这样的页面,而可以从下面页面尺寸中选择:

A0-A10, LEGAL, LETTER, HALFLETTER, _11x17, LEDGER, NOTE, B0-B5, ARCH_A-ARCH_E, FLSA 和 FLSE

大多数情况下使用纵向页面,如果希望使用横向页面,你只须使用rotate()函数:

Document document = new Document(PageSize.A4.rotate());

详细代码见示例代码0103。

u 页边距:

当创建一个文件时,你还可以定义上、下、左、右页边距:

Document document = new Document(PageSize.A5, 36, 72, 108, 180);

在示例代码0104中你可以看到该文档有一个0.5英寸的左边距和1英寸的右边距,上边距为1.5英寸,下边距为2.5英寸。

说明:

当创建一个矩形或设置边距时,你可能希望知道该用什么度量单位:厘米、英寸或象素,事实上,默认的度量系统以排版单位磅为基础得出其他单位的近似值,如1英寸=72磅,如果你想在A4页面的PDF中创建一个矩形,你需要计算以下数据:

21 厘米 / 2.54 = 8.2677 英寸

8.2677英寸* 72 = 595 磅

29.7 厘米 / 2.54 = 11.6929 英寸

11.6929英寸* 72 = 842 磅

默认边距为36磅即半英寸。

如果你修改了页面尺寸,仅仅影响到下一页,如果你修改了页边距,则影响到全部,故慎用。

关于页面的初始值,请参考第三步。

第二步 创建Writer实例

一旦创建了document,我们可以创建该文档的多个Writer的实例,所有这些Writer实例均继承自抽象类“iTextSharp.text.DocWriter”。

同时还有另外一种情况,你可以用iTextSharp.text.pdf.PdfWriter产生文档PDF文件,如果你想创建一个TeX文档,你可以使用iTextSharp.text.TeX.TeXWriter包。

Writer类的构造函数是私有的,你只能通过下面的方法创建一个实例:

public static xxxWriter getInstance(Document document, Stream os); (xxx 是 Pdf 或 Xml)

你可以通过下面的方法创建一个实例:

PdfWriter writer = PdfWriter.getInstance(document, new FileStream("Chap01xx.pdf"));

但是你几乎永远不会用到Writer实例(除非你想创建高级PDF或者希望用一些非常特殊的函数,如

ViewerPreferences 或 Encryption)。所以通过下面的办法得到实例已经足够了:

dfWriter.getInstance(document, new FileStream("Chap01xx.pdf"));

在第一步中创建一个文档时,第一个参数意义不大,第二个参数可以是任何一种流,到目前为止我们一直使用System.IO.FileStream将Document写入文件中,示例代码0105用到了System.IO.MemoryStream(这不是一个独立的例子,你必须在Servlet Engine中测试这些代码。

第三步 打开Document

u 摘要

在你写入任何实际数据之前,你可能希望通过以下几种方法写入一些关于本文档的摘要:

public boolean addTitle(String title)

public boolean addSubject(String subject)

public boolean addKeywords(String keywords)

public boolean addAuthor(String author)

public boolean addC

[1] [2] [3] [4]  下一页


用C#制作PDF文件全攻略