C#生成PDF文件中时,设置边框为虚线和隐藏显示单个或者多个边框。

由于最近在项目中要增加一个虚线的框,要用来签名。但是发现网上很少有这一部分的帖子,最后翻来翻去全是java的,干脆自己写一个mark一下。

  现有项目中,我们采用itext技术生成pdf。但是itext没有直接设置pdfcell边框的属性,只能通过CellEvent属性来进行设置。

  首先,需要创建一个类并且实现接口IPdfPCellEvent

 1 public class PdfCustomCellBorder : IPdfPCellEvent
 2     {
 3         public void CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)
 4         {
 5 
 6             //
 7             PdfContentByte cb0 = canvases[PdfPTable.LINECANVAS];
 8             cb0.SaveState();
 9             cb0.SetLineWidth(0.5f);
10             cb0.SetLineDash(new float[] { 2.0f, 2.0f }, 0);
11             cb0.MoveTo(position.Left, position.Top);
12             cb0.LineTo(position.Right, position.Top);
13             cb0.Stroke();
14             cb0.RestoreState();
15     }
16 }

  然后,直接赋值给CellEvent属性。可以进行多次赋值。

1  PdfPCell signature = CreateCell("签名:", 1, ITextSharpHelper.GetChineseFont(9, FontStyle.BOLD, FontFamily.宋体, FontColor.BLACK), 0);
2             signature.HorizontalAlignment = Element.ALIGN_LEFT;
3             PdfCustomCellBorder pdfCustomCellBorder = new PdfCustomCellBorder();
4             signature.Border = Rectangle.NO_BORDER;
5             signature.CellEvent = pdfCustomCellBorder;

  最后,说一下设置对应的边框隐藏

 1 //新建单元格对象
 2 PdfPCell cell = new PdfPCell(new Phrase("test"));
 3 //隐藏上边框
 4 // cell.disableBorderSide(1);
 5 //隐藏下边框
 6 // cell.disableBorderSide(2);
 7 //隐藏上、下边框
 8 //cell.disableBorderSide(3);
 9 //隐藏左边框
10 //cell.disableBorderSide(4);
11 //隐藏左、上边框
12 //cell.disableBorderSide(5);
13 //隐藏左、下边框
14 //cell.disableBorderSide(6);
15 //隐藏左、上、下边框
16 //cell.disableBorderSide(7);
17 //隐藏右边框
18 //cell.disableBorderSide(8);
19 //隐藏右、上边框
20 // cell.disableBorderSide(9);
21 //隐藏右、下边框
22 //cell.disableBorderSide(10);
23 //隐藏右、上、下边框
24 //cell.disableBorderSide(11);
25 //隐藏左、右边框
26 //cell.disableBorderSide(12);//左右没了
27 //隐藏上、左、右边框
28 //cell.disableBorderSide(13);//只剩下
29 //隐藏下、左、右边框
30 //cell.disableBorderSide(14);//只剩上
31 //隐藏全部
32 //cell.disableBorderSide(15);//全没了

也可以通过设置某一边显示

1 cell.EnableBorderSide(Rectangle.RIGHT_BORDER);

 

转载于:https://www.cnblogs.com/hobby0524/p/10431756.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值