MigraDoc table 左缩进的边框问题
MigraDoc table border issue with left indent
我正在尝试使用 MigraDoc 创建 PDF 文档,当 table 包含左缩进时,我遇到了 table 边框问题。
我正在将数据传递给以下函数以呈现 table。
public void AddTable(int _iNumberOfColumns, double leftInd)
{
table = section.AddTable();
if (leftInd != 0d)
{
table.Format.LeftIndent = leftInd;
}
for (int i = 0; i < _iNumberOfColumns; i++)
{
Column col = table.AddColumn();
}
}
在上述方法中,我为参数 leftInd
传递了一个双精度值。我认为这是问题的根源。
添加单元格的代码如下。我正在传递 bool 变量来决定单元格边框是否需要可见...(要添加一行,我只是调用 row = table.AddRow();
)
public void AddColumn(int _iCellNum, int iColspan, double dCellWidthInPt, System.Drawing.Color color, bool bTopBorder, bool bLeftBorder, bool bBottomBorder, bool bRightBorder)
{
cell = row.Cells[_iCellNum];
if (iColspan > 0)
{
cell.MergeRight = iColspan-1;
for (int i = 0; i < iColspan; i++)
{
row.Cells[_iCellNum + i].Column.Width = new Unit(dCellWidthInPt, UnitType.Point);
}
}
else
{
cell.Column.Width = new Unit(dCellWidthInPt, UnitType.Point);
}
//bRightBorder = bLeftBorder = bTopBorder = bBottomBorder = true;
cell.Borders.Right.Visible = bRightBorder;
cell.Borders.Left.Visible = bLeftBorder;
cell.Borders.Top.Visible = bTopBorder;
cell.Borders.Bottom.Visible = bBottomBorder;
if (color!=null)
{
cell.Format.Shading.Color = new Color(color.A, color.R, color.G, color.B);
}
}
我得到以下输出:-
如果我删除左缩进,table 会正确呈现(即左缩进不会将 table 边框向左移动)。
我无法更改页面的边距,因为此 table 是具有不同边距的文档的一部分。同样,我无法添加新部分,因为那样会添加新页面。
Versions:
Migradoc: 1.32.3885.0
pdfSharp: 1.32.2608.0
对我可能遗漏的内容有什么建议吗?
编辑
这就是我想要实现的目标。查看 table 与段落相比如何从更左侧开始。为此,我尝试使用 table.Format.LeftIndent
这是我得到的
要缩进 table,请设置 table.Rows.LeftIndent
。负值也有效。
正如评论中所写,table.Format.LeftIndent
为 table 单元格中的所有段落设置了默认缩进,因此它移动了文本,但不移动边框。
我正在尝试使用 MigraDoc 创建 PDF 文档,当 table 包含左缩进时,我遇到了 table 边框问题。
我正在将数据传递给以下函数以呈现 table。
public void AddTable(int _iNumberOfColumns, double leftInd)
{
table = section.AddTable();
if (leftInd != 0d)
{
table.Format.LeftIndent = leftInd;
}
for (int i = 0; i < _iNumberOfColumns; i++)
{
Column col = table.AddColumn();
}
}
在上述方法中,我为参数 leftInd
传递了一个双精度值。我认为这是问题的根源。
添加单元格的代码如下。我正在传递 bool 变量来决定单元格边框是否需要可见...(要添加一行,我只是调用 row = table.AddRow();
)
public void AddColumn(int _iCellNum, int iColspan, double dCellWidthInPt, System.Drawing.Color color, bool bTopBorder, bool bLeftBorder, bool bBottomBorder, bool bRightBorder)
{
cell = row.Cells[_iCellNum];
if (iColspan > 0)
{
cell.MergeRight = iColspan-1;
for (int i = 0; i < iColspan; i++)
{
row.Cells[_iCellNum + i].Column.Width = new Unit(dCellWidthInPt, UnitType.Point);
}
}
else
{
cell.Column.Width = new Unit(dCellWidthInPt, UnitType.Point);
}
//bRightBorder = bLeftBorder = bTopBorder = bBottomBorder = true;
cell.Borders.Right.Visible = bRightBorder;
cell.Borders.Left.Visible = bLeftBorder;
cell.Borders.Top.Visible = bTopBorder;
cell.Borders.Bottom.Visible = bBottomBorder;
if (color!=null)
{
cell.Format.Shading.Color = new Color(color.A, color.R, color.G, color.B);
}
}
我得到以下输出:-
如果我删除左缩进,table 会正确呈现(即左缩进不会将 table 边框向左移动)。
我无法更改页面的边距,因为此 table 是具有不同边距的文档的一部分。同样,我无法添加新部分,因为那样会添加新页面。
Versions:
Migradoc: 1.32.3885.0
pdfSharp: 1.32.2608.0
对我可能遗漏的内容有什么建议吗?
编辑
这就是我想要实现的目标。查看 table 与段落相比如何从更左侧开始。为此,我尝试使用 table.Format.LeftIndent
这是我得到的
要缩进 table,请设置 table.Rows.LeftIndent
。负值也有效。
正如评论中所写,table.Format.LeftIndent
为 table 单元格中的所有段落设置了默认缩进,因此它移动了文本,但不移动边框。