You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中使用iText7设置PDF表格的绝对列宽?

用iText7设置PDF表格绝对列宽的解决方案

嘿,我来帮你搞定这个iText7表格列宽的问题!针对你的需求,咱们一步步来调整代码:

一、实现绝对数值列宽(123点 + 400点)

你之前用的是百分比列宽,现在要改成绝对点值,只需要把UnitValue.CreatePercentArray替换成UnitValue.CreatePointArray,直接传入你想要的列宽数值就行。因为123+400正好等于表格总宽度523点,这样表格会完美填满指定宽度,没有多余空隙。

修改后的代码如下:

public static void CreatePdf(Document doc)
{
    // 定义绝对列宽:第一列123点,第二列400点
    float[] colwidths = { 123, 400 };
    // 使用CreatePointArray创建基于绝对点的列宽配置
    Table table = new Table(UnitValue.CreatePointArray(colwidths));
    // 设置表格总宽度为523点(可选,因为列宽总和已经是523,不设置也会自动适配)
    table.SetWidth(523);
    
    table.AddCell(new Cell(1,2).Add(new Paragraph("The table title goes here")));
    table.AddCell(new Cell(3, 1).Add(new Paragraph("here goes the Text1"))
        .SetVerticalAlignment(VerticalAlignment.MIDDLE));
    table.AddCell("row 1");
    table.AddCell("row 2");
    table.AddCell("row 3");
    
    doc.Add(table);
    doc.Close();
}

二、关于列宽总和小于表格宽度的空白问题

如果设置第一列100点、第二列300点(总和400点),同时保留table.SetWidth(523),右侧确实会留出空白。因为绝对列宽是固定的,iText7会严格按照你设置的100和300渲染列,表格总宽度被强制设为523,所以剩下的523-400=123点会以空白形式出现在表格右侧。

如果你不想留空白,可以二选一:

  • 删掉table.SetWidth(523),让表格自动适应列宽总和(400点);
  • 改用百分比列宽,让列按比例填满523点总宽度(比如25%和75%,对应130.75和392.25点)。

内容的提问来源于stack exchange,提问作者Don Diego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:02:40