.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 -利用块,短语,段落添加文本

    本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过Asp.Net创建PDFs,就像HTML和ASP.Net为文本提供了多种容器一样,iTextSharp ...

  2. ABBYY在MS Office中创建PDF文件的方法

    2019独角兽企业重金招聘Python工程师标准>>> ABBYY PDF Transformer+是一款可创建.编辑及将PDF文件转换为其他可编辑格式的OCR图文识别软件,不仅可以 ...

  3. 在ASP.NET中创建自定义控件初步(转)

    假如你有大量的asp.net页面,在其中你会要求访问者选择一个邮政编码.然后,基于这个邮编,显示与之相关的城市和省份.这项功能可以通过一个包含邮政编码的dropdownlist控件来组织,或者可以通过 ...

  4. Unity中创建PDF的方法

    前言 最近项目有需求要实现unity内生成学习记录的pdf,遇到不少问题,后面换了种简单的手段实现 1.ITextSharp实现 关于ITextSharp我就不多介绍了,使用起来很方便,但是在unit ...

  5. asp.net中创建一个简单的自定义控件

    //程序名称:Class1.cs //程序功能:创建自定义控件 using System; using System.Collections.Generic; using System.Text; u ...

  6. C# 创建PDF文档

    下面的示例将介绍如何在C#中创建PDF文档, 工具/原料 Free Spire.PDF for .NET VS2013(版本可自选) 方法/步骤 下载安装该类库(安装完成后,注意在项目中引用Spire ...

  7. Java使用 PDFBox创建 PDF 文件并将文本写入其中

    在本 PDFBox 教程中,我们将了解如何使用 PDFBox 2.0 创建 PDF 文件并将文本写入其中.我们将在此过程中逐步了解. 以下是使用 PDFBox 2.0 创建文本并将其写入 PDF 文件 ...

  8. 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务

    在我的上一篇文章<在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度>,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务并使用它来按计 ...

  9. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

最新文章

  1. 冒泡 MS Azure 不便宜。。。
  2. 亿级流量电商系统JVM性能调优实战
  3. Rails 新浪微博的登录认证
  4. A-Frame.js 学习文档翻译(一)实体
  5. C#——LINQ技术DEMO
  6. VTK:PolyData之RuledSurfaceFilter
  7. NOIP2005普及组第3题 采药 (背包问题)
  8. 神奇又好玩的谢尔宾斯基雪花!
  9. 阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories
  10. MySQL主键自增长报duplicate_MySQL使用on duplicate key update引起主键不连续自增
  11. Python Tree库绘制多叉树的用法介绍
  12. ZK Framework(一、HelloWorld)
  13. UINavigationController_学习笔记
  14. C#制作不规则窗体的简单方法
  15. 【保证能用】Ubuntu创建一个正常权限的用户
  16. 计算机与电气工程sci期刊,2019年电气工程领域的英文SCI期刊(影响因子+近年来期刊发表数量)...
  17. gamemaker学习笔记:截屏
  18. input file本地图片预览的方法(兼容IE、Chrome和Firefox)
  19. 【iOS遇到的问题】switch控件--在设置switch按钮状态为on或者off,运行app,模拟器黑屏
  20. CToolBar的使用总结1

热门文章

  1. java 技术 管理_java技术转型产品或者项目管理,请大神指导?
  2. mongoTemplate 条件查询
  3. mysql索引详细介绍简书_MySql索引详解
  4. 升级mysql服务器二进制备份_MySQL二进制日志备份和恢复详解
  5. vscode jsx html补全,VScode设置jsx语法自动补全
  6. Redis 16 个常见使用场景
  7. maven多项目打包报错---子模块相互依赖打包时所遇到的问题:依赖的程序包找不到 package xxx does not exist
  8. GIT:如何管理本机的多个ssh密钥(多个远程仓库账号)
  9. Python的零基础超详细讲解(第一天)-Python简介以及下载
  10. mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解