itextsharp中的阿拉伯语编码

当我尝试使用C#在阿拉伯语中创建此代码时,生成的PDF文件包含离散字符。 任何帮助,所以我不能得到连续的字符?

//Create our document object Document Doc = new Document(PageSize.LETTER); //Create our file stream using (FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read)) { //Bind PDF writer to document and stream PdfWriter writer = PdfWriter.GetInstance(Doc, fs); //Open document for writing Doc.Open(); //Add a page Doc.NewPage(); //Full path to the Unicode Arial file string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "arabtype.TTF"); //Create a base font object making sure to specify IDENTITY-H BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //Create a specific font object iTextSharp.text.Font f = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.NORMAL); //Write some text, the last character is 0x0278 - LATIN SMALL LETTER PHI Doc.Add(new Phrase("This is a ميسو ɸ", f)); //Write some more text, the last character is 0x0682 - ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE Doc.Add(new Phrase("Hello\u0682", f)); //Close the PDF Doc.Close(); } 

只有ColumnTextPdfPTable支持从右到左的书写和阿拉伯语连字!

看看以下示例:

阅读这些例子的书籍,找出为什么不能在peace.pdf中正确呈现所有单词

在http://tinyurl.com/itextsharpIIA2C11中搜索这些示例的相应C#版本。

无论如何,您需要一种知道如何显示阿拉伯字形的字体:

 BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font f = new Font(bf, 12); 

您现在可以添加阿拉伯文本,例如在表格中:

 PdfPCell cell = new PdfPCell(); cell.AddElement(new Phrase("Hello\u0682", f)); cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;