我正在使用iTextSharp处理各种报告的C#项目。 我使用一个类从一个订单中提取数据,然后使用另一个类来显示报表上的数据。 我使用下面的循环从单独的类中提取音符数据(字符串):
for (int i = 0; i < ovNotes.Length; i++)
{
OVData.orderNotes += StripHTML(ovNotes[i].HTML);
}
ovNotes是一个字符串,因此它的OVData.orderNotes
StripHTML方法正如它所说的那样,删除了出现在ovNotes中的所有<p>,<br />
等标签
接下来,在实际的类中显示所有信息:
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
*/
短语orderNotes包含来自xOVdata.OrderNotes的所有注释,但无论出于何种原因,它都拒绝显示。但是,我注意到orderNotes还包含原始音符所具有的所有内容,因为StripHTML方法不会删除它们。我环顾四周,我发现的唯一结果是其他(人类)语言问题,或使用iTextSharp编辑现有PDF。
什么可能阻止导入的字符串正确显示,特别是当它包含ColumnText.ShowText正上方的行中的所有正确数据时??
答案 0 :(得分:0)
请阅读我对Add paragraph dynamically at the bottom with iText library in android
的回答正如我在该答案中解释的那样,showTextAligned()
方法只能用于添加一行(文本不会分布在不同的行上,不允许换行)。在您的评论中,您表明您的String
以换行符开头。这在showTextAligned()
。
要解决您的问题,您必须按照我的回答中的说明切换到解决方案,否则您必须删除所有换行符。