2016-10-12 5 views
0

Crystal 보고서가 있는데,이 보고서는 현재 문제없이 몇 년간 사용되는 Delphi 7 응용 프로그램과 함께 사용됩니다. 처리 후 응용 프로그램 내보내기 보고서는 PDF로보고합니다.Crystal Report의 정적 텍스트에 잘못된 문자가 있습니다.

최근에 나는 .Net 3.5을 사용하여 또 다른 응용 프로그램을 만들었습니다 (이전 사용자 정의 컨트롤을 사용하기 때문에 그 이상으로 갈 수 없습니다). 해당 응용 프로그램을 사용하여 동일한 보고서 (PDF로 내보내기)를 사용하면 "정적 레이블"에 몇 가지 추가 문자가 표시됩니다.

예 :

보고서에

정적 텍스트 -> Klant의 nummer이 은 우리가 PDF에 무엇을 얻을 - (에 "I"추가가됩니다) 모든 텍스트에 대한

보고서를 lables 사용하고있다> Klanti의 nummer가 "Calibri"글꼴. 나중에 글꼴 유형을 "Arial"로 변경하면 잘 동작합니다.

하지만 공식 송장은 모든 애플리케이션에서 동일한 형식 (글꼴)이어야하므로이 작업을 수행 할 수 없습니다.

. 닷넷이 아니라 델파이의 정확한 출력을 제공하는 이유는 무엇입니까?

답변

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