.net core datatable 导出 pdf 支持中文
1、nuget 安装 iTextSharp (V4.1.6) to .NET Core.
2、code
public DataTable ToDataTable<T>(IEnumerable<T> collection, Dictionary<string, string> columnMaps = null)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
} if (columnMaps != null)
{
//修改列名
foreach (var item in columnMaps)
{
dt.Columns[item.Key].ColumnName = item.Value;
}
} return dt;
} public bool ConvertDataTableToPDF(DataTable Data, string PDFFile, float FontSize)
{
try
{
GenepointLog.Info($"开始导出pdf--{PDFFile}");
//定义页面的大小
Rectangle pageSize = PageSize.A4;
Document document = new Document(pageSize);
//默认页面大小
//Document document = new Document();
var stream = new FileStream(PDFFile, FileMode.OpenOrCreate);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
//设置字体
//BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1257, BaseFont.NOT_EMBEDDED);
BaseFont.AddToResourceSearch("iTextAsian.dll");
BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
BaseFont bf = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//BaseFont bf = BaseFont.CreateFont("STSong-Light,Italic", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, FontSize); PdfPTable table = new PdfPTable(Data.Columns.Count);
table.WidthPercentage = 100; // percentage
table.DefaultCell.Padding = 1;
table.DefaultCell.BorderWidth = 0.2f;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
//将datatable表头转换成PDFTable的表头
foreach (DataColumn dc in Data.Columns)
{
table.AddCell(new Phrase(dc.ColumnName.ToString(), font));
}
//插入数据
for (int i = 0; i < Data.Rows.Count; i++)
{
for (int j = 0; j < Data.Columns.Count; j++)
{
table.AddCell(new Phrase(Data.Rows[i][j].ToString(), font));
}
}
document.Add(table);
document.Close();
writer.Close();
stream.Dispose();
GenepointLog.Info("结束导出pdf");
return true;
}
catch (Exception ex)
{
GenepointLog.Error($"导出pdf失败{PDFFile}", ex);
return false;
} }
.net core datatable 导出 pdf 支持中文的更多相关文章
- flying-saucer + iText + Freemarker实现pdf的导出, 支持中文、css以及图片
前言 项目中有个需求,需要将合同内容导出成pdf.上网查阅到了 iText , iText 是一个生成PDF文档的开源Java库,能够动态的从XML或者数据库生成PDF,同时还可以对文档进行加密,权限 ...
- iText + Freemarker实现pdf的导出,支持中文、css以及图片,页眉页脚,页眉添加图片
本文为了记录自己的实现过程,具体的实现步骤是参考博文 https://www.cnblogs.com/youzhibing/p/7692366.html 来实现的,只是在他的基础上添加了页眉页脚及页眉 ...
- mpdf导出pdf,中文符号乱码
改源码: 打开vendor/mpdf/mpdf/src/Config/FontVariables.php 在最后一行加入: "gb" => [ 'R' => 'gb.t ...
- Jaspersoft Studio 导出PDF格式中文不显示
1:设置字体 2:应用上面设置的字体
- Magento PDF发票,支持中文,以及修改的办法
Magento PDF发票,支持中文,以及修改的办法. 如果让magento的PDF发票支持中文.Magento生成PDF发票.使用的是zend framework的zend_pdf类. 下面是一 ...
- JS导出PDF插件(支持中文、图片使用路径)
在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题.它的效果可以先到http://pdfmake.org/playgroun ...
- tcpdf导出pdf数据支持中文的解决方案
步骤如下:1.确保你测试tcpdf能正常输出英文内容的pdf2.测试输入中文内容后显示是?的乱码或者空白分析原因,是因为我们输入的中文,tcpdf字体库并不支持,因此乱码或者空白显示 添加一个合适的字 ...
- Jupyter Notebook 导出PDF与Latex中文支持
Jupyter Notebook 最近搞机器学习用到了Jupyter Notebook. 作为一个实时记事本,有时需要将内容导出为PDF. 但是,Jupyter Notebook自带的File -&g ...
- jupyter notebook 目录配置、导出 tex 和 pdf 及中文支持
环境:macbook pro, mactex, jupyter notebook, brew 安装pandoc从而支持格式转换为tex: brew install pandoc 修改tex artic ...
- 解决html导出pdf中文乱码问题的正确姿势
简介 本文使用jspdf 1.5.3版.GitHub地址:https://github.com/MrRio/jsPDF jspdf是歪果仁开发的,因此在一开始就没想过支持非英文以外的文字,这就导致了非 ...
随机推荐
- File and Code template
/** * @author muzhi.zhong * @author <a href="mailto:muzhi.z@xxx.cn">muzhi.z</a> ...
- 聊一聊 C#线程池 的线程动态注入 (中)
一:背景 1. 讲故事 上一篇我们用 Thread.Sleep 的方式演示了线程池饥饿场景下的动态线程注入,可以观察到大概 1s 产生 1~2 个新线程,很显然这样的增长速度扛不住上游请求对线程池的D ...
- 【原创】利用gitlab多项目自动部署到多个网站目录,自动同步更新,不用插件,重写钩子
原创内容,分享请保留链接. 0.首先在服务器安装gitlab,网上一堆过程省略 1.建几个空仓库admin.web.xxxx等(1个仓库也行).确保每个仓库名称和网站名称要有一致性,比如仓库叫admi ...
- Qt音视频开发05-保存视频文件(yuv/h264/mp4)
一.前言 和音频存储类似,视频的存储也对应三种格式,视频最原始的数据是yuv(音频对应pcm),视频压缩后的数据是h264(音频对应aac),由于很多播放器或者早期的播放器不支持直接播放h264文件, ...
- Qt开发经验小技巧111-120
在不同的平台上文件路径的斜杠也是不一样的,比如linux系统一般都是 / 斜杠,而在windows上都是 \ 两个反斜杠,Qt本身程序内部无论在win还是linux都支持 / 斜杠的路径,但是一些第三 ...
- Soulmate
理想之所以是理想,也就是因为它只能存在于脑海中,天上月是天上月,水中花是水中花.但我们仍可以怀揣着对乌托邦的向往,所以,我对理想中的对象设想如下: 原来形容一个女子的眉眼,我总喜欢说眉眼如黛,眉如远山 ...
- manim边做边学--动画更新
今天介绍Manim中用于动画更新的3个类,分别是: UpdateFromFunc:根据自定义的函数来动态更新 Mobject 的属性 UpdateFromAlphaFunc:根据动画的进度来平滑地改变 ...
- 分布式文件系统KFS基础知识介绍
Kosmos distributed file system,简称KFS,是一个类GFS的分布式文件系统,被设计用于分布式的结构化存储.下面将对KFS的体系结构进行简单介绍,最后给出一个使用KFS C ...
- Redis服务安装和卸载,redis命令行使用
redis安装包文件夹处, 唤出cmd 创建服务:redis-server --service-install redis.windows-service.conf --loglevel verbos ...
- Oracle如何查找指定字符串所出现的表
declare v_sql varchar2(2000); v_count number; begin for cur in(select t.owner, t.table_name, t.colum ...