从另一个 class 带来的 iTextSharp 字符串不会显示

iTextSharp string brought over from another class won't display

我正在使用 iTextSharp 处理各种报告的 C# 项目。 我使用一个 class 从订单中提取数据,然后使用另一个 class 在报告中显示数据。 我使用下面的循环从单独的 class 中提取音符数据(字符串):

for (int i = 0; i < ovNotes.Length; i++)
{
    OVData.orderNotes += StripHTML(ovNotes[i].HTML);
}

ovNotes 是一个字符串,所以它 OVData.orderNotes

StripHTML 方法完全按照它说的去做,删除了 ovNotes

中出现的所有 <p>,<br /> 等标签

接下来,在实际class中显示所有信息:

Phrase orderNotes = this.FormatPhrase(xOVData.orderNotes);
ColumnText.ShowTextAligned(instance.DirectContent, 0, orderNotes, 36f, 440f, 0f);

这会格式化订单备注,使其具有一致的字体、字体大小等。 但是,当代码运行时,订单注释不会出现。 当我用编造的短语替换 orderNotes 时,它显示正常,没有更改其他代码。

Phrase orderNotes = this.FormatPhrase(xOVData.orderNotes);
phrase testPhrase = this.FormatPhrase("This is a test");
ColumnText.ShowTextAligned(instance.DirectContent, 0, testPhrase, 36f, 440f, 0f);
/* Desired (and correct) output
* NOTES:
*   This is a test
*/

Phrase orderNotes 包含来自 xOVdata.OrderNotes 的所有注释,但出于某种原因它拒绝显示。但是,我确实注意到,orderNotes 还包含原始注释所具有的所有  ,因为 StripHTML 方法不会删除它们。我环顾四周,发现的唯一结果是其他(人类)语言或使用 iTextSharp 编辑现有 PDF 的问题。

什么可能会阻止导入的字符串正确显示,尤其是当它在 ColumnText.ShowText... 正上方的行中包含所有正确数据时?

请阅读我对

的回答

正如我在那个答案中解释的那样,showTextAligned() 方法只能用于添加单行(文本不会分布在不同的行上,不允许换行)。在您的评论中,您指出您的 String 以换行符开头。这在 showTextAligned().

的上下文中无效

要解决您的问题,您要么必须切换到我的回答中所述的解决方案,要么必须删除所有换行符。