Мне удалось создать PDF-файл с помощью iTextSharp в моем коде VB .net, который выглядит почти так, как я хочу. Однако я использую таблицу с одним столбцом и несколькими строками для отображения длинных текстовых строк, собранных вместе с помощью фрагментов и фраз. Некоторые фрагменты содержат подчеркнутый текст. Когда во фразе есть подчеркнутый текст, вся ячейка должна быть выделена серым цветом, и для этого я использую свойство BackgroundColor PdfPCell.
Проблема, с которой я столкнулся, заключается в том, что линия подчеркивания выходит за границы ячейки (за пределами выделения). Я пробовал много вещей, чтобы исправить это, например, установил фиксированную высоту ячейки, а затем установил для cell.VerticalAlignment значение Element.ALIGN_TOP; использование SetLeading с различными значениями, включая (0, 0), что только усугубило проблему; установка для cell.Ascender значения True; и изменение значений заполнения. Возможно, я пробовал и другие вещи, но по какой-то причине, что бы я ни пытался, строка для подчеркнутого текста выходит за рамки выделения. И выделение идет прямо до нижней части текста в ячейке выше (поэтому я попытался поиграть со значениями SetLeading.)
На изображении показана вторая страница моего получившегося PDF-файла. PDF с таблицей
Ниже приведен пример разделов кода, реализующих это - «outString1» и «outString2» - это выходные текстовые строки, которые добавляются к одной строке. Существует одно логическое значение для определения необходимости подчеркивания фрагмента текста и одно для определения необходимости выделения ячеек - в некоторых случаях ячейка может быть выделена, но текст не подчеркнут. Есть предложения, как я могу это исправить?
Dim pdfTable As PdfPTable = New PdfPTable(1)
pdfTable.WidthPercentage = 100
'the next section is within a loop to create and load each cell
Dim P As New Phrase()
'Slisted is a Boolean value to determine need for underlining
If Slisted Then
P.Add(New Chunk(outString1, myULfont))
Else
P.Add(New Chunk(outString1, myfont))
End If
P.Add(New Chunk(outString2, myfont))
Dim cell As PdfPCell = New PdfPCell(P)
cell.Border = 0
cell.Padding = 0
'hilite is a Boolean value to determine whether
If hilite Then
cell.BackgroundColor = BaseColor.LIGHT_GRAY
End If
pdfTable.AddCell(cell)
'out of loop, load table into document
pdfDoc.Add(pdfTable)
padding
для этих ячеек, если Вы согласны. - person nelek   schedule 15.10.2015