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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM