水晶报表's静态文本中无效字符
本文关键字:文本 无效 字符 静态 报表 水晶 | 更新日期: 2023-09-27 18:12:51
我有一个Crystal报告,它目前与Delphi 7应用程序一起使用,该应用程序现已服务多年,没有任何问题。处理完应用程序后,将报告导出为PDF。
最近,我用做了另一个应用程序。Net 3.5(不能超过,因为我们使用一些旧的自定义控件)。当我使用该应用程序使用相同的报告(导出为PDF)时,我在"静态标签"上获得了一些额外的字符。示例:
报表静态文本-> Klant编号PDF -> Klanti数字(有一个额外的"i")
对于所有的文本标签报告已使用"Calibri"字体。后来我注意到,当我把字体类型改为"Arial"时,效果很好。
但是我不能这样做,因为这是一份官方发票,需要与所有应用程序采用相同的格式(字体)。
为什么它给出正确的输出从Delphi而不是在。net ?
我们可以用下面的方法通过编程改变报表的字体,同样可以解决这个问题。
private void updateReport(ReportDocument doc)
{
Font ft;
foreach (Section sec in doc.ReportDefinition.Sections)
{
foreach (ReportObject obj in sec.ReportObjects)
{
if (obj.Kind == ReportObjectKind.FieldHeadingObject)
{
FieldHeadingObject fobj = (FieldHeadingObject)obj;
ft = new Font("Arial", fobj.Font.Size, fobj.Font.Style, fobj.Font.Unit,
fobj.Font.GdiCharSet, fobj.Font.GdiVerticalFont);
fobj.ApplyFont(ft);
}
else if (obj.Kind == ReportObjectKind.FieldObject)
{
FieldObject fobj = (FieldObject)obj;
ft = new Font("Arial", fobj.Font.Size, fobj.Font.Style, fobj.Font.Unit,
fobj.Font.GdiCharSet, fobj.Font.GdiVerticalFont);
fobj.ApplyFont(ft);
}
else if (obj.Kind == ReportObjectKind.TextObject)
{
TextObject fobj = (TextObject)obj;
ft = new Font("Arial", fobj.Font.Size, fobj.Font.Style, fobj.Font.Unit,
fobj.Font.GdiCharSet, fobj.Font.GdiVerticalFont);
fobj.ApplyFont(ft);
}
}
}
}