我已經能夠在我的VB .NET代碼,看起來幾乎完全一樣,我希望它創建使用iTextSharp的PDF文件。但是,我正在使用具有一列和多行的表格來顯示使用塊和短語放在一起的長文本字符串。某些塊包含帶下劃線的文本。當一個短語中有下劃線的文本時,整個單元格需要高亮顯示爲灰色,並且我正在使用PdfPCell的BackgroundColor屬性。iTextSharp的下劃線在單元格文本落在外面細胞
我遇到的問題是,下劃線線落在小區邊界的外側(外側突出顯示的)。我已經嘗試了很多事情來解決這個問題,比如設置一個固定的單元格高度,然後將cell.VerticalAlignment設置爲Element.ALIGN_TOP;使用包含(0,0)的各種值的SetLeading,這隻會使問題變得更糟;將cell.Ascender設置爲True;並更改填充值。我可能也嘗試過其他的東西,但由於某種原因,無論我嘗試什麼,下劃線文本的界限都不在突出顯示之內。而且,高亮就會從上文單元格中的文本底部(這就是爲什麼我試圖與SetLeading值播放。)
的圖片顯示我生成的PDF的第2頁。 PDF with table
以下是實現此操作的代碼段的示例 - 「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)
您是否嘗試過改變字體,其他如Arial字體(它會破壞你的宋體固定寬度的設置,但只要給它一試)。關於setLeading的另一件事,是否僅適用於單元格?在複合模式下,您還必須設置添加的元素的前導,例如在將其添加到單元格之前設置段落的前導。 – haraman
嘗試爲這些單元格設置一些「填充」,如果它由您確定。 – nelek