【问题标题】:Image overwrites table cell border in iTextSharp图像覆盖 iTextSharp 中的表格单元格边框
【发布时间】:2011-09-08 13:53:24
【问题描述】:

我正在尝试使用 iTextSharp 库(版本 4.1.2.0)创建 PDF。在文档的顶部,我想添加一个徽标、水平线和 - 在该线下方 - 一些文本(标题)。

我正在尝试通过以下方式实现这一目标:

  1. 创建具有一列大小的 PdfPTable
  2. 向其中添加一个 PdfPCell,其边框设置为 BOTTOM_BORDER,其中包含徽标图像
  3. 将带有标题文本的另一个 PdfPCell 添加到 PdfPTable

但是,在生成的 PDF 中,图像会覆盖底部边框(否则显示正常)。我怎样才能阻止它覆盖它?我能够做到这一点的唯一方法是将 PdfPCell 构造函数的 FIT 参数设置为 true,但这完全破坏了布局(图像很大)。

代码:

        document.Open();

        Image img = Image.GetInstance("Logo.PNG");
        PdfPCell cell = new PdfPCell(img, false);
        PdfPTable table = new PdfPTable(1);
        cell.Border = PdfPCell.BOTTOM_BORDER;
        table.DefaultCell.Border = PdfPCell.NO_BORDER;
        table.WidthPercentage = 100;
        table.AddCell(cell);

        PdfPCell cell2 = new PdfPCell(new Phrase("Title"));
        cell2.Border = PdfPCell.TOP_BORDER;
        table.AddCell(cell2);
        document.Add(table);

        document.Close();

这就是它的样子:

This is how it looks like

【问题讨论】:

    标签: c# itext border


    【解决方案1】:

    尝试添加这个:

    cell.PaddingBottom = 5;
    

    所以更新后的代码是:

    PdfPTable table = new PdfPTable(1);
    table.DefaultCell.Border = PdfPCell.NO_BORDER;
    table.WidthPercentage = 100;
    
    Image img = Image.GetInstance("Logo.PNG");
    PdfPCell cell = new PdfPCell(img, false);
    cell.Border = PdfPCell.BOTTOM_BORDER;
    cell.PaddingBottom = 5;
    table.AddCell(cell);
    
    PdfPCell cell2 = new PdfPCell(new Phrase("Title"));
    table.AddCell(cell2);
    
    document.Add(table);
    document.Close();
    

    其他尝试:

    cell.UseBorderPadding = true;
    

    【讨论】:

    • 是的。图像的底部与底部边框完全对齐,覆盖它。 PS:以后请链接到你的PDF而不是屏幕截图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多