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;
}
Но я получаю вопросительные знаки
Я не думаю, что Tahoma является полным юникод шрифта. Проверьте этот ответ, я думаю, что он доходит до достаточно подробностей: http://stackoverflow.com/questions/10329863/display-unicode-characters-in-converting-html-to-pdf –
Я проверю его, но я также попробовал arialuni.ttf, но он дал мне вопросительные знаки вместо арабских букв. – Mhand7
Я не уверен в этом на 100%, но я не верю, что iText свопит неизвестные символы с символом замены Unicode (вопросительный знак). Я просто построил быстрый образец с символом Klingon ('\ uF8D0') в отношении шрифта, который, как мне известно, не поддерживает его в настоящее время (' Arial Unicode MS') и получил пустой PDF-файл, никаких вопросительных знаков. Это заставляет меня думать, что вы выполняете некоторую строчную обработку в другом месте (или это делается от вашего имени), которая выполняет эту замену до того, как iText включится. –