前言 html
本文大部份内容来自http://www.codeproject.com/Articles/710747/First-thoughts-on-Spire-Doc-for-NET。api
针对我我的来讲,对办公自动化并无多少需求。但做为一个开发人员,若是有需求的时候最好有一个library工具。前段时间,E-iceblue的销售人员之一联系我,但愿我能帮他们Spire.Office作一个测评。首先我很高兴他们能找到我,这也让我有了一个接触和学习新技术的机会,在此很是感激E-iceblue的这位员工。他们官方网站为http://www.e-iceblue.com/。 浏览器
Spire.Office for .NET 是一个由E-iceblue提供的编译型的企业级办公的.NET组件。它包含了Spire.Doc,Spire XMLS,Spire.Presentation,Spire.PDF,Spire.DataExport, Spire.PDFViewer, Spire.DocViewer, and Spire.BarCode.Spire.Office包含基于.Net 组件的最新版本。安全
使用Spire.Office for .NET,开发人员能够建立更为普遍的应用。它使开发人员可以打开,建立,修改,转换,打印,查看微软Word ,Excel,PowerPoint,PDF文档。此外,它容许用户将数据导出到流行的文件,如MS Word / Excel/ RTF /Access,PowerPoint , PDF,XPS , HTML,XML ,Text, CSV , DBF ,Clipboard剪贴板, SYLK等。框架
最为一个独立的Office .NET组件,Spire.Office不须要在系统上安装微软Office文件。此外,它在安全性,稳定性,可扩展性,速度,价格和功能方面更好的替代微软办公自动化。ide
Spire.Office for .NET能够连接到任何类型的32位或64位的.NET应用程序,它包括基于.NET框架2.0到4.5版本的Asp.NET,Web Services和WinForms等应用程序。工具
下面我就来简单的介绍下Spire.Doc和Spire.PDF,关于我简单入门使用的一个状况吧。学习
Spire.Doc for .NET 字体
Spire.Doc for .NET是一个专业的Word .NET library,使用该工具开发人员能够在任意.NET品台(C#,VB.NET,ASP.NET)上快速建立,读取,写入,转换, 打印Word文档文件。做为一个独立的Word 组件,Spire.Doc for .NET并不须要Microsoft Word安装在你的机器上。并且,它能够将Microsoft Word文档建立功能集成到任何开发者的.NET应用程序。网站
如何获得它?
首先你能够进入官网http://www.e-iceblue.com/
而后你能够点击你须要的组件,好比如今我须要的Spire.Doc for .NET,进入以后你即可如下载并最终能够从他们的网站购买Spire.Doc。
下载完以后你会发现是一个MSI的安装文件。
该Spire.Doc安装包是干净的,专业的MSI安装程序。前几个对话框是一些提示信息以及许可协议。顺便说一句,谁会把全部的警示信息都仔细看一遍?但若是你是做为商业用途准备投资和使用该产品的公司,阅读任何软件公司的许可协议都是应该的。
安装该Spire.Dco包只用了180M的空间。
MSI安装选项提供了全面的信息,其中包括:
一、安装组件(支持不一样.NET Framework版本的多个组件)
二、安装demo以及源代码
三、将文件安装到开发者本地机器上
四、添加组件到Visual Studio的引用对话框中
安装完成后,开发人员必须手动添加引用的程序集。这里能够在Windows HTML帮助下将文件安装到本地。
建立一个Word文档
不少年前,咱们曾面临一个问题,就是找到要插入格式化文本到文档的有效途径。具体来讲,就是要生成一个多段落,多文本并含有特殊格式的Word文档。
让咱们使用Spire.Doc建立一个你们熟悉的写上Hello World的Word文档。如下是具体步骤:
一、我用VS2012建立了已控制台的应用程序
2.在解决方案资源管理器(Solution Explorer)中,添加一个新的引用(reference) 到Spire.Doc.dll(在以前安装MSI后的bin路径下)
3. 我想看看Spiral.Doc的命名惯例是跟个人直觉一致。因而我开始不看他们的文档,使用对象浏览器 (object browser)来检查可用的接口。按个人猜想,我想相似下面的代码能够帮我创建我想要的Word文本。
static void Main(string[] args) { Spire.Doc.Document document = new Document(); Section section = document.AddSection(); Paragraph paragraph = section.AddParagraph(); paragraph.AppendText("Hello World"); document.SaveToFile("Hello Wrold.doc", FileFormat.Doc); Console.WriteLine("Word文档建立成功!"); Console.ReadLine(); }
编译成功以后,F5运行
若是你有一个许可证,评估信息(Evaluation Warning)就会消失。
四、虽然咱们很忙,也不妨让咱们来看看它是否能够将Word文档导出为PDF或HTML。
Spire.Doc.Document document = new Document(); Section section = document.AddSection(); Paragraph paragraph = section.AddParagraph(); paragraph.AppendText("Hello World"); document.SaveToFile("Hello Wrold.doc", FileFormat.Doc); document.SaveToFile("Hello World.pdf", FileFormat.PDF); Console.WriteLine("Word文档建立成功!"); Console.ReadLine();
其中world拼写错误了,哈哈。提一下就不修改了。
我这里是经过浏览器打开的pdf文件
嗯,还不错吧,仅仅是多用一行代码,我能够转换,个人Word文档保存为PDF格式。对于咱们开发者来讲这是很方便的,几乎天天无业上都会要求将Word转换到PDF。从我我的的经验,这是天天论坛上最热的问题之一。
五、这是最简单的例子之一,但也能够经过stream读取HTML来建立Word文档,插入html文件,格式化文件或添加任何元数据属性到Word 文档。
支持的文件格式
Spire.PDF for .NET
Spire.PDF for .NET 是一款由e-iceblue公司开发的专业性的PDF文档建立组件。它可以使用户在不用Adobe Acrobat和其余外部控件的状况下,运用.NET 应用程序阅读,编写和操纵PDF 文档。Spire.PDF for .NET不只能够运用在服务端好比:ASP.NET 或者其余环境,还能够应用在Windows Forms 应用程序中。Spire.PDF for .NET 适合应用于全部常见的坏境中,好比:建立好的PDF文档能够存到磁盘中, 还能够在Windows Forms应用程序,ASP.NET 应用程序客户端浏览器中保存为数据流。
Spire.PDF for .NET 功能丰富。 除了基本的功能好比:绘制多种图形,图片,建立窗体字段,插入页眉页脚,输入数据表,自动对大型表格进行分页外,Spire.PDF for .NET还支持PDF数字签名,将HTML转换成PDF格式,提取PDF文档中的文本信息和图片,存为文本格式和各类图片格式,甚至能够将PDF中的附件提取出来。
主要功能
一、支持嵌入式字体,Truetype 字体和CJK字体。
二、支持绘图。好比:矩形,环形,弧形,椭圆形,也能够自定笔刷将其填充。
三、能够将图片从数据流,磁盘文件中载入到PDF 文档中。 在PDF 文档中既能够绘制梯状图形和矢量图像,还支持掩模和水印图像。
四、能够在PDF 文档中载入数据表。能够设置表中的行和列的格式,还能够在表内加入图形元素。
五、自动对PDF 中的大型表格进行分页。
六、建立窗体字段。好比在PDF 文档中建立按钮,文本框,列表框,复选框等等。
七、在PDF 中插入页眉页脚。
八、经过设置全部者密码和用户密码来加密PDF文档。
九、经过做者的签名来保护PDF文档。
十、读取当前PDF文档的表格而且填充表格。
十一、HTML网页在转换到PDF文档时会拆分为多个大型页面,这些页面能够原本来本的展示在PDF文档中,并且在PDF文档的分页处没有任何文字的截断。用户还能够将这些网页在不须要临时文件的状况下,直接转换为数据流来建立PDF文档。
十二、等等
下面来制做一个PDF文件吧
一、新建另一个控制台应用程序项目
二、添加Spire.PDF引用,此次我经过Nuget插件来添加
下面是制做一个简单PDF的代码
class Program { static void Main(string[] args) { ///一、建立一个PDF 的Document PdfDocument doc = new PdfDocument(); PdfUnitConvertor unitCvtr = new PdfUnitConvertor(); PdfMargins margin = new PdfMargins(); margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Bottom = margin.Top; margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Right = margin.Left; //二、建立一个margin为上面定义的PDF的Page页 PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, margin); ///三、插入一个背景图片 System.Drawing.Image img = System.Drawing.Image.FromFile(@"1.png"); page.BackgroundImage = img; ////四、添加水印 PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3)); brush.Graphics.SetTransparency(0.3f); brush.Graphics.Save(); brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2); brush.Graphics.RotateTransform(-45); brush.Graphics.DrawString("www.cnblogs.com/aehyok", new PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.Violet, 0, 0, new PdfStringFormat(PdfTextAlignment.Center)); brush.Graphics.Restore(); brush.Graphics.SetTransparency(1); page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.ClientSize)); float y = 10; //五、设置标题 PdfBrush brush1 = PdfBrushes.Black; PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold)); PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center); page.Canvas.DrawString("Country List", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1); y = y + font1.MeasureString("Country List", format1).Height; y = y + 5; ////六、定义Table元数据 String[] data = { "Name;Capital;Continent;Area;Population", "Argentina;Buenos Aires;South America;2777815;32300003", "Bolivia;La Paz;South America;1098575;7300000", "Brazil;Brasilia;South America;8511196;150400000", "Canada;Ottawa;North America;9976147;26500000", }; String[][] dataSource = new String[data.Length][]; for (int i = 0; i < data.Length; i++) { dataSource[i] = data[i].Split(';'); } ///七、画Table绑定数据 PdfTable table = new PdfTable(); table.Style.CellPadding = 2; table.Style.HeaderSource = PdfHeaderSource.Rows; table.Style.HeaderRowCount = 1; table.Style.ShowHeader = true; table.DataSource = dataSource; ///直接绑定数据源 PdfLayoutResult result = table.Draw(page, new PointF(0, y)); y = y + result.Bounds.Height + 5; PdfBrush brush2 = PdfBrushes.Gray; PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 9f)); page.Canvas.DrawString(String.Format("* {0} countries in the list.", data.Length - 1), font2, brush2, 5, y); //八、保存文件 doc.SaveToFile("SimpleTable.pdf"); doc.Close(); ///九、打开刚刚制做的文件 System.Diagnostics.Process.Start("SimpleTable.pdf"); } }
运行后的效果图
能够发现其中简单的几个要素
一、背景图片
二、水印的添加
三、Table勒
整体而言,我印象深入的是本产品所提供的功能和易用性。虽然它并不老是如我想的那样竭尽所能,这也多是因为我缺少对Spire.Office组件如何正确工做的认识。
示例代码下载地址 http://url.cn/S7Znij