2015-11-16 1 views
0

Я использую iTextSharp v5.5.6DefaultCell свойство не используется в моем PDF, созданный с iTextSharp

Я создаю большой стол. Чтобы быть последовательным в моем макете, я хочу использовать класс 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, я получаю тот же результат.

Я искал часы, и большинство образцов, которые я нашел, используют нечто похожее. Любое предложение очень много.

ответ

2

Вы сами создаете объекты PdfPCell. В этом случае ячейка по умолчанию равна всегда игнорируется.

См What is the PdfPTable.DefaultCell property used for?

При создании PdfPTable, вы добавляете клетки.

  • Одним из способов является создание PdfPCell объекта и добавить эту ячейку с помощью метода addCell(). В этом случае вы несете ответственность за определение свойств каждой отдельной ячейки.
  • Другой способ - использовать короткую вырезку: вы не создаете PdfPCell, но вы добавляете String или Phrase в таблицу с помощью метода addCell(). В этом случае создается PdfPCellвнутренне с использованием свойства по умолчанию. Вы можете изменить свойства по умолчанию на , изменяя свойства ячейки по умолчанию. Ячейка по умолчанию получается с использованием метода getDefaultCell().

Это не ошибка, это по дизайну. Вы неправильно истолковываете смысл понятия «ячейка по умолчанию». Обратите внимание, что эта концепция была объяснена в бесплатной электронной книге The Best iText Questions on StackOverflow.

Если вы хотите быть последовательным в своем макете, лучший способ сделать это, создайте свой собственный метод createCell(), который создает PdfPCell, к которому вы применяете все свойства, для которых вы использовали ячейку по умолчанию.

+0

Спасибо за ваше объяснение. Как вы предположили, я создал свой собственный метод CreateCell(), и теперь он работает так, как ожидалось. –

Смежные вопросы