itextsharp C#:如何在表格单元格内绘制对角线
Posted
技术标签:
【中文标题】itextsharp C#:如何在表格单元格内绘制对角线【英文标题】:itextsharp C#: How to draw Diagonal Line inside Table Cell 【发布时间】:2021-07-22 19:11:38 【问题描述】:如何使用 itextsharp C# 在 pdf 表格的单元格内绘制对角线? 我想要这样的东西:Splitting table cells diagonally itextsharp 但在 C# 中。因为那篇文章是用java写的,我不能用C#来写
【问题讨论】:
将 Java 代码移植到 C# 非常简单。因此,我想知道,真的是移植阻止了你,还是实际上是移植代码的使用? 并非如此。它给了我很多错误:不存在的 PdfPCellEvent(在 C# 中)。我改变了它,但我有其他错误:“PdfPCell cell = new PdfPCell(); cell.setCellEvent(new Diagonal("Gravity", "Occ"));"这也给了我错误。单元格没有“setCellEvent”。和 canvas.moveTo(position.getLeft(), position.getTop()); canvas.lineTo(position.getRight(), position.getBottom());也不起作用,因为它等待接收一个 int,而不是空 这些都是简单的命名约定问题。 “不存在的 PdfPCellEvent(在 C# 中)” - 在 .Net 中(因此,在 iTextSharp 中)接口名称通常以 I 开头,因此它的 @987654322 @ 那里。 "cell dosen't have 'setCellEvent'" - 在 .Net 方法中通常以大写字母开头。您经常在 .Net 中看到属性,而不是 getter/setter 方法对。在这种情况下,它是一个属性,请尝试cell.CellEvent
。 "position.getLeft(), ..." - 再次属性,使用position.Left
, ...
感谢您的时间(和耐心)。我进行了所有更改,但 cell.CellEvent(new Diagonal("Gravity", "Occ")); -> 错误:不能使用不可调用的成员“PdfPCell.CellEvent”作为方法。知道发生了什么吗?
"我仍然有 cell.CellEvent(new Diagonal("Gravity", "Occ"))" - cell.CellEvent
是一个被视为成员变量。因此,您必须在 C# 中使用cell.CellEvent = new Diagonal("Gravity", "Occ")
。
【参考方案1】:
根据mkl在评论中的建议,可以尝试使用下面的代码在表格单元格中画一条对角线。
首先,请安装nuget-packageiTextSharp
。
其次,这是一个完整的代码示例,您可以参考。
static void Main(string[] args)
Program p = new Program();
p.createPdf("E:\\test.pdf");
public void createPdf(String dest)
using (FileStream stream = new FileStream(dest,FileMode.Create,FileAccess.Write))
using (Document document = new Document())
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
PdfPTable table = new PdfPTable(6);
table.DefaultCell.MinimumHeight=30;
PdfPCell cell = new PdfPCell();
cell.CellEvent = new PdfPCellEvent("Gravity", "Occ");
//cell.setCellEvent(new Diagonal("Gravity", "Occ"));
table.AddCell(cell);
table.AddCell("1");
table.AddCell("2");
table.AddCell("3");
table.AddCell("4");
table.AddCell("5");
for (int i = 0; i < 5;)
table.AddCell((++i).ToString());
table.AddCell("");
table.AddCell("");
table.AddCell("");
table.AddCell("");
table.AddCell("");
document.Add(table);
document.Close();
public class PdfPCellEvent : IPdfPCellEvent
protected String columns;
protected String rows;
public PdfPCellEvent(String columns, String rows)
this.columns = columns;
this.rows = rows;
public void CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)
PdfContentByte canvas = canvases[PdfPTable.TEXTCANVAS];
ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT,
new Phrase(columns), position.GetRight(2), position.GetTop(12), 0);
ColumnText.ShowTextAligned(canvas, Element.ALIGN_LEFT,
new Phrase(rows), position.GetLeft(2), position.GetBottom(2), 0);
canvas = canvases[PdfPTable.LINECANVAS];
canvas.MoveTo(position.Left, position.Top);
canvas.LineTo(position.Right, position.Bottom);
canvas.Stroke();
结果:
【讨论】:
以上是关于itextsharp C#:如何在表格单元格内绘制对角线的主要内容,如果未能解决你的问题,请参考以下文章