Crystal 报告静态文本中的无效字符
Invalid Charactors on Crystal Report's Static Text
我有一份 Crystal 报告,目前与 Delphi 7 个应用程序一起使用,这些应用程序服务多年没有任何问题。处理应用程序后将报告导出为 PDF。
最近,我使用 .Net 3.5 创建了另一个应用程序(因为我们使用了一些旧的自定义控件,所以无法超越)。当我使用该应用程序使用相同的报告(导出为 PDF)时,我在 "Static Labels".
上获得了一些额外的字符
示例:
报表上的静态文本 -> Klant nummer
我们在 PDF -> Klanti nummer 上得到了什么(还有一个 "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);
}
}
}
}
我有一份 Crystal 报告,目前与 Delphi 7 个应用程序一起使用,这些应用程序服务多年没有任何问题。处理应用程序后将报告导出为 PDF。
最近,我使用 .Net 3.5 创建了另一个应用程序(因为我们使用了一些旧的自定义控件,所以无法超越)。当我使用该应用程序使用相同的报告(导出为 PDF)时,我在 "Static Labels".
上获得了一些额外的字符示例:
报表上的静态文本 -> Klant nummer 我们在 PDF -> Klanti nummer 上得到了什么(还有一个 "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);
}
}
}
}