用C#制作PDF文件全攻略(上)

发表于:2009-6-25 10:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下:

  StreamWriter pPDF=new StreamWriter(filePath);

  ArrayList xRefs=new ArrayList();

  float yPos =0f;

  long streamStart=0;

  long streamEnd=0;

  long streamLen =0;

  string strPDFMessage=null;

  //PDF文档头信息

  strPDFMessage="%PDF-1.1\n";

  ConvertToByteAndAddtoStream(strPDFMessage);

  xRefs.Add(mPDF.Length);

  strPDFMessage="1 0 obj\n";

  ConvertToByteAndAddtoStream(strPDFMessage);

  strPDFMessage="<< /Length 2 0 R >>\n";

  ConvertToByteAndAddtoStream(strPDFMessage);

  strPDFMessage="stream\n";

  ConvertToByteAndAddtoStream(strPDFMessage);

  ……

  看了上面的制作办法,我眼镜都摔坏了三幅,如果用上面这样原始的办法能制作出满意的PDF文件,那一定是天才所为。后来,我从一个网站(网址:http://itextsharp.sourceforge.net/index.html)中看到了专门制作PDF文件的控件的介绍,暗喜之余,立马下载试验,果然非常轻松地制作出了想要的PDF文件,因为网站为英文,内容又多,读起来非常费力,在解决了自己的问题后,看到许多网友还在为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章中要专门讲解字体问题,中文显示也就迎刃而解了,如果不能正确显示中文,也就没有必要翻译本文了。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号