gpt4 book ai didi

java - 为什么 iText 不将靠近页面底部的表格添加到文档中?

转载 作者:行者123 更新时间:2023-11-30 11:50:44 24 4
gpt4 key购买 nike

我有很多小表,我将它们封装在一个 1x1 的环绕表中,并在环绕表上将 SplitRows 属性设置为 false。这样,我可以避免我的表格在到达页面底部时被拆分。当我到达页面末尾时,文本有一点空间,但下一个表格空间不够,iText 根本不添加表格,但继续在列表中添加下一个表格。

如果当前页的表格空间不够,id like 将其发送到下一页。我能做什么?

http://compgroups.net/comp.text.pdf/Avoid-page-breaks-in-PdfPTable-using-iText-1.2

这是我的代码:

public static void CreateMatrixProcentQuestionTable(ShowQuestionViewModel model, Document doc)
{
ShowMatrixQuestionViewModel sm = (ShowMatrixQuestionViewModel)model;

Font fontsize = new Font(Font.FontFamily.HELVETICA, 9f);
Font QuestionFont = new Font(Font.FontFamily.HELVETICA, 12f);

PdfPTable table = new PdfPTable(sm.columns.Count + 2);

// Tilføj spørgsmålet i en række for sig selv, ellers er der chance for at
// svarmulighederne ikke kommer med ved page breaks
PdfPCell question = new PdfPCell(new Phrase(sm.Question_Wording + Environment.NewLine, QuestionFont));
question.Border = Rectangle.NO_BORDER;
question.Colspan = table.NumberOfColumns;
table.AddCell(question);

// Tilføj et mellemrum mellem spørgsmålet og svarmulighederne
PdfPCell mellemrum = new PdfPCell(new Phrase(Environment.NewLine));
mellemrum.Border = Rectangle.NO_BORDER;
mellemrum.Colspan = table.NumberOfColumns;
table.AddCell(mellemrum);

// Tilføj rækker og kolonner

// Dette er den første tomme celle
table.AddCell(new PdfPCell(new Phrase("", fontsize)));

foreach (MatrixColumns column in sm.columns)
{
PdfPCell cell = new PdfPCell(new Phrase(column.Column_Description, fontsize));
cell.HorizontalAlignment = 1;
table.AddCell(cell);
}

PdfPCell ialt = new PdfPCell(new Phrase("I alt", fontsize));
ialt.HorizontalAlignment = 1;
table.AddCell(ialt);


foreach (var pair in sm.columnrow)
{
MatrixRows row = pair.Key;

PdfPCell rowcell = new PdfPCell(new Phrase(row.Row_Description == null ? "*" : row.Row_Description, fontsize));
rowcell.HorizontalAlignment = 1;

table.AddCell(rowcell);

foreach (MatrixColumns column in pair.Value)
{
PdfPCell cell = new PdfPCell(new Phrase("%", fontsize));
cell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.AddCell(cell);
}

PdfPCell sumcell = new PdfPCell(new Phrase("100%", fontsize));
sumcell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.AddCell(sumcell);

}

// Man laver en 1x1 table uden om den rigtige table, og sætter
// SplitRows = False. Dette gør at tabellen ikke bliver knækket over
// ved page breaks

PdfPTable sorroundingTable = new PdfPTable(1);
PdfPCell innerTable = new PdfPCell(table);

innerTable.Border = Rectangle.NO_BORDER;
sorroundingTable.AddCell(innerTable);

sorroundingTable.SplitRows = false;

doc.Add(sorroundingTable);
doc.Add(new Phrase(Environment.NewLine));
}

最佳答案

这解决了问题:

table.setKeepTogether(true)
document.add(table)

关于java - 为什么 iText 不将靠近页面底部的表格添加到文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com