我有一份Crystal报告,目前与Delphi 7应用程序一起使用,这些应用程序几年来都没有任何问题。处理应用程序导出报告后为PDF。
最近,我使用 .Net 3.5 创建了另一个应用程序(由于我们使用了一些旧的自定义控件,因此无法超越它)。当我使用该应用程序使用相同的报告(以PDF格式导出)时,我会在“静态标签”上获得一些额外的特征。
示例:
报告上的静态文字 - > Klant nummer 我们得到的PDF - > Klanti nummer(还有一个“我”)
对于所有文本标签报告使用了“Calibri”字体。后来我注意到当我将字体类型更改为“Arial”时,它工作正常。
但我不能这样做,因为这是一张正式发票需要与所有应用程序采用相同的格式(字体)。
为什么它从Delphi而不是.Net中提供正确的输出?
答案 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);
}
}
}
}