转:ABCpdf.NET 的简易使用指南
2010-11-11 01:25
351 查看
简单介绍
iTextSharp是一个很强大的动态创建pdf的工具, 可是缺少一个可以直接转换html到pdf的功能, 而这个功能用ABCpdf.NET轻而易举的实现, 特此向大家介绍一下ABCpdf的用法
当然, iTextSharp是免费的, ABCpdf是需要付费的
First, 我们要把ABCpdf这个dll加入到工程的引用
Secod, 然后using其命名空间
安装和分发:
ABCpdf的功能全部是2个DLL提供的
ABCpdfCE5.DLL 核心引擎库
ABCpdf.DLL dotNET接口库
它的安装程序会自动的把ABCpdf.dll加入到GAC, 把ABCpdfCE5.dll复制到System32目录下
对于我们开发来说,最简单的莫过于将这2个DLL都放置到BIN目录下即可
开始使用:
如果是分发演示程序, 则可以设置为从PDFSettings这个程序里取得的试用授权码
字体和语言
如果你要输出的是英文文档,一般直接用其内置的基本字体就可以了。
基本字体包括:
Times-Roman
Times-Bold
Times-Italic
Times-BoldItalic
Helvetica
Helvetica-Bold
Helvetica-Oblique
Helvetica-BoldOblique
Courier
Courier-Bold
Courier-Oblique
Courier-BoldOblique
Symbol
ZapfDingbats
pdf的中文字体有2种实现,一种是内嵌字体(Embed),就是把用到的汉字的字体部分保存到pdf,这样即使在没有安装那种字体的机器上也能看到正确的字体显示,优点是文档在不同机器上的效果都能保持一致, 且显示的效率也比较高, 缺点就是文档会变大一点, 嵌入字体的时候可以通过设置subset来确定是否嵌入整个字体还是只有用到的部分
这句表示嵌入一个Verdana的拉丁字体, false 代表水平显示, true 代表嵌入子集(这个我也没搞太明白)
theFont是返回字体的Object ID,这个ID可以直接赋给theDoc.Font来设置其为默认字体
另一种是引用字体(Refs), 这种方式因为是引用, 所以不会导致文档变大, 但是引用的方式必须要求观看文档的时候需要用较新版本的Acrobat (Reader), 并且必须安装有语言包才能正确显示文档
加入引用隶书这个中文字体, ChineseS是代表简体中文, 还有: Latin, Unicode, Korean, Japanese, ChineseT可以选择
字体的名字还可以用其英文(eg: LiSu)或文件名(eg: SIMLI.TTF)指示
坐标系
pdf的坐标系不同于Windows所用的左上为原点的坐标系, 它是采用左下为坐标原点的, 如果你实在不习惯使用这种坐标,你可以通过设置Doc的TopDown为true来改变原点的位置
Doc.Rect属性可能是最重要的属性了, 如果要输出什么东西的话, 都是输出到Rect所指定的矩形范围内
ABCpdf默认的文档大小为612x792 pixel,也就是8.5x11 inch, 默认DPI为72
HTML / CSS 呈现
ABCpdf完全支持HTML和CSS
ABCpdf使用Internet Explorer的HTML引擎来解析和预处理要插入到pdf的HTML
屏幕的解析度通常是96 dpi, 而pdf的dpi为72, 因此打印出来的文档会比屏幕上看到的要大
你可以使用CSS中的page-break-before, page-break-after 和 page-break-inside来控制分页, 但是需要注意以下的代码:
... 会分页 ...
... 则不会分页, 我估计是因为空对象被优化掉了
下面的代码演示如何转换html到pdf
Grid & Rect
Header & Footer
如果我们是用PDF作为报表输出的话, 当然需要在每一页上出现表头和页脚
更高级的应用
ABCpdf还支持用AddMovies在pdf中嵌入Flash(SWF), AVI, MPEG和WMV
ABCpdf支持创建电子表单, 不过这已经超过我使用的目的了, 因为我要做的是用pdf输出报表
此外, 我感到不方便的就是,似乎ABC.net没有去封装文档属性里面的东西, 比如title, subject, author, 而是直接提供的Doc.SetInfo来修改, 而这个方法用起来不是很方便, 因为你必须要先了解Adobe PDF Specification, 才能用正确, 这一点上远不如iTextSharp方便
ok, 就这么多了,写这个东西已经花了我不少的时间了
iTextSharp是一个很强大的动态创建pdf的工具, 可是缺少一个可以直接转换html到pdf的功能, 而这个功能用ABCpdf.NET轻而易举的实现, 特此向大家介绍一下ABCpdf的用法
当然, iTextSharp是免费的, ABCpdf是需要付费的
First, 我们要把ABCpdf这个dll加入到工程的引用
Secod, 然后using其命名空间
using WebSupergoo.ABCpdf5; //一般加入这个声明就够了,下面2个基本上很少有用 using WebSupergoo.ABCpdf5.Objects; using WebSupergoo.ABCpdf5.Atoms;
安装和分发:
ABCpdf的功能全部是2个DLL提供的
ABCpdfCE5.DLL 核心引擎库
ABCpdf.DLL dotNET接口库
它的安装程序会自动的把ABCpdf.dll加入到GAC, 把ABCpdfCE5.dll复制到System32目录下
对于我们开发来说,最简单的莫过于将这2个DLL都放置到BIN目录下即可
开始使用:
Doc theDoc = new Doc(); //创建一个Doc对象
XSettings.License = "change this text to your key"; //分发正式程序的时候需要设置License
如果是分发演示程序, 则可以设置为从PDFSettings这个程序里取得的试用授权码
theDoc.SetInfo(0, "License", "cd9b5c07db69df2bf57c0a04d9bca58b10c44889c9fb197984e592f49addfce5ec5fe85d7b9205bc");
字体和语言
如果你要输出的是英文文档,一般直接用其内置的基本字体就可以了。
基本字体包括:
Times-Roman
Times-Bold
Times-Italic
Times-BoldItalic
Helvetica
Helvetica-Bold
Helvetica-Oblique
Helvetica-BoldOblique
Courier
Courier-Bold
Courier-Oblique
Courier-BoldOblique
Symbol
ZapfDingbats
pdf的中文字体有2种实现,一种是内嵌字体(Embed),就是把用到的汉字的字体部分保存到pdf,这样即使在没有安装那种字体的机器上也能看到正确的字体显示,优点是文档在不同机器上的效果都能保持一致, 且显示的效率也比较高, 缺点就是文档会变大一点, 嵌入字体的时候可以通过设置subset来确定是否嵌入整个字体还是只有用到的部分
int theFont = theDoc.EmbedFont("Verdana", "Latin", false, true); theDoc.FontSize = 12; //设置默认字体大小
这句表示嵌入一个Verdana的拉丁字体, false 代表水平显示, true 代表嵌入子集(这个我也没搞太明白)
theFont是返回字体的Object ID,这个ID可以直接赋给theDoc.Font来设置其为默认字体
另一种是引用字体(Refs), 这种方式因为是引用, 所以不会导致文档变大, 但是引用的方式必须要求观看文档的时候需要用较新版本的Acrobat (Reader), 并且必须安装有语言包才能正确显示文档
theDoc.Font = theDoc.AddFont("隶书", "ChineseS");
加入引用隶书这个中文字体, ChineseS是代表简体中文, 还有: Latin, Unicode, Korean, Japanese, ChineseT可以选择
字体的名字还可以用其英文(eg: LiSu)或文件名(eg: SIMLI.TTF)指示
坐标系
pdf的坐标系不同于Windows所用的左上为原点的坐标系, 它是采用左下为坐标原点的, 如果你实在不习惯使用这种坐标,你可以通过设置Doc的TopDown为true来改变原点的位置
Doc.Rect属性可能是最重要的属性了, 如果要输出什么东西的话, 都是输出到Rect所指定的矩形范围内
ABCpdf默认的文档大小为612x792 pixel,也就是8.5x11 inch, 默认DPI为72
HTML / CSS 呈现
ABCpdf完全支持HTML和CSS
ABCpdf使用Internet Explorer的HTML引擎来解析和预处理要插入到pdf的HTML
屏幕的解析度通常是96 dpi, 而pdf的dpi为72, 因此打印出来的文档会比屏幕上看到的要大
你可以使用CSS中的page-break-before, page-break-after 和 page-break-inside来控制分页, 但是需要注意以下的代码:
<div style="page-break-before:always"> </div>
... 会分页 ...
<div style="page-break-before:always"></div>
... 则不会分页, 我估计是因为空对象被优化掉了
下面的代码演示如何转换html到pdf
theDoc.Rect.Inset(24, 48); //Rect默认是文档整个页面大小, 这里的Inset表示将Rect左右留出24的空白,上下留出48的空白 int theID = theDoc.AddImageUrl(edtURL.Text); while (true) XImage theImg = new XImage(); theImg.SetFile(@"C:\Cover.jpg"); theDoc.TopDown = true; theDoc.Rect.Left = 100; theDoc.Rect.Top = 100; theDoc.Rect.Width = theImg.Width; theDoc.Rect.Height = theImg.Height; theDoc.Rect.Magnify(2, 2); //把图像放大2倍 theDoc.AddImageObject(theImg, false);
Grid & Rect
theDoc.Page = theDoc.AddPage(); //准备输出内容到新的一页 theDoc.AddGrid(); //这个是让页面输出类似坐标纸样的表格, 可以帮助开发者更好地定位输出 theDoc.Color.String = "0 255 0"; //设置默认颜色为绿色 theDoc.Width = 4; // 这个是设置刷子的宽度为4 theDoc.Rect.Position(100, 200); //指定左下角输出位置为100,200 theDoc.Rect.Width = 400; theDoc.Rect.Height = 500; theDoc.FrameRect(); //画Rect的边框
Header & Footer
如果我们是用PDF作为报表输出的话, 当然需要在每一页上出现表头和页脚
theDoc.Rect.String = "24 750 588 778"; //直接通过这种方式指定表头输出区域 theDoc.HPos = 0.5; //居中, 0代表居左, 1代表居右 theDoc.VPos = 0.5; //居中, 0代表靠上, 1代表靠下 theDoc.Color.String = "0 0 255"; //蓝色 for (int i = 1; i <= theDoc.PageCount; i++) theDoc.Rect.String = "24 12 588 40"; theDoc.HPos = 1.0; //Right theDoc.VPos = 0.5; //Middle theDoc.Color.String = "0 0 255"; for (int i = 1; i <= theDoc.PageCount; i++) for (int i = 1; i <= theDoc.PageCount; i++) { theDoc.PageNumber = i; theDoc.Flatten(); }
更高级的应用
ABCpdf还支持用AddMovies在pdf中嵌入Flash(SWF), AVI, MPEG和WMV
ABCpdf支持创建电子表单, 不过这已经超过我使用的目的了, 因为我要做的是用pdf输出报表
此外, 我感到不方便的就是,似乎ABC.net没有去封装文档属性里面的东西, 比如title, subject, author, 而是直接提供的Doc.SetInfo来修改, 而这个方法用起来不是很方便, 因为你必须要先了解Adobe PDF Specification, 才能用正确, 这一点上远不如iTextSharp方便
ok, 就这么多了,写这个东西已经花了我不少的时间了
相关文章推荐
- ABCpdf.NET 的简易使用指南
- ABCpdf.NET 的简易使用指南
- ABCpdf.NET 的简易使用指南
- ABCpdf.NET 的简易使用指南【转】
- 服务器使用及安全简易指南
- Git 简易使用指南及补充
- Git使用简易指南
- 在.NET中使用反射实现简易插件机制
- 使用JasperReport制作PDF,Excel报表指南
- g2o简易使用指南
- 日志分析软件awstats的安装使用简易指南
- [原创]Spring Boot + Mybatis 简易使用指南(二)多参数方法支持 与 Joda DateTime类型支持
- .NET 指南:特性使用指南
- PyQt5简易入门指南03,使用资源文件和设计师
- git简易使用指南
- 转:ABCpdf.NET使用介绍
- MonoTouch应用开发实践指南:使用C#和.NET开发iOS应用
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)
- PDF.NET内存数据库的使用小结