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);
      }
    }
  }
}