Как написать текст в нескольких столбцах в iTextSharp?

#c# #itext

#c# #itext

Вопрос:

Я относительно новичок в iText 5 .NET (ранее известный как iTextSharp). Есть ли способ записать текст в несколько столбцов? Я не могу использовать colspan, так как каждый столбец имеет свой цвет.

 var cell = new PdfPCell() { Padding = 0, BorderWidth = 0, FixedHeight = _slotParam.SlotHeight };
var tgrid = new PdfPTable(3);
tgrid.AddCell(new PdfPCell() { Padding = 0, BackgroundColor = Color.ORANGE, BorderWidth = 0, FixedHeight = _slotParam.SlotHeight });
tgrid.AddCell(new PdfPCell() { Padding = 0, BackgroundColor = Color.WHITE, BorderWidth = 0, FixedHeight = _slotParam.SlotHeight });
tgrid.AddCell(new PdfPCell() { Padding = 0, BackgroundColor = Color.GREEN, BorderWidth = 0, FixedHeight = _slotParam.SlotHeight });

cell.AddElement(tgrid);
Paragraph paragraph = new Paragraph(phrase);
paragraph.Leading = 11f;
cell.AddElement(phrase);
mainGrid.AddCell(cell);
 

Это результат, который у меня есть, я хочу написать текст в этих 3 цветах.

введите описание изображения здесь

Комментарии:

1. Вы могли бы использовать таблицу и установить границу ячеек таблицы в NO_BORDER

2. Сделал то же самое, но не сработало var cell = new PdfPCell() { Padding = 0, BorderWidth = 0, FixedHeight = _slotParam.SlotHeight }; var tgrid = new PdfPTable(3); tgrid.DefaultCell.Border = Rectangle.NO_BORDER;

3. i.stack.imgur.com/QXN4A.png Результат, который я получил, я хочу написать текст через эти 3 цвета.

4. Если у вас разные ячейки, вам нужно разделить текст и разделить его на отдельные ячейки. Если вы хотите разместить текст в ячейке поверх трех столбцов, у вас будет только одна ячейка, и вы не сможете применить цвета, как вы это делаете. В зависимости от вашей конкретной задачи я бы предложил либо иметь одну ячейку в таблице со всем текстом и рисовать три цвета в событии ячейки; или вообще не использовать таблицы и рисовать цвета на UnderContent .

Ответ №1:

На самом деле, решение простое. Если для первой ячейки задать значение NoWrap = true, текст будет перекрывать другие ячейки. tgrid.AddCell(new PdfPCell(phrase) { Padding = 0, BackgroundColor = Color.ORANGE, BorderWidth = 0, FixedHeight = _slotParam.SlotHeight, NoWrap = true }); [Вывод] 1 Спасибо всем за помощь. Приветствия.

Комментарии:

1. Если бы разработка продукта не остановилась, такой обходной путь, вероятно, не работал бы долго. Однако в случае iText 5 это должно продолжать работать.