codifica araba in itextsharp

Quando sto provando questo codice per creare un PDF in arabo usando C #, il file PDF generato contiene caratteri discreti. Qualche aiuto quindi non posso ottenere personaggi continui?

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

La scrittura da destra a sinistra e le legature arabe sono supportate solo in ColumnText e PdfPTable !

Dai uno sguardo ai seguenti esempi:

Leggi il libro da cui sono stati presi questi esempi per scoprire perché non tutte le parole sono state riportate correttamente in peace.pdf

Cerca su http://tinyurl.com/itextsharpIIA2C11 per la corrispondente versione C # di questi esempi.

In ogni caso, è necessario un font che sappia come visualizzare glifi arabi:

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

È ora ansible aggiungere testo arabo, ad esempio in una tabella:

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