zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    RESTFUL 设计风格
    GET与POST的区别
    pycharm 对数据库进行可视化操作
    ORM 的基本操作
    pycharm 直接删掉数据表之后,makemigration和migrate 之后,数据库中依然没有生成数据表的问题
    DOM
    BOM对象
    JavaScript
    traversal child window of parent window
    tkinter threading unblock GUI ( check if the thread exists)
  • 原文地址:https://www.cnblogs.com/hobby0524/p/10431756.html
Copyright © 2011-2022 走看看