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

时间:2015-03-23 20:36:20

标签: c# pdf-generation itextsharp

我正在使用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正上方的行中的所有正确数据时??

1 个答案:

答案 0 :(得分:0)

请阅读我对Add paragraph dynamically at the bottom with iText library in android

的回答

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

的上下文中无效

要解决您的问题,您必须按照我的回答中的说明切换到解决方案,否则您必须删除所有换行符。