【问题标题】:MigraDoc table border issue with left indent左缩进的 MigraDoc 表格边框问题
【发布时间】:2016-01-27 01:09:47
【问题描述】:

我正在尝试使用 MigraDoc 创建 PDF 文档,但当表格包含左缩进时,我遇到了表格边框问题。

我将数据传递给以下函数以呈现表格。

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 传递了一个双精度值。我相信这是问题的原因。

添加单元格的代码如下。我正在传递布尔变量来决定单元格边框是否需要可见......(添加一行我只是调用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);
    }
            
}

我得到以下输出:-

如果我删除左缩进,表格会正确呈现(即左缩进不会将表格边框向左移动)。

我无法更改页面的边距,因为此表格是具有不同边距的文档的一部分。同样,我无法添加新部分,因为这将添加一个新页面。

版本:

Migradoc:1.32.3885.0

pdfSharp:1.32.2608.0

对我可能遗漏的内容有什么建议吗?

编辑

这就是我想要实现的目标。与段落相比,查看表格是如何从更左侧开始的。为了实现这一点,我正在尝试使用table.Format.LeftIndent

这是我得到的

【问题讨论】:

  • 您的代码既不简洁也不完整。我不明白为什么要设置 LeftIndent 如果它会导致问题。我不明白问题是什么。你想达到什么目的?也许table.Format.LeftIndent 不是这样做的方法。
  • 虽然我的代码不完整 - 这是唯一相关的部分。我面临的问题(如附图所示)是列数据(参见第一个单元格/列)正在响应表格的 leftIndent。但是单元格/列边框是按照页边距开始的。我设置了左缩进,以便表格应该从左边开始(与页边距相比)。因此,如果页面左边距为 10",则表格为 8"
  • 文档说table.Format.LeftIndent 是表格单元格中所有段落的缩进。这不是缩进表格的方法。就像 CSS 一样,您可以在表格、单元格或单独的段落中设置它。您展示了两种方法,但没有展示您调用这些方法的参数。因此,恕我直言,相关信息缺失。如果您想缩进表格而不是表格单元格中的文本,则将其放入问题中(可能在末尾带有问号)。
  • @ThomasH。我已经编辑了这个问题,并添加了更多关于我正在尝试做什么以及我得到什么的图像......希望这将有助于进一步解决这个问题。

标签: c# pdfsharp migradoc


【解决方案1】:

要缩进表格,设置table.Rows.LeftIndent。负值也可以。

正如评论中所写,table.Format.LeftIndent 为表格单元格中的所有段落设置默认缩进,因此它移动文本,但不移动边框。

【讨论】:

  • 谢谢。这确实有道理!让我测试一下,然后接受答案:)
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 2013-05-22
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多