2016-05-16 4 views
1

Я использую iTextSharp (5.5.9) для создания страницы PDF с арабскими и английскими символами, я использую PdfPTable для организации текста на странице. Я смог показать английских персонажей, но не повезло с арабскими.iTextSharp, отображающий арабский

Я использую MVC6 Web API для загрузки документа в браузере, он код:

[HttpGet] 
    [Route("PrintReport")] 
    public FileStreamResult GenerateReport(int id) 
    { 
MemoryStream workStream = new MemoryStream(); 
     Document document = new Document(PageSize.A4, 25, 25, 30, 30); 
     PdfWriter.GetInstance(document, workStream).CloseStream = false; 

     document.Open(); 
     document.NewPage(); 
     string fontLoc = @"c:\windows\fonts\tahoma.ttf"; // make sure to have the correct path to the font file 
     BaseFont bf = BaseFont.CreateFont(fontLoc, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
     Font f = new Font(bf, 12); 

     PdfPTable table = new PdfPTable(3); 
     table.DefaultCell.NoWrap = false; 

     table.WidthPercentage = 100; 
     table.AddCell(getCell("Testing", PdfPCell.ALIGN_LEFT,f)); 
     table.AddCell(getCell("Text in the middle", PdfPCell.ALIGN_CENTER,f)); 
     PdfPCell cell = new PdfPCell(new Phrase("مرحبا", f)); 
     cell.NoWrap = false; 
     cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL; 
     table.AddCell(cell); 
     document.Add(table); 


     document.Close(); 

     byte[] byteInfo = workStream.ToArray(); 
     workStream.Write(byteInfo, 0, byteInfo.Length); 
     workStream.Position = 0; 

     return new FileStreamResult(workStream, "application/pdf"); 

     } 
private PdfPCell getCell(string text, int alignment,Font f) 
    { 
     PdfPCell cell = new PdfPCell(new Phrase(text,f)); 
     cell.Padding = 0; 
     cell.HorizontalAlignment = alignment; 
     cell.Border = PdfPCell.NO_BORDER; 
     return cell; 
    } 

Но я получаю вопросительные знаки

+0

Я не думаю, что Tahoma является полным юникод шрифта. Проверьте этот ответ, я думаю, что он доходит до достаточно подробностей: http://stackoverflow.com/questions/10329863/display-unicode-characters-in-converting-html-to-pdf –

+0

Я проверю его, но я также попробовал arialuni.ttf, но он дал мне вопросительные знаки вместо арабских букв. – Mhand7

+0

Я не уверен в этом на 100%, но я не верю, что iText свопит неизвестные символы с символом замены Unicode (вопросительный знак). Я просто построил быстрый образец с символом Klingon ('\ uF8D0') в отношении шрифта, который, как мне известно, не поддерживает его в настоящее время (' Arial Unicode MS') и получил пустой PDF-файл, никаких вопросительных знаков. Это заставляет меня думать, что вы выполняете некоторую строчную обработку в другом месте (или это делается от вашего имени), которая выполняет эту замену до того, как iText включится. –

ответ

2

Существует какая-то ошибка в коде. вместо клетки вы должны поместить таблицу в коде, где вы написали

cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL; 
Смежные вопросы