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