【问题标题】:ITextSharp full page height layoutITextSharp 整页高度布局
【发布时间】:2011-07-12 22:35:08
【问题描述】:

我想用 ITextSharp 创建以下 PDF 布局:

我使用以下代码来生成我的表格:

Document document = new Document(PageSize.A4);
MemoryStream memoryStream = new MemoryStream();

PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);

document.Open();

PdfPCell cell;
PdfPTable table = new PdfPTable(2);

table.SetWidths(new float[] { 450, 100 });
table.WidthPercentage = 100;

cell = new PdfPCell(new Phrase("Item cod werwerwer"));
table.AddCell(cell);

cell = new PdfPCell(new Phrase("100"));
table.AddCell(cell);

cell = new PdfPCell(new Phrase(string.Empty));
table.AddCell(cell);

cell = new PdfPCell(new Phrase("100"));
table.AddCell(cell);

document.Add(table);

writer.CloseStream = false;
document.Close();
memoryStream.Position = 0;

return memoryStream.ToArray();

如何在不使用固定高度值的情况下强制表格覆盖整个页面高度?

【问题讨论】:

    标签: c# .net itextsharp


    【解决方案1】:

    你可以使用table.ExtendLastRow = true;

    【讨论】:

    • 这会将表格后面的任何其他内容剪切到另一个页面中。
    【解决方案2】:

    表格流动,这就是他们所做的。如果要更改高度,则需要使用固定值。您可以在运行时计算这些固定值,方法是尝试使用给定字体计算给定单元格中给定宽度下某些文本的高度。或者您可以将其修复为一个幻数,这就是下面的代码所做的。

    顶部是魔法常数。当我们创建文档时,我们为所有边距指定 0,以便我们填满整个页面。您可以更改此设置,但您必须调整以下计算。然后在第一行中,我们将单元格的一个 MinimumHeight 设置为页面高度减去常数,在第二行中,我们将单元格的一个高度设置为常数。

            //Fixed height of last cell
            float LAST_CELL_HEIGHT = 50f;
    
            //Create our document with zero margins
            Document document = new Document(PageSize.A4, 0, 0, 0, 0);
            FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "A4.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read);
    
            PdfWriter writer = PdfWriter.GetInstance(document, fs);
    
            document.Open();
    
            PdfPCell cell;
            PdfPTable table = new PdfPTable(2);
    
            table.SetWidths(new float[] { 450, 100 });
            table.WidthPercentage = 100;
    
            cell = new PdfPCell(new Phrase("Item cod werwerwer"));
            //Set the first cell's height to the document's full height minus the last cell
            cell.MinimumHeight = document.PageSize.Height - LAST_CELL_HEIGHT;
            table.AddCell(cell);
    
            cell = new PdfPCell(new Phrase("100"));
            table.AddCell(cell);
    
            cell = new PdfPCell(new Phrase(string.Empty));
            //Set the last cell's height
            cell.MinimumHeight = LAST_CELL_HEIGHT;
            table.AddCell(cell);
    
            cell = new PdfPCell(new Phrase("100"));
            table.AddCell(cell);
    
            document.Add(table);
    
            writer.CloseStream = false;
            document.Close();
            fs.Close();
    

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多