У меня есть полностью обоснованный текст Chunk (строка различной длины), за которым следует Chunk, содержащий объект DottedLineSeparator. То, что мне нужно знать, это то, что строка переменной длины обертывается во вторую строку (теоретически она может обернуть 3-ю строчку, но это очень маловероятно)., если текст, заключенный в абзац/ячейку
Я знаком с использованием метода GetWidthPoint() (я читал this question) на объекте Chunk, который я использую; но он не работает со 100% -ной точностью, которую я считаю из-за полного обоснования текста ... что означает, что пробелы могут различаться по фактической ширине.
Что я надеялся, был бы какой-то способ определить высоту абзаца, содержащего эти два куска, или объект PdfPCell, с которым я пользуюсь .AddElement(), чтобы добавить объект Paragraph или даже в этом отношении объект PdfPTable, к которому я добавляю объект PdfPCell. Я знаю, что могу получить высоту таблицы после Я пишу объект PdfPTable в документ (используя .TotalHeight). Это запутанно, потому что я могу вызвать cell.GetMaxHeight(), но он всегда возвращает 8.75 ... независимо от того, достаточно ли текста для обертывания или нет!
К сожалению, мне нужно знать, какова высота для 1-й ячейки, прежде чем я смогу создать контент для остальных ячеек, что является дилеммой.
Любые идеи/указатели/руководство?
Вот код для иллюстрации:
Dim c As PdfPCell
Dim t As PdfPTable
Dim p As Paragraph
Dim textWrapsAround As Boolean = False
Dim amendedTextWrapsAround As Boolean = False
t = New PdfPTable(3)
t.SetWidths({40, 12, 12})
t.WidthPercentage = 95.0F
t.HorizontalAlignment = Element.ALIGN_CENTER
p = New Paragraph("", DEFAULTFONT)
p.SetLeading(0.5F, 1.0F)
c = New PdfPCell() With {.Border = 0}
c.MinimumHeight = PdfDocument.LineHeightPts
p.Add(New Chunk(name.Trim(), DEFAULTFONT))
p.Add(New Chunk(leaderLine))
p.Alignment = Element.ALIGN_JUSTIFIED
If p.Chunks(0).GetWidthPoint >= 216 Then textWrapsAround = True
c.AddElement(p)
c.HorizontalAlignment = Element.ALIGN_JUSTIFIED
c.PaddingTop = 0
t.SetExtendLastRow(True, False)
t.AddCell(c)
c = emitPdfColumnCell(col1, lFormat, textWrapsAround)
c.MinimumHeight = PdfDocument.LineHeightPts
c.HorizontalAlignment = Element.ALIGN_RIGHT
c.PaddingTop = If(textWrapsAround AndAlso col2.Contains(vbCrLf), top_padding, 0)
t.SetExtendLastRow(True, False)
t.AddCell(c)
c = emitPdfColumnCell(col2, lFormat, textWrapsAround)
c.MinimumHeight = PdfDocument.LineHeightPts
c.HorizontalAlignment = Element.ALIGN_RIGHT
c.PaddingTop = If(textWrapsAround AndAlso col2.Contains(vbCrLf), top_padding, 0)
t.SetExtendLastRow(True, False)
t.AddCell(c)
t.KeepTogether = True
pdf_doc.Add(t)
даже сейчас я подумал, может быть, если бы у меня не было пункта, а ячейка HorizontalAlignment установлена на Element.ALIGN_JUSTIFIED, это может сработать, но это не так ... – CHarmon