原文 【译】在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起步的更多相关文章

  1. 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版

    原文 [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵 ...

  2. 【译】在Asp.Net中操作PDF - iTextSharp - 绘制矢量图

    原文 [译]在Asp.Net中操作PDF - iTextSharp - 绘制矢量图 在上一篇iTextSharp文章中讲述了如何将现有的图片插入PDF中并对其进行操作.但有时,你需要在PDF中绘制不依 ...

  3. 【译】在Asp.Net中操作PDF – iTextSharp - 操作图片

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 操作图片 作为我的iTextSharp系列的文章的第七篇,开始探索使用iTextSharp在PDF中操作图片,理解本篇文章需要看 ...

  4. 【译】在Asp.Net中操作PDF – iTextSharp - 使用表格

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用表格 使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并 ...

  5. 【译】在Asp.Net中操作PDF – iTextSharp - 使用链接和书签

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用链接和书签 用户和PDF文档的交互可以通过锚(链接)和书签进行,接着我前面iTextSharp的系列文章,本篇文章主要讲通过 ...

  6. 【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本

    原文 [译]在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本 本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过As ...

  7. 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体

    原文 [译]在Asp.Net中操作PDF - iTextSharp - 使用字体 紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方 ...

  8. 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版(转)

    [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版   在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵盖 ...

  9. 在Asp.Net中操作PDF – iTextSharp - 使用表格

    使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并不会深入探讨表格,仅仅是提供一个使用iTextSharp生成表格的方法介绍 使用i ...

  10. 在Asp.Net中操作PDF – iTextSharp - 操作图片

    iTextSharp支持所有主流的图片格式,比如:jpg, tif, gif, bmp, png和wmf.在iTextSharp中使用Image.GetInstance()方法创建图片有很多种方式,或 ...

随机推荐

  1. ajax.js

    /**通用ajax服务的定义对象 * services可以是单个服务对象,也可以是service服务数组 * 具体服务的定义请参考appendServices成员函数 */ function Serv ...

  2. Yii2归档安装法

    打开dos 操作命令  1.先把init.bat  拖到dos命令窗口 打开 (如果拖过去没打开 可以回车Enter一下) 这里需要注意一下  下图红圈中是两种环境  0->开发环境  1-&g ...

  3. DEDE里有个编码问题,不支持PHP5.4及以上版本!

    公司新配置服务器,没有PHP环境,下载了个PHP5.5.25,配置完毕后,从另外一个服务器转移了一个DEDECMS做的网站,安装后,进入后台,恢复数据发现参数设置里的文本框,只要是中文信息,没有显示, ...

  4. django 基础入门(二)

    一.关于数据库 1.首先django 1.9以上等版本不支持pymysql,因此需要做一些调整. 比如在settings.py 加入一段代码: import pymysql pymysql.insta ...

  5. Week14(12月11日):路由

    Part I:提问 =========================== 1.Visual Studio 2013自带ASP.NET MVC最高版本为(). A.3  B.4  C.5  D.6 2 ...

  6. 条码的种类(types of barcode)

    条码基本上分为两大类:一维条码(1D Barcode)及二维条码(2D Barcode). 一维条码(1D Barcode) 所谓一维条码,简单的说就是条码只能横向水平方向列印,其缺点是储存的资料量较 ...

  7. jQuery Ajax异步处理Json数据详解

    先我们来看一个官方的实例使用 AJAX 请求来获得 JSON 数据,并输出结果: $("button").click(function(){ $.getJSON("dem ...

  8. GDKOI2016

    天若有情天亦老 月若无恨月常圆 Day1 score cardcaptor AAAAAAAATT protal WWWWWWWWWW treasurehunt AAAAWXXXXX map AAATT ...

  9. BZOJ 1601 [Usaco2008 Oct]灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Description Farmer John已经决定把水灌到他的n(1 ...

  10. MVC自定义AuthorizeAttribute实现权限管理

    [转]MVC自定义AuthorizeAttribute实现权限管理 原文载自:小飞的DD http://www.cnblogs.com/feiDD/articles/2844447.html 网站的权 ...