Crystal Report的静态文本

时间:2016-10-12 04:11:54

标签: c# .net crystal-reports delphi-7

我有一份Crystal报告,目前与Delphi 7应用程序一起使用,这些应用程序几年来都没有任何问题。处理应用程序导出报告后为PDF。

最近,我使用 .Net 3.5 创建了另一个应用程序(由于我们使用了一些旧的自定义控件,因此无法超越它)。当我使用该应用程序使用相同的报告(以PDF格式导出)时,我会在“静态标签”上获得一些额外的特征。

示例:

报告上的静态文字 - > Klant nummer 我们得到的PDF - > Klanti nummer(还有一个“我”)

对于所有文本标签报告使用了“Calibri”字体。后来我注意到当我将字体类型更改为“Arial”时,它工作正常。

但我不能这样做,因为这是一张正式发票需要与所有应用程序采用相同的格式(字体)。

为什么它从Delphi而不是.Net中提供正确的输出?

1 个答案:

答案 0 :(得分:0)

我们可以通过以下方式以编程方式更改报告的字体,它也可以解决问题。

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