2013-08-25 11 views
6

私は、C#でPDFフォームにいくつかのUnicode charaters(アラビア語)を挿入しようとしています、私はiTextSharpライブラリを使用するが、私は文字を挿入し、PDF内の文字を保存するとき、私まで表示され得ていないUnicode文字を提出表示されるはずのシャッターの位置をダブルクリックします。フィルPDFフォーム

string pdfTemplate = @"c:\po.pdf"; 
string newFile = @"g:\test\completed_fw4.pdf"; 
PdfReader pdfReader = new PdfReader(pdfTemplate); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)); 
AcroFields pdfFormFields = pdfStamper.AcroFields; 
pdfFormFields.SetField("position", TextBox1.Text); 
pdfStamper.FormFlattening = false; 
// close the pdf 
pdfStamper.Close(); 

答えて

11

これを修正できる方法はいくつかありますが、最終的には、Unicodeコンテンツをレンダリングできるフォントを指定する必要があります。

まず、あなたのUnicodeフォントを指すBaseFontオブジェクトを作成し、私が使用しているのArial Unicodeの下に:

var arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 
var arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

その後、個別に各フィールドにフォントプロパティを設定することができ、次のいずれか

pdfFormFields.SetFieldProperty("position", "textfont", arialBaseFont, null); 

また、ドキュメント全体の置換フォントを追加することもできます。

pdfFormFields.AddSubstitutionFont(arialBaseFont); 
+0

これはpdfファイルを作成します大きくなると2MBから17MBにジャンプします。 – danarj

+1

Arial Unicode MSは50,000以上のグリフをサポートしています。 PDF標準(およびiTextだけではない)には、英語以外の言語用のグリフは付属していないので、フォントを指定する必要があります。あなたは好きなフォントを選ぶことができます。私は例としてArial Unicode MSを使用しました。 –

+0

はどこにでもあります。 – danarj

関連する問題