如何在c#asp.net中使用itextsharp放置表的外线
我正在pdf文件上创建一个2*2表格。我只想给表格加上外部边框,不需要显示内部单元格边框。我试过这样做如何在c#asp.net中使用itextsharp放置表的外线,c#,html,asp.net,pdf-generation,itextsharp,C#,Html,Asp.net,Pdf Generation,Itextsharp,我正在pdf文件上创建一个2*2表格。我只想给表格加上外部边框,不需要显示内部单元格边框。我试过这样做 var back= new PdfPTable(2); //table for back back.DefaultCell.Border = 1; PdfPCell cell20 = new PdfPCell(new Phrase("cell1", body)); cell20.Border = 0; b
var back= new PdfPTable(2); //table for back
back.DefaultCell.Border = 1;
PdfPCell cell20 = new PdfPCell(new Phrase("cell1", body));
cell20.Border = 0;
back.AddCell(cell20);
PdfPCell cell21 = new PdfPCell(new Phrase("cell2", body));
cell21.Border = 0;
cell21.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
back.AddCell(cell21);
PdfPCell cell22 = new PdfPCell(new Phrase("cell3"));
cell22.Border = 0;
cell22.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
back.AddCell(cell22);
PdfPCell cell23 = new PdfPCell(new Phrase("cell4", body));
cell23.Border = 0;
cell23.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
back.AddCell(cell23);
但是它会生成一个没有任何边框的表,请帮助您需要创建一个表事件,例如:
public class OuterBorder implements PdfPTableEvent {
public void tableLayout(PdfPTable table, float[][] width, float[] height,
int headerRows, int rowStart, PdfContentByte[] canvas) {
float widths[] = width[0];
float x1 = widths[0];
float x2 = widths[widths.length - 1];
float y1 = height[0];
float y2 = height[height.length - 1];
PdfContentByte cb = canvas[PdfPTable.LINECANVAS];
cb.rectangle(x1, y1, x2 - x1, y2 - y1);
cb.stroke();
}
}
如您所见,我们使用传递给tableLayout()
方法的width
和height
参数来定义矩形的边界,并将该矩形绘制到LINECANVAS
要使此表事件正常工作,您需要向表声明它。在您的情况下,这将是:
back.setTableEvent(new OuterBorder());
注意,我的代码是基于我书中的示例用Java编写的。有关相应的C#代码,请参阅。您需要定义第二个表,然后将此表包装在其中。