`
zendj
  • 浏览: 122179 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

利用iTextSharp把DataTable导出为PDF和RTF(Rich Text Format)文件

阅读更多
利用iTextSharp把DataTable导出为PDF和RTF(Rich Text Format)文件

相信每个业务系统都有报表输出的需要,一般采用第三方报表工具,如水晶报表等等。我们也可以直接采用PDF生成类库类实现,不过代码要写多些。

使用.NET开发的生成PDF文件的类库不少,我之前也介绍过开源代码2004/1220-PDF格式/文件相关。其中最具有代表性的,我认为是iTextSharp,它来自JAVA开发的iText,已经相当稳定了,同样移植自iText的iTextDotNet(J#),但我偏好C#,所以这次采用iTextSharp

相比其它PDF生成类库,iTextSharp有一个优势:它还能生成RTF(Rich Text Format,一些人翻译作富文本,这种是Windows的写字板专用的,也可以给Office Word正确识别和打开)、XML、HTML和Markup。而且代码非常类似,差别就在于Writer类型不一样,足见作者对OO的理解和掌握能力;

我的需求很简单,把一个DataTable(DataSet也可)导出为一个PDF文件。大家可以想像到:这个“映射”是很直接的,因为DataTable的Rows和Columns就对应PDF中的Cells(Rows)。所以可以估计,这个代码也就2个循环,10行代码左右。

关键点在于:中文的支持。iTextSharp支持中文,但来得不直接,要通过BaseFont.CreateFont()来实现:

BaseFontbaseFont=
BaseFont.CreateFont(
"C:\\WINDOWS\\FONTS\\SIMHEI.TTF",
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
Fontfont
=newFont(baseFont,9);


这里有一个缺点,就是必须指定字体路径,而Environment.SpecialFolder却不包含字体路径,其它获取方法也是有不少的,如用Win32 API等,也可以来点野蛮的:

Environment.GetFolderPath(Environment.SpecialFolder.System)+@"\..\Fonts\"


PDF函数:


publicstaticboolConvertDataTableToPDF(DataTableData,stringPDFFile,stringFontPath,floatFontSize)
{
Documentdocument
=newDocument();
PdfWriterwriter
=PdfWriter.GetInstance(document,newFileStream(PDFFile,FileMode.Create));
document.Open();

BaseFontbaseFont
=
BaseFont.CreateFont(
FontPath,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
Fontfont
=newFont(baseFont,FontSize);

PdfPTabletable
=newPdfPTable(Data.Columns.Count);
for(inti=0;i<Data.Rows.Count;i++)
{
for(intj=0;j<Data.Columns.Count;j++)
{
table.AddCell(
newPhrase(Data.Rows[i][j].ToString(),font));
}

}


document.Add(table);
document.Close();
writer.Close();
returntrue;
}


PDF调用:
ConvertDataTableToPDF(Table,@".\test.pdf","C:\\WINDOWS\\FONTS\\SIMSUN.TTC,1",9); //这里使用宋体,大小9pt。


RTF函数:

publicstaticboolConvertDataTableToRtf(DataTableData,stringRtfFile,stringFontPath,floatFontSize)
{
Documentdocument
=newDocument();
RtfWriter2writer
=RtfWriter2.GetInstance(document,newFileStream(RtfFile,FileMode.Create));
document.Open();

BaseFontbaseFont
=
BaseFont.CreateFont(
FontPath,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
Fontfont
=newFont(baseFont,FontSize);

Tabletable
=newTable(Data.Columns.Count);
for(inti=0;i<Data.Rows.Count;i++)
{
for(intj=0;j<Data.Columns.Count;j++)
{
table.AddCell(
newPhrase(Data.Rows[i][j].ToString(),font));
}

}


document.Add(table);
document.Close();
//writer.Close();
returntrue;
}


RTF调用:
ConvertDataTableToRtf(Table,@".\test.rtf","C:\\WINDOWS\\FONTS\\SIMSUN.TTC,1",9);


生成PDF和RTF的代码是不是很类似?代码很直接,大家根据自己的实际需要改造吧。

生成出来的PDF和RTF在大小上差异很大:6个字段*2000条记录,PDF为200k左右,RTF竟然达到5.5M左右。大家衡量使用什么吧。

btw.iTextSharp刚推出了3.0.7版本:New release iTextSharp 3.0.7 (2005-08-24)

参考:
1、itext官方教程字体部分:http://itextdocs.lowagie.com/tutorial/fonts/index.html
2、iTextSharp全攻略:http://www.zzchina.net/article/17/16571.htm
3、iTextSharp官方教程代码:iTextSharp (iText#) tutorial update version
分享到:
评论

相关推荐

    winform中将Datatable数据导出为PDF文件

    本文将深入探讨如何利用C#语言在Winform环境中将DataTable数据转换并导出为PDF文件。PDF(Portable Document Format)是一种广泛接受的文档格式,能够保持原始文档的布局和格式,方便跨平台查看。 首先,我们需要...

    C#版本Itextsharp根据模板导出pdf报表

    在这个场景下,我们将深入探讨如何使用C#和Itextsharp库根据模板导出PDF报表。 首先,我们需要理解模板的概念。模板通常是一个预定义的PDF文件,包含固定的布局和样式,而实际的数据将被插入到这些预定的位置。在...

    iTextSharp 文件转 pdf

    在本文中,我们将深入探讨如何利用iTextSharp将各种类型的文件转换为PDF,以及如何解决在转换过程中遇到的中文字符不显示的问题。 1. iTextSharp PDF转换基础 iTextSharp提供了丰富的API,可以创建、编辑和合并PDF...

    .net版本Itextsharp根据模板导出pdf报表(0515).rar

    本压缩包文件`.net版本Itextsharp根据模板导出pdf报表(0515).rar`显然提供了一个关于如何使用Itextsharp库根据模板生成PDF报表的示例或教程。 首先,我们需要了解Itextsharp的基本用法。Itextsharp提供了丰富的API...

    .net版本Itextsharp根据模板导出pdf报表(0520_).rar

    在.NET开发环境中,Itextsharp是一个非常流行的库,用于...通过解压并运行这个项目,你可以更直观地理解如何利用C#和Itextsharp将数据导出为PDF报表。同时,配合详细的注释和文档,可以深入学习和掌握PDF生成的技巧。

    iTextSharp导出PDF文件

    本篇文章将深入探讨如何使用iTextSharp来导出PDF文件,以及相关的关键知识点。 首先,我们需要在项目中引用iTextSharp库。如果你还没有安装,可以通过NuGet包管理器搜索"iTextSharp"进行安装。一旦安装完成,你就...

    用itextsharp打印pdf示例

    本示例将详细介绍如何利用`iTextSharp`库来生成PDF,并结合XML数据源进行打印。 首先,`iTextSharp`是一个强大的PDF处理库,由iText公司开发,针对.NET Framework进行了优化。它提供了丰富的API,可以方便地创建新...

    net版本Itextsharp根据模板导出pdf报表--(201903)

    如果这是基于模板的PDF报表的一部分,那么你可能需要使用Microsoft Office的Open XML SDK或者其他工具来处理这些文件,将它们的数据转换为适合Itextsharp处理的格式。 总的来说,使用Itextsharp在.NET环境中生成PDF...

    net版本Itextsharp根据模板导出pdf报表--最低分分享

    本文将深入探讨如何利用C#语言和iTextSharp库,基于模板来导出PDF报表。 首先,我们需要理解iTextSharp是什么。iTextSharp是一款开源的.NET库,它允许开发者在.NET框架下创建、修改和读取PDF文件。这个库提供了丰富...

    net版本Itextsharp根据模板导出pdf报表__0525).rar

    在.NET环境中,开发人员经常需要处理PDF文档,例如创建、编辑或导出报表。Itextsharp是一个非常流行的C#库,用于处理PDF文档...通过学习和实践,开发者可以熟练地利用Itextsharp创建各种复杂的PDF报表,满足业务需求。

    itextsharp操作html转pdf

    ITextSharp是一个功能强大的开源库,主要用于创建、编辑和处理PDF文档。这个库广泛应用于.NET环境中,它提供了丰富的API来处理PDF的各种需求,包括将HTML内容转换为PDF。在描述中提到的"itextsharp操作html转pdf",...

    iTextSharp使用手册.pdf

    利用 iText 五步创建一个 PDF文件: helloword 。 第一步,创建一个 iTextSharp.text.Document 对象的实例: Document document = new Document(); 第二步,为该 Document创建一个 Writer 实例: PdfWriter....

    C#导出PDF , iTextSharp

    总的来说,使用iTextSharp库,C#开发者可以轻松地实现PDF的创建、编辑和导出功能。结合网上的教程和源码,你可以快速掌握这一技能,并应用于实际项目中,提高工作效率。不过,学习过程中也要注意版权问题,尤其是...

    .net版本Itextsharp根据模板导出pdf报表

    在.NET开发环境中,Itextsharp是一个非常流行的库,用于创建、编辑和管理PDF文档。本文将深入探讨如何在C#中使用Itextsharp库根据模板生成PDF报表。 首先,了解Itextsharp库:Itextsharp是.NET平台上的一个开源库,...

    C#使用itextsharp生成PDF文件

    C#是一种广泛用于构建Windows应用程序和Web服务的编程语言,而iTextSharp是一个强大的库,允许开发者在C#环境中生成和编辑PDF文件。在这个场景中,我们将深入探讨如何使用iTextSharp在C#中创建PDF。 首先,我们需要...

    net版本Itextsharp根据模板导出pdf报表

    在.NET环境中,使用iTextSharp库来根据模板导出PDF报表是一项常见的任务,尤其是在需要将数据从数据库或其他数据源转换为可打印或可分发的文档时。iTextSharp是一款强大的开源库,它允许开发者创建、修改和处理PDF...

    C#WPF实现PDF导出及读取

    iTextSharp是一个流行的.NET库,它允许开发者创建、修改、拆分和合并PDF文档。 首先,为了使用iTextSharp,你需要在项目中添加引用。这可以通过NuGet包管理器完成,搜索“iTextSharp”,然后安装对应的包。确保你的...

    net版本Itextsharp根据模板导出pdf报表__0525.rar

    本文将深入探讨如何利用Itextsharp库在.NET环境下根据模板导出PDF报表。 首先,了解Itextsharp库。Itextsharp是Java版iText库的.NET移植版,它提供了丰富的API来创建、修改和读取PDF文档。这个库支持PDF的各种功能...

    iTextSharp教程C#生成PDF文件

    这个教程主要聚焦于使用C#编程语言来生成PDF文件,通过iTextSharp库实现各种功能,如添加文本、图像、表格以及复杂的布局。下面将详细介绍如何使用iTextSharp实现这些功能。 1. **创建PDF文档** - 首先,你需要...

Global site tag (gtag.js) - Google Analytics