【问题标题】:How to set only vertical line of a table in pdf using itext sharp?如何使用 itextsharp 在 pdf 中仅设置表格的垂直线?
【发布时间】:2015-09-25 04:47:46
【问题描述】:

我有一个带有垂直和水平线的表格。但我不想要水平线。我只想要垂直线。我该如何设置它。我的预期 o/p 是

我的表代码

PdfPTable table = new PdfPTable(5);
table.TotalWidth = 510f;//table size
table.LockedWidth = true;
table.HorizontalAlignment = 0;
table.SpacingBefore = 10f;//both are used to mention the space from heading


table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("    SL.NO", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   SUBJECTS", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   MARKS", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   MAX MARK", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   CLASS AVG", font1)));

Doc.Add(table);

例如:

请大家帮忙

【问题讨论】:

  • @Bruno Lowegi.. 希望你能帮助我

标签: c# itextsharp


【解决方案1】:

您可以更改单元格的边框,使它们只显示垂直线。如何执行此操作,取决于您如何将单元格添加到表格中。

这是两种方法:

1.您显式创建 PdfPCell 对象:

PdfPCell 单元 = 新 PdfPCell(); cell.AddElement(new Paragraph("我的内容")); cell.Border = PdfPCell.LEFT; table.AddCell(cell);

在这种情况下,只会显示单元格的 边框。对于行中的最后一个单元格,您还应该添加右边框:

cell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;

2。您隐式创建 PdfPCell 对象:

在这种情况下,您不必自己创建 PdfPCell 对象,而是让 iTextSharp 创建单元格。这些单元格将复制在PdfPTable 级别定义的DefaultCell 的属性,因此您需要进行更改:

table.DefaultCell.Border = Rectangle.LEFT | Rectangle.RIGHT;
table.addCell("cell 1");
table.addCell("cell 2");
table.addCell("cell 3");

现在所有单元格都没有顶部或底部边框,只有左右边框。您将绘制一些额外的线条,但由于线条重合,没有人会注意到。

另见Hiding table border in iTextSharp

例如:

PdfPTable table = new PdfPTable(5);
table.TotalWidth = 510f;//table size
table.LockedWidth = true;
table.SpacingBefore = 10f;//both are used to mention the space from heading
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.DefaultCell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;
table.AddCell(new Phrase("    SL.NO", font1));
table.AddCell(new Phrase("   SUBJECTS", font1));
table.AddCell(new Phrase("   MARKS", font1));
table.AddCell(new Phrase("   MAX MARK", font1));
table.AddCell(new Phrase("   CLASS AVG", font1));
Doc.Add(table);

DefaultCell 的属性不需要定义这么多次。不需要像这样嵌套Phrase 构造函数:new Phrase(new Phrase("content"))

【讨论】:

  • 请找到我编辑的问题。这就是我创建表格的方式。我怎么能在里面做同样的事情??
  • 纽约时间是 7:42,现在是早上!
  • 哦哦,这里 05:13 pm(印度)
【解决方案2】:

布鲁诺的回答对我没有帮助,但我有一个想法可能是因为那是在 2015 年,但这就是我所做的。 我声明一个表

PdfPTable table2 = new PdfPTable(8);

定义宽度..

table2.WidthPercentage = 100;

最后只放我喜欢的边框

table2.DefaultCell.Border = Rectangle.RIGHT_BORDER;
table2.DefaultCell.Border = Rectangle.LEFT_BORDER;

当然,如果你想用它来显示。

table2.AddCell(new Phrase("Total Amount", ftxt));
table2.AddCell(new Phrase("Another text", ftxt));

当然也可以将其添加到 pdf 中。

doc.Add(table2);

如果您没有指定,iTextSharp 似乎具有像单元格类型这样的内置列/行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多