当前位置: 首页 > news >正文

哈尔滨cms模板建站/拼多多关键词排名查询工具

哈尔滨cms模板建站,拼多多关键词排名查询工具,win7 asp.net网站架设,广州站是哪个站原文地址为: iTextSharp快速使用指南前言 最近公司一直使用iText开发PDF报表,使用一段时间之后发现iText这个类库虽然是庞大无比,但作为程序猿我们不需要知道所有的类和方法,我们只需要知道如何使用即可。 所以这篇文章就是告诉…
原文地址为: iTextSharp快速使用指南

前言

最近公司一直使用iText开发PDF报表,使用一段时间之后发现iText这个类库虽然是庞大无比,但作为程序猿我们不需要知道所有的类和方法,我们只需要知道如何使用即可。

所以这篇文章就是告诉大家如何快速的使用iTextSharp(iText .net版本)进行开发。

iTextSharp开发步骤

快速开发之前,我们先了解以下4个类:

          class所代表的含义
Paragraph报表中的文本
Image报表中的图片
PdfPTable表格
PdfPCell单元格

知道这4个类之后就是开发的步骤了:

1. 往单元格PdfPCell类中添加内容。

2.将单元格PdfPCell添加到PdfPTable。

3.将表格PdfPTable添加到Document。

在以上的步骤中最重要的就是第一步也就是往PdfPCell中添加内容,而PdfPCell中的内容又可以分为以下三种情况:

文本Paragraph
图片Image
表格PdfPTable

接下来我们就直奔主题,看是如何往PdfPCell添加内容。因为报表需要数据,所以我就从百度分辨率统计获取了一些数据,下面是这个网址的截图:

image

往PdfPCell添加文本

文本由Paragraph来表示,在添加之前还要注意一下字体的问题,因为我们用的是中文字体,如果用默认英文字体渲染则会乱码,所以我们要先定义中文字体:

BaseFont BF_Light = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

字体定义完之后下面就添加文本:

//要设置字体和大小
p = new Paragraph(fields[i], new Font(BF_Light, 13));
cell =
new PdfPCell(p);
//设置cell属性
//cell.Border = Rectangle.NO_BORDER;
if (rowNum == 0)
{
cell.BackgroundColor =
BaseColor.GRAY;
}
if (i == mainColumn - 1)
{
cell.HorizontalAlignment =
Element.ALIGN_RIGHT;
}
//添加单元格
table.AddCell(cell);

其实添加很简单,就是最上面两行代码,而对PdfPCell属性设置的代码一般会比较多,因为我们一般要设置其背景色,水平对其,还有边框Border等。

往PdfPCell添加图片和表格

在大家了解怎么往PdfPCell添加完文本之后,添加图片和表格就简单很多了,就是将Image和PdfPTable作为PdfPCell的构造器参数传入即可:

//图片
Image image = Image.GetInstance(imagePath);
cell =
new PdfPCell(image, true);
table.AddCell(cell);

//表格
PdfPTable baseTable = GetBaseTable();
cell =
new PdfPCell(baseTable);
table.AddCell(cell);

以下就是效果图:

image

iTextSharp画图

通过以上PdfPCell的操作,大家就可以实现一些比较常见的PDF报表,现在我们更进一步实现一下的效果:

image

这里就必须用到画图,画图用的就是PdfContentByte类,这个就类似于画板,我们可以直接在上面画直线和文本:

//画线
canvas.SaveState();
canvas.SetLineWidth(2f);
canvas.MoveTo(100, 100);
canvas.LineTo(200, 200);
canvas.Stroke();
canvas.RestoreState();

//文本
ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT, new Phrase("JulyLuo测试", new Font(BF_Light, 10)), 100, 20, 0);

这里要注意的是,无论是画线还是文本我们都需要坐标,而且在画线的时候,要将具体的代码放在SaveState和RestoreState中间,这样就不会导致画图状态的紊乱。

如果我们希望将上图画在一个单元格中,但我们知道画图需要坐标,而在PdfPCell中是坐标没有暴露出来,所以这里我们需要iTextSharp中的接口:IPdfPCellEvent

public void CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)

这个接口的意思就是在单元格添加到文档之后暴露的方法。很明显,通过postion参数我们可以获取坐标,canvases参数可以获取画板。

所以要画图就创建一个实现接口IPdfPCellEvent的类,然后在CellLayout方法中画线和文本:

public void CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)
{
PdfContentByte cb = canvases[PdfPTable.BACKGROUNDCANVAS];
PdfContentByte cbline = canvases[PdfPTable.LINECANVAS];

cbline.SaveState();
cb.SaveState();

…………


cb.SetLineWidth(0.4f);
cbline.SetLineWidth(0.4f);
//y 轴
cb.MoveTo(leftX, bottomY);
cb.LineTo(leftX, topY);
cb.Stroke();
//y 轴突出的短横线
float yAxiseTextLinetWidth = 3f;
float yAxisTextSpaceAdjust = 2.5f;
for (float y = yScaleNum; y < yMax; y += yScaleNum)
{
float yPoint = bottomY + (yScale * y);
cb.MoveTo(leftX, yPoint);
cb.LineTo(leftX - yAxiseTextLinetWidth, yPoint);
cb.Stroke();
}
//y 轴文本
for (float y = yScaleNum; y < yMax; y += yScaleNum)
{
float yPoint = bottomY + (yScale * y);
ColumnText.ShowTextAligned(cb, Element.ALIGN_RIGHT, new Phrase(string.Format("{0}%", y), new Font(BF_Light, 5)), leftX - yAxiseTextLinetWidth, yPoint - yAxisTextSpaceAdjust, 0);
}

//x 轴
cb.MoveTo(leftX, bottomY);
cb.LineTo(righX, bottomY);
cb.Stroke();


cb.Stroke();
cb.RestoreState();
cbline.RestoreState();
}

最后将这个类和对应的PdfPCell关联起来:

//画图的类,和cell关联                        
ResolutionChart chart = new ResolutionChart(fileName, yMax, yScale);
cell.CellEvent = chart;

以下就是效果图:

image

总结

用iTextSharp进行开发,如果报表只有文本,图片则PdfPCell一个类就可以搞定。但如果要画一些bar chart,bar chart,这些图是需要坐标来呈现,我们可以通过IPdfPCellEvent接口获取坐标,然后画相应的图,最后就是 代码下载了。
转载请注明本文地址: iTextSharp快速使用指南
http://www.lbrq.cn/news/1024435.html

相关文章:

  • 本网站服务器设在美国服务器保护/如何做企业网页
  • 网站优化的学习/推广普通话的手抄报
  • 一个域名怎么用来做多个网站/爱站网挖掘词
  • 阿里云可以做网站吗/seo单页快速排名
  • 定制型网站制作/青岛今天发生的重大新闻
  • 上海网站自然排名优化价格/中视频自媒体平台注册官网
  • 玩弄已婚熟妇做爰网站/下载百度安装到桌面
  • 做网站一个月可以赚多少钱/站长工具同大全站
  • 肇庆高端模板建站/谷歌官网入口手机版
  • 做网站卖产品投资大嘛/新软件推广
  • 网站建设找天宇智能/互联网营销是什么意思
  • 成都网站建设树莓/seo页面内容优化
  • 网站优化前景/百度学术论文查重入口
  • 免费网站建设下载/2023上海又出现疫情了
  • 自己怎么做免费网站空间/手机百度搜索引擎入口
  • 九网互联怎么建设网站/免费网站推广网站破解版
  • 江东网站制作/如何建造自己的网站
  • 网页设计培训教育机构/网站关键词优化推广哪家好
  • 做网站需学什么/百度知道灰色词代发收录
  • 做照片书的网站好/网络营销推广方案
  • win7电脑做网站/永久免费开网店app
  • 做我女朋友程序网站/搜索推广营销
  • wordpress $current_user/廊坊seo关键词排名
  • 刷东西网站建设/成全视频免费观看在线看
  • 做装修网站公司/搜索优化推广公司
  • 凡科做的网站怎么打不开了/百度推广关键词规划师
  • 北京h5网站建设/目前最火的自媒体平台
  • 国外小型网站/专业搜索引擎优化电话
  • 电脑怎么装免费wordpress/宁波seo教程推广平台
  • 如何入侵网站服务器/网站建设优化的技巧
  • 架构需求规格说明(ARD):项目成功的隐形引擎
  • [优选算法专题二滑动窗口——无重复字符的最长子串]
  • 【Docker】openEuler 使用docker-compose部署gitlab-ce
  • 【Linux基础知识系列】第九十六篇 - 使用history命令管理命令历史
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 风电功率预测实战:从数据清洗到时空建模​​