【译】在ASP.NET中创建PDF-iTextSharp起步
原文 【译】在ASP.NET中创建PDF-iTextSharp起步
.Net framework 中自身并不包含可以和pdf打交道的方法。所以,当你需要你的ASP.Net Web应用程序中包含创建或与PDF文件交互的部分时,就不得不去找可用的第三方组件.使用谷歌可以搜索到在你预算之内的收费组件,当然同时也有一些开源组件。其中之一就是iTextSharp,这个程序是著名的JAVA工具iText的.Net版本.
但是iTextSharp最大问题是缺少文档.虽然官网上有一些起步教程,但大多数程序员还是选择去看JAVA版本的文档-也就是iText的文档.或者是去买市面上唯一一本关于这方面的书iText in Action.然而,这本书是针对Java版本的iText的书.iText in Action中大多数代码仅仅需要少量修改就可以在.Net下使用,但如果你的C#水平还是相对比较菜时,Java和.Net两个版本之间类库命名的差别和.Net版本下缺少文档,往往会让你抓狂。最终无奈之下,你只能用Reflector来查看某些方法到底是干什么用的.所以,作为”How to”系列文章,本文将讲述如何开始使用C#版的iTextSharp.
第一件事是在这里下载iTextSharp,下载完成后解压zip文件得到itextsharp.dll文件,在Visual Studio或Web Developer中创建一个新的网站,通过添加Asp.net文件夹选项添加bin目录,在bin目录下右键选择添加引用选项,在浏览选项卡中,选择itextsharp.dll:

然后点击OK,这个dll随后会被加到bin目录下,现在你可以在你的网站或项目中使用iTextSharp了.

我还添加了一个用于存放生成的PDF的文件夹命名为PDFs.,为了避免每次使用iTextSharp类时都使用完全路径,我还添加了几个using语句:
using iTextSharp.text; using iTextSharp.text.pdf;
另外,你还需要引用System.IO命名控件,因为你需要创建,打开和关闭文件,这个命名空间中的一些Class也必不可少.
iTextSharp的核心对象是Document对象,你需要通过Document对象的实例来操作内存中的pdf文件,所以首先需要实例化一个Document对象:
var doc1 = new Document();
上述代码在在内存中使用默认设置来实例化一个Document对象,默认的文档大小是A4(也就是210毫米x297毫米,或是8.26英尺x11.69英尺),页边距默认都是半英尺.下一步要做的就是将内存中的Document对象保存到硬盘中,使用iTextSharp.text.pdf.PdfWriter类来实现这个功能:
//use a variable to let my code fit across the page...
string path = Server.MapPath("PDFs");
PdfWriter.GetInstance(doc1, new FileStream(path + "/Doc1.pdf", FileMode.Create));
现在就可以对文档进行操作了,首先打开文档,往里写一段内容,最后关闭文档:
doc1.Open();
doc1.Add(new Paragraph("My first PDF"));
doc1.Close();
就是这么简单,下面刷新PDFS文件夹,你就会发现一个新的文件-Doc1.pdf,打开这个文件,刚才添加的段落已经成功显示.
很多时候,你并不希望通过默认设置创建默认大小,默认边距的PDF文档,所以iTextSharp允许你自定义这些设置,所以Document对象还提供了其他两个构造函数:
public Document(iTextSharp.text.Rectangle pageSize); public Document(iTextSharp.text.Rectangle pageSize, float, float, float, float);
第一个构造函数可以这样使用:
var doc = new Document(PageSize.A5);
PageSize类包含了一系列Rectangle对象代表了大多数纸张的大小,从A0到A10,B0到B10,legal,分类账,信封,明信片,剪报等,如果PageSize类内的纸张大小无法满足你的需求,你可以自定义一个Rectangle对象,对其设置值后作为参数传给Document构造函数:
var doc = new Document(new Rectangle(100f, 300f));
PdfWriter.GetInstance(doc, new FileStream(path + "/Doc2.pdf", FileMode.Create));
doc.Open();
doc.Add(new Paragraph("This is a custom size"));
doc.Close();
上面代码中,创建的PDF文档为100像素宽,300像素长,因为是72像素/英尺,所以这个文档并不大,实际上为1.39 英尺 x 4.17 英尺().
第二个构造函数以Rectangle和四个float类型的数字作为参数允许你通过float类型的变量自定义页边距,同样,单位是像素,默认半英尺的像素为36像素.
如果你使用PageSize类的构造函数,或者是自定义Rectangle,你还可以为文档设置背景色,这个设置可以通过RGB颜色值,或是CMYK值。如果你生成的PDF文档将会在专业的平板印刷机中印刷,你必须通过CMYK来设置.但对于大多数数码打印机来说,使用RGB更容易被接受,当然,如果你的PDF用于WEB,则优先使用RGB,设置文档的背景色,通过Rectangle对象的BackgroundColorproperty进行设置:
r.BackgroundColor = new CMYKColor(25, 90, 25, 0); r.BackgroundColor = new Color(191, 64, 124);
上面两行代码都会将文档的背景色设置为迷人的粉红色…

本文简单介绍了iTextSharp,也是你学习iTextSharp的入口,后续文章将会详细介绍这个敏捷的组件的一系列功能.
原文地址:http://www.mikesdotnetting.com/Article/80/Create-PDFs-in-ASP.NET-getting-started-with-iTextSharp
Translated by CareySon
---------------
写在后面:翻译这篇文章是因为项目中最近需要用到操作PDF,可是.Net下这个组件文档相对比较少,即使有一些资料,也不系统,所以我找到了这个系列的文章,在翻译的过程中,也是对我自己的学习和提高.后续文章翻译中…
【译】在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()方法创建图片有很多种方式,或 ...
随机推荐
- ajax.js
/**通用ajax服务的定义对象 * services可以是单个服务对象,也可以是service服务数组 * 具体服务的定义请参考appendServices成员函数 */ function Serv ...
- Yii2归档安装法
打开dos 操作命令 1.先把init.bat 拖到dos命令窗口 打开 (如果拖过去没打开 可以回车Enter一下) 这里需要注意一下 下图红圈中是两种环境 0->开发环境 1-&g ...
- DEDE里有个编码问题,不支持PHP5.4及以上版本!
公司新配置服务器,没有PHP环境,下载了个PHP5.5.25,配置完毕后,从另外一个服务器转移了一个DEDECMS做的网站,安装后,进入后台,恢复数据发现参数设置里的文本框,只要是中文信息,没有显示, ...
- django 基础入门(二)
一.关于数据库 1.首先django 1.9以上等版本不支持pymysql,因此需要做一些调整. 比如在settings.py 加入一段代码: import pymysql pymysql.insta ...
- Week14(12月11日):路由
Part I:提问 =========================== 1.Visual Studio 2013自带ASP.NET MVC最高版本为(). A.3 B.4 C.5 D.6 2 ...
- 条码的种类(types of barcode)
条码基本上分为两大类:一维条码(1D Barcode)及二维条码(2D Barcode). 一维条码(1D Barcode) 所谓一维条码,简单的说就是条码只能横向水平方向列印,其缺点是储存的资料量较 ...
- jQuery Ajax异步处理Json数据详解
先我们来看一个官方的实例使用 AJAX 请求来获得 JSON 数据,并输出结果: $("button").click(function(){ $.getJSON("dem ...
- GDKOI2016
天若有情天亦老 月若无恨月常圆 Day1 score cardcaptor AAAAAAAATT protal WWWWWWWWWW treasurehunt AAAAWXXXXX map AAATT ...
- BZOJ 1601 [Usaco2008 Oct]灌水
1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec Memory Limit: 162 MB Description Farmer John已经决定把水灌到他的n(1 ...
- MVC自定义AuthorizeAttribute实现权限管理
[转]MVC自定义AuthorizeAttribute实现权限管理 原文载自:小飞的DD http://www.cnblogs.com/feiDD/articles/2844447.html 网站的权 ...