2016-07-26 7 views
0

私はASPのWeb APIプロジェクトにItextsharp iは、PDF文書 を作成するためにItextSharpを使用Methodeのこのドキュメントでは、フランス語、アラビア語のテキスト が含まれている私は、アラビア語のフォントを取得するには、このコードを使用していアラビアフォント

が含まれているソリューションを持っているの生成:

私はPDFを生成するメソッドを呼び出したときにIIS 7のWeb 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にはアラビア語の字形は含まれていません.FBBファイルをAFMファイルとともに提供しない限りTimes-Romanは埋め込むことができません。

問題を解決するには、サーバーにArialUni.ttfが存在することを確認するか、アラビア語をサポートする別のフォントを指定することです。

+0

確認後、私が追加したときにArialUni.ttfがサーバーに存在しないということは、PDFがcorerctellyで生成されたということです – James

関連する問題