iTextSharp PdfPCell Выравнивание с чанком

Я создаю PDF программно, используя iTextSharp и генерирую PdfPTable.

В некоторых клетках мне нужна гиперссылка.

Без гиперссылки я могу выровнять текст в ячейке по горизонтали и вертикали, однако, когда я добавляю фрагмент, содержащий мою гиперссылку, ячейка теряет свойство выравнивания.

Вот мой код...

var webAddress = new Chunk(row["product_code"].ToString(), linkFont);
webAddress.SetAnchor(row["url"].ToString());

PdfPCell ProductCodeCell = new PdfPCell();
ProductCodeCell.AddElement(webAddress);
ProductCodeCell.VerticalAlignment = Element.ALIGN_MIDDLE;
ProductCodeCell.HorizontalAlignment = Element.ALIGN_CENTER;
ProductCodeCell.Padding = 3f;
table.AddCell(ProductCodeCell);

Может ли кто-нибудь помочь мне изменить ссылку?

Большое спасибо.

1 ответ

Решение

Смотрите этот ответ для обсуждения текстового режима в сравнении с композитным режимом. В основном, если вы используете AddElement() вам нужно установить выравнивание на вашем объекте вместо самой ячейки. Chunk однако не имеет выравнивания, поэтому вам нужно обернуть кусок во что-то, что делает Paragraph,

var table = new PdfPTable(1);

//Create our chunk with anchor
var webAddress = new Chunk("hello");
webAddress.SetAnchor("http://www.example.net/");

//Create a paragraph holding the chunk and set the alignment on _it_
var para = new Paragraph(webAddress);
para.Alignment = Element.ALIGN_CENTER;

//Create our cell
PdfPCell ProductCodeCell = new PdfPCell();

//Add the paragrph to it
ProductCodeCell.AddElement(para);

//Padding on the cell still works
ProductCodeCell.Padding = 30f;

//Add cell to table
table.AddCell(ProductCodeCell);
Другие вопросы по тегам