bonjour tous le monde,
je veut créer une page pdf en utilisant iTextSharp avec langue arabe. les mots doivent être afficher à des positions spécifiques définies au paravent.

voici le code testé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
//Declare a itextSharp document 
                Document document = new Document(PageSize.A4);
                Random ran = new Random();
                string PDFFileName = string.Format(@"E:\Test{0}.Pdf", ran);
                //Create our file stream and bind the writer to the document and the stream 
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFFileName, FileMode.Create));
                //Open the document for writing 
                document.Open();
                //Add a new page 
                document.NewPage();
 
 
                var ArialFontFile = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.ttf");
                //Reference a Unicode font to be sure that the symbols are present. 
                BaseFont bfArialUniCode = BaseFont.CreateFont(ArialFontFile, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
                //Create a font from the base font 
                iTextSharp.text.Font font = new iTextSharp.text.Font(bfArialUniCode, 14);
 
 
                //Use a table so that we can set the text direction 
                var table = new PdfPTable(1)
                {
                    RunDirection = PdfWriter.RUN_DIRECTION_RTL,
                };
                //Ensure that wrapping is on, otherwise Right to Left text will not display 
                table.DefaultCell.NoWrap = false;
                ContentObject CO = new ContentObject();
                CO.Name = "Ahmed Gomaa";
                CO.StartDate = DateTime.Now.AddMonths(-5);
                CO.EndDate = DateTime.Now.AddMonths(43);
 
              string content = string.Format(" تم إبرام هذا العقد في هذا اليوم من قبل {0} في المبلغ بين ", CO.Name);
 
 
 
                var phrase = new Phrase(content, font);
 
 
 
 
                PdfPCell text = new PdfPCell(phrase)
                {
                    RunDirection = PdfWriter.RUN_DIRECTION_RTL,
                     Border = 0
                };
                //Ensure that wrapping is on, otherwise Right to Left text will not display 
                text.NoWrap = false;
 
                PdfContentByte cb = writer.DirectContent;
                cb.BeginText();
                cb.SetFontAndSize(bfArialUniCode, 12);
                cb.MoveText(265, 597);
                cb.ShowText(CO.Name);
                cb.EndText();
 
                //Add the cell to the table 
                table.AddCell(text);
 
                //Add the table to the document 
               document.Add(table);
 
                //Close the document 
                document.Close();
le problème est que lorsque j'utilise la classe PdfContentByte pour placer un mot en langue arabe dans le doc avec coordonnées défini par l'alphabet arabe s'affiche de gauche à droite au lieu de droite à gauche

merci d'avance pour vos aide.