2016-07-26 2 views
0

나는 ASP 웹 API 프로젝트 아랍어 폰트를 생성 Itextsharp

를 포함하는 솔루션을 나는이 문서가 프랑스어와 아랍어 텍스트 내가 아랍어 폰트를 얻기 위해이 코드를 사용하여 포함 된 PDF 문서 을 만들 ItextSharp을 사용하십시오 메도이 :

내가 PDF를 생성하는 메서드를 호출 할 때 IIS 7에서 웹 API 프로젝트를 배포 한 후 (프랑스어와 아랍어 텍스트 포함) 내가 제대로 PDF 문서를 생성 할 수있는 응용 프로그램을 실행
public static BaseFont GetArabicFont() 
    { 

     var appDomain = System.AppDomain.CurrentDomain; 
     var basePath = appDomain.BaseDirectory; 
     var fontPath = Path.Combine(basePath, "fonts", "pdf", "ARIALUNI.TTF"); 

     try 
     { 
      BaseFont bf = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 
      return bf; 
     } 
     catch (Exception ex) 
     { 

      return BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

     } 
    } 

,하지만 응답 언제 "메시지": 나는이 메시지가 표시 API를 직접 호출하는 Postmane를 사용합니다. "오류가 발생했습니다", "ExceptionMessage"신원 H 내가 아닌 경우 지원되는 인코딩 이름 "

모르고있다 문제가 IIS에 있거나 IDENTITY_H 글꼴을 변경해야합니까? 누군가 도움을 줄 수 있습니까? 당신이 BaseFont.IDENTITY_H를 사용하는 경우 iText를 항상 것입니다 는 글꼴을 포함,

BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 

:

답변

0

이 이해가되지 않습니다. 그렇지 않다면 iText는 ISO-32000-1을 따르지 않는 PDF를 생성합니다. 그것은이에 더 맞습니다 :

BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

이 정말 중요하지 않습니다, iText를이 오류를 무시하고 어쨌든 글꼴을 포함하므로, 당신이 그것을 포함하지 iText를 말할 경우에도 마찬가지입니다. 그래서 코드가 컴퓨터에서 올바르게 작동합니다.

동일한 코드가 IIS에서 작동하지 않는다고합니다. fontPath에서 ARIALUNI.TTF으로 IIS에서 글꼴이 생성되지 않는다고 가정합니다. 글꼴이 누락 된 것일 수 있습니다. 어쩌면 IIS는 해당 글꼴에 액세스 할 수 없습니다. 이 경우, 오류가 발생하고 다음 줄을 발생 : BaseFont.IDENTITY_HBaseFont.TIMES_ROMAN와 함께 사용할 수 없습니다로

return BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

이 줄은 어느 이해가되지 않습니다. 또한 Times-Roman에는 아랍어 글리프가 포함되어 있지 않습니다. PFB 파일을 AFM 파일과 함께 제공하지 않으면 Times-Roman을 포함 할 수 없습니다.

문제의 해결책은 서버에 ArialUni.ttf이 있는지 확인하거나 아랍어를 지원하는 다른 글꼴을 제공하는 것입니다.

+0

확인 후 문제는 PDF를 corerctelly 생성했을 때 서버에 ArialUni.ttf가 없다는 것입니다. – James