从 iTextSharp 的 4.1.2 => 5.1.3 版本迁移时,我遇到了从文本生成 PDF 时发生的错误。问题是当一行的第一个字符有前导空格时,该前导空格会被截断。这是右对齐列的问题。
示例:(破折号=空格)
输入:
------标题
--------------1
--------------2
0123456789
输出:
-----标题
-------------1
-------------2
0123456789 ~~~注意对齐不正确,因为该列没有前导空格!
有问题的代码已缩小到文件“iTextSharp/text/pdf/PdfChunck.cs”方法“TrimFirstSpace”。在流出字节时,从 PdfDocument 类调用此方法。问题是没有关于这个方法试图完成什么的代码注释。
我应该改变什么才能使这项工作正确?似乎在这里注释掉 ELSE 条件应该可以解决这个问题。
public float TrimFirstSpace()
{
BaseFont ft = font.Font;
if (ft.FontType == BaseFont.FONT_TYPE_CJK && ft.GetUnicodeEquivalent(' ') != ' ')
{
if (value.Length > 1 && value.StartsWith("\u0001"))
{
value = value.Substring(1);
return font.Width('\u0001');
}
}
else
{
if (value.Length > 1 && value.StartsWith(" "))
{
value = value.Substring(1);
return font.Width(' ');
}
}
return 0;
}