Недопустимые символы в статическом тексте Crystal Report

#c# #.net #crystal-reports #delphi-7

#c# #.net #crystal-отчеты #delphi-7

Вопрос:

У меня есть Crystal report, который в настоящее время используется с приложениями Delphi 7, который служит уже много лет без каких-либо проблем. После обработки приложение экспортирует отчет в формате PDF.

Недавно я создал другое приложение, используя .Net 3.5 (не могу выйти за рамки этого, поскольку мы используем некоторые старые пользовательские элементы управления). Когда я использую тот же отчет (для экспорта в формате PDF) с помощью этого приложения, я получаю несколько дополнительных символов в «Статических метках».

Пример :

Статический текст в отчете -> Klant nummer То, что мы получаем в PDF -> Klanti nummer (есть дополнительный «i»)

Для всех текстовых меток в отчете используется шрифт «Calibri». Позже я заметил, что когда я меняю тип шрифта на «Arial», он работает нормально.

Но я не могу этого сделать, поскольку это официальный счет-фактура, который должен быть в том же формате (шрифтом) из всех приложений.

Почему он выдает правильный вывод из Delphi, а не в .Net?

Ответ №1:

Мы можем изменить шрифт отчета программно следующим образом, это также решает проблему.

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