.NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过,用过简单的例子,不过代码没有写成专门的文章。最近在查找资料的时候,又发现一款小巧的写PDF文件的C#组件:PDF File Writer。该开源组件是在codeproject,还没有托管到其他地方,所以花了点时间了解了一下,分享给大家。
.NET开源目录:【目录】本博客其他.NET开源项目文章目录
本文原文地址:http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_PdfFileWriter.html
1.PDF File Writer基本介绍
1.1 支持的常用功能
PDF File Writer组件可以在.NET应用程序中直接创建PDF格式的文件。最低的开发环境是.NET 4.0 + VS 2013。我们来看看该组件支持的PDF的一些功能:
图形:支持画线、矩形、多边形、贝塞尔曲线,前景和背景颜色,模式和阴影。
图片:支持位图图像和矢量图像
文本:支持行文本和列文本
条形码:支持条形码:Barcode 128, Barcode 39, Barcode interleaved 2 of 5等
二维码:支持二维条码
加密:支持AES-128加密算法
Web链接:支持Web超链接
书签:支持文档大纲
图表:支持微软的图表,支持数据表格,支持声音,视频播放;
1.2 使用PDF File Writer创建PDF的步骤
使用PDF File Writer在程序中创建一个PDF文件的主要步骤如下:
Step 1: 创建PdfDocument文件对象
Step 2: 创建资源对象,如文字(PdfFont),图像(PdfImage)等
Step 3: 创建文件页对象PdfPage
Step 4: 创建内容对象PdfContents
Step 5: 在内容对象上添加文字,或者图像等内容
重复3, 4 ,5 创建其他页
Step 6: 使用PdfDocument对象的CreateFile方法创建PDF文
1.3 PDF File Writer创建的PDF文件效果预览
看看使用PDF File Writer创建的PDF的效果,非常不错。这也是我偶尔碰到非常震撼,拿过来分享的重要原因。
2.一个简单的使用案例
我们根据官方提供的例子,可以快速入门,一起来看看基本代码。
2.1 先创建基本对象
- private PdfFont ArialNormal;
- private PdfFont ArialBold;
- private PdfFont ArialItalic;
- private PdfFont ArialBoldItalic;
- private PdfFont TimesNormal;
- private PdfFont Comic;
- private PdfTilingPattern WaterMark;
- private PdfDocument Document;
- private PdfPage Page;
- private PdfContents Contents;
然后创建空白文档
- // Step 1:创建空文档,文档参数有类型,可以使用枚举进行选择,和返回的文件名称
- Document = new PdfDocument(PaperType.Letter, false, UnitOfMeasure.Inch, FileName);
- //加密测试例子
- //Document.SetEncryption(null, null, Permission.All & ~Permission.Print, EncryptionType.Aes128);
- //创建PDF文件信息目录
- PdfInfo Info = PdfInfo.CreatePdfInfo(Document);
- Info.Title("Article Example");
- Info.Author("Uzi Granot Granotech Limited");
- Info.Keywords("PDF, .NET, C#, Library, Document Creator");
- Info.Subject("PDF File Writer C# Class Library (Version 1.14.1)");
2.2 创建字体等资源
- //定义不同的字体类型,如下所示
- String FontName1 = "Arial";
- String FontName2 = "Times New Roman";
- ArialNormal = PdfFont.CreatePdfFont(Document, FontName1, FontStyle.Regular, true);
- ArialBold = PdfFont.CreatePdfFont(Document, FontName1, FontStyle.Bold, true);
- ArialItalic = PdfFont.CreatePdfFont(Document, FontName1, FontStyle.Italic, true);
- ArialBoldItalic = PdfFont.CreatePdfFont(Document, FontName1, FontStyle.Bold | FontStyle.Italic, true);
- TimesNormal = PdfFont.CreatePdfFont(Document, FontName2, FontStyle.Regular, true);
- Comic = PdfFont.CreatePdfFont(Document, "Comic Sans MS", FontStyle.Bold, true);
2.3 创建文字示例
- Contents.DrawText(Comic, 40.0, 4.25, 9.25, TextJustify.Center, 0.02, Color.FromArgb(128, 0, 255), Color.FromArgb(255, 0, 128), "PDF FILE WRITER");
- Contents.SaveGraphicsState();
- Contents.SetColorNonStroking(Color.Purple);
- Contents.DrawText(Comic, 30.0, 4.25, 8.75, TextJustify.Center, "Example");
- Contents.RestoreGraphicsState();
- //Step 3:添加新页面
- Page = new PdfPage(Document);
- //Step 4:添加内容到页面
- Contents = new PdfContents(Page);
2.4 绘制条形码
- Contents.SaveGraphicsState();
- BarcodeEAN13 Barcode1 = new BarcodeEAN13("1234567890128");
- Contents.DrawBarcode(1.3, 7.05, 0.012, 0.75, Barcode1, ArialNormal, 8.0);
- PdfQRCode QRCode = new PdfQRCode(Document, "http://www.codeproject.com/Articles/570682/PDF-File-Writer-Csharp-Class-Library-Version", ErrorCorrection.M);
- Contents.DrawQRCode(QRCode, 6.0, 6.8, 1.2);
- // 添加链接
- Page.AddWebLink(6.0, 6.8, 7.2, 8.0, "http://www.codeproject.com/Articles/570682/PDF-File-Writer-Csharp-Class-Library-Version");
- //保存
- Contents.RestoreGraphicsState();
2.5 绘制图表
- Contents.SaveGraphicsState();
- //创建MS Chart图表
- Chart PieChart = PdfChart.CreateChart(Document, 1.8, 1.5, 300.0);
- PdfImageControl ImageControl = new PdfImageControl();
- ImageControl.SaveAs = SaveImageAs.IndexedImage;
- PdfChart PiePdfChart = new PdfChart(Document, PieChart, ImageControl);
- PieChart.AntiAliasing = AntiAliasingStyles.None;
- //设置颜色
- PieChart.BackColor = Color.FromArgb(220, 220, 255);
- PieChart.Palette = ChartColorPalette.BrightPastel;
- //默认字体
- Font DefaultFont = PiePdfChart.CreateFont("Verdana", FontStyle.Regular, 0.05, FontSizeUnit.UserUnit);
- Font TitleFont = PiePdfChart.CreateFont("Verdana", FontStyle.Bold, 0.07, FontSizeUnit.UserUnit);
- // 设置标题
- Title Title1 = new Title("Pie Chart Example", Docking.Top, TitleFont, Color.Purple);
- PieChart.Titles.Add(Title1);
- //图例
- Legend Legend1 = new Legend();
- PieChart.Legends.Add(Legend1);
- Legend1.BackColor = Color.FromArgb(230, 230, 255);
- Legend1.Docking = Docking.Bottom;
- Legend1.Font = DefaultFont;
- // 图表区域
- ChartArea ChartArea1 = new ChartArea();
- PieChart.ChartAreas.Add(ChartArea1);
- ChartArea1.BackColor = Color.FromArgb(255, 200, 255);
- Series Series1 = new Series();
- PieChart.Series.Add(Series1);
- Series1.ChartType = SeriesChartType.Pie;
- Series1.Font = DefaultFont;
- Series1.IsValueShownAsLabel = true;
- Series1.LabelFormat = "{0} %";
- Series1.Points.Add(22.0);
- Series1.Points[0].LegendText = "Apple";
- Series1.Points.Add(27.0);
- Series1.Points[1].LegendText = "Banana";
- Series1.Points.Add(33.0);
- Series1.Points[2].LegendText = "Orange";
- Series1.Points.Add(18.0);
- Series1.Points[3].LegendText = "Grape";
- Contents.DrawChart(PiePdfChart, 5.6, 5.0);
- // 保存
- Contents.RestoreGraphicsState();
2.6 生成PDF
- // Step 6:创建PDF
- Document.CreateFile();
- //打开PDF文件
- Process Proc = new Process();
- Proc.StartInfo = new ProcessStartInfo(FileName);
- Proc.Start();
3.资源
1.Codeproject文章连接:http://www.codeproject.com/Articles/570682/PDF-File-Writer-Csharp-Class-Library-Version
2.PDF File Writer DLL下载:PdfFileWriter_dll.zip
3.PDF File Writer 帮助文档:PdfFileWriterCHM.rar
4.PDF File Writer源代码与Demo:PdfFileWriter-Code.rar
注意:源代码中的相关素材进行了精简,否则文件比较大,长传比较大。如果有需求可以去文章链接原文下载,或者单独留下邮箱,我有空发送一下。
.NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍的更多相关文章
- .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...
- .NET平台开源项目速览(12)哈希算法集合类库HashLib
.NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部分情况下已经满足了需求,而且.NET实现的都是目前国际上 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- .NET平台开源项目速览(4).NET文档生成工具ADB及使用
很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...
- .NET平台开源项目速览(17)FluentConsole让你的控制台酷起来
从该系列的第一篇文章 .NET平台开源项目速览(1)SharpConfig配置文件读写组件 开始,不知不觉已经到第17篇了.每一次我们都是介绍一个小巧甚至微不足道的.NET平台的开源软件,或者学习,或 ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- .NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍
Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器 ...
- .NET平台开源项目速览(1)SharpConfig配置文件读写组件
在.NET平台日常开发中,读取配置文件是一个很常见的需求.以前都是使用System.Configuration.ConfigurationSettings来操作,这个说实话,搞起来比较费劲.不知道大家 ...
- .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...
随机推荐
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- 前端学HTTP之报文首部
前面的话 首部和方法配合工作,共同决定了客户端和服务器能做什么事情.在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更通用一些.本文将详细介绍HTTP报文中的首部 结构 ...
- webapp应用--模拟电子书翻页效果
前言: 现在移动互联网发展火热,手机上网的用户越来越多,甚至大有超过pc访问的趋势.所以,用web程序做出仿原生效果的移动应用,也变得越来越流行了.这种程序也就是我们常说的单页应用程序,它也有一个英文 ...
- Java程序员:工作还是游戏,是该好好衡量一下了
前阵子我终于下定决心,删掉了硬盘里所有的游戏. 身为一个程序猿,每天都要和各种新技术打交道,闲暇时间,总还得看一下各大论坛,逛逛博客园啥的,给自己充充电.游戏的话,其实我自小就比较喜欢,可以算是一种兴 ...
- springmvc SSM shiro redis 后台框架 多数据源 代码生成器
A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单 下载地址 ; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类 ...
- Linux设备文件简介(转载)
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取).块设备(有缓冲且可以随机存取).每个字符设备和块设备都必须有主.次设备号,主设备号相同的设 备是同类设备(使用同一个驱动程序).这些设 ...
- 自定义ConfigSection
CCustom configuration section with intelisense
- 把int*传值给char*,打印出错误的数字
首先进入debug模式查看i的地址也就是ptr的值 以16进制位小端模式存储(一个整型四个字节,8位16进制数)(根据系统位数情况) 紧接着因为ptr是char*型指针变量,读取数据时按照一个字节一个 ...
- [PHP源码阅读]array_push和array_unshift函数
在PHP中,在数组中添加元素也是一种很常用的操作,分别有在数组尾部和头部添加元素,看看PHP内部是如何实现数组插入的操作. 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下,给个sta ...