使用iTextSharp

时间:2015-11-16 13:51:02

标签: itextsharp pdfptable

我使用iTextSharp v5.5.6

我正在创建一个大表。 为了在我的布局中保持一致,我想使用DefaultCell类来设置一些默认设置,如字体,填充和对齐。 我没有做正确的事情,因为设置不适用于我的单元格。

以下是一些代码:

var table = new PdfPTable(2) 
  { KeepTogether = true, TotalWidth = printWidth, LockedWidth = true,
    HorizontalAlignment = 0, SpacingBefore = 0, SpacingAfter = 15f };
// Set default values:
table.DefaultCell.Colspan = 1;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.DefaultCell.Padding = 5f;
table.DefaultCell.PaddingLeft = 5f;
table.DefaultCell.PaddingBottom = 5f;
table.DefaultCell.VerticalAlignment = Element.ALIGN_BOTTOM;
table.DefaultCell.BorderWidthBottom = 0f;
table.DefaultCell.Phrase = new Phrase { Font = Blue11BoldFont };
table.DefaultCell.Border = Rectangle.NO_BORDER; 

table.AddCell(new PdfPCell(new Phrase("Foo")) 
  { HorizontalAlignment = Element.ALIGN_CENTER, MinimumHeight = 20f });
table.AddCell(new PdfPCell(new Phrase("Bar", Black10BoldFont)) 
  { Colspan = 4, HorizontalAlignment = Element.ALIGN_CENTER });

我原本预计我的第一个单元格将使用我的蓝色字体并应用填充。 但没有任何应用。事实上,当我删除DefaultCell行时,我得到相同的结果。

我现在一直在寻找几个小时,我找到的大多数样品都使用类似的东西。 任何建议都是非常有用的。

1 个答案:

答案 0 :(得分:3)

您自己正在创建PdfPCell个对象。在这种情况下,默认单元格 总是被忽略。

请参阅What is the PdfPTable.DefaultCell property used for?

创建PdfPTable时,您需要添加单元格。

  • 一种方法是创建PdfPCell对象并使用addCell()方法添加该单元格。在这种情况下,您有责任定义每个单元格的属性。
  • 另一种方法是使用快捷方式:您不创建PdfPCell,但是使用{{StringPhrase向表中添加addCell()PdfPCell 1}}方法。在这种情况下,使用默认属性内部创建getDefaultCell()。您可以通过更改默认单元格的属性 更改默认属性。使用createCell()方法获取默认单元格。

这不是一个错误,这是设计的。你错误地解释了"默认单元格"的概念的含义。请注意,这个概念在免费电子书The Best iText Questions on StackOverflow中进行了解释。

如果您希望在布局中保持一致,最好的方法是创建一个自己的PdfPCell方法,创建一个 $(".note-editable").each(function(){ $(this).on("keyup", function(){ var cc = $(this).text().length; var arr = $(this).next().attr("class").split('_'); var q = "q"+arr[0]; var maxChar = arr[2]; var textarea = $('*[name^="'+q+'"]'); var diffChar = parseInt(maxChar - cc); if(diffChar >= 0) { $(this).next().text(diffChar + " Remaining out of " + maxChar); } else { $(this).next().text("0 Remaining out of " + maxChar); //$(textarea).prop('disabled', true); $(this).text($(this).text().slice(0,diffChar)); } }); }); ,您可以应用所有属性使用默认单元格。