Я использую ITextpdf для java, чтобы создавать штампованные PDF-файлы, иногда сгенерированный PDF-код на арабском языке, и я столкнулся с смешной проблемой. Чтобы создать арабскую страницу с Right To Left (RTL), я использую таблицы и ячейки, которые имеют свойство PdfPCell.setRunDirection (PdfWriter.RUN_DIRECTION_RTL). Когда я использую это свойство, арабский язык вообще не отображается, если я избегу вызова этого свойства. Арабские строки правильно показаны, это означает, что у меня не должно быть проблем с шрифтами, и я не знаю, действительно ли это проблема с IText или мной «Просто что-то не хватает.ITextPdf: Печать арабских строк справа налево (RTL)
Вот маленький мир кода, который показывает арабскую строку правильно:
BaseFont bf = BaseFont.createFont(Application.getBASEPATH() + "fonts/arabic.ttf",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font trebuchetSmaller = new Font(bf, 10, 0);
PdfPTable tbl = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
Paragraph paragraph = new Paragraph();
paragraph.add(new Phrase("ربط صفحة على شبكة الإنترنت"), trebuchetSmaller));
cell.addElement(paragraph);
tbl.addCell(cell);
Здесь необходимо изменение, которое делает арабский струнный исчезают:
BaseFont bf = BaseFont.createFont(Application.getBASEPATH() + "fonts/arabic.ttf",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font trebuchetSmaller = new Font(bf, 10, 0);
PdfPTable tbl = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
Paragraph paragraph = new Paragraph();
paragraph.add(new Phrase("ربط صفحة على شبكة الإنترنت"), trebuchetSmaller));
cell.addElement(paragraph);
tbl.addCell(cell);
Если я использую PdfWriter.RUN_DIRECTION_RTL с Английская строка корректно отображается в формате, который он должен был быть. Если я использую строку со смешанными английскими и арабскими символами, то будут показаны только английские.
Вы можете использовать Spannabe. [Существует более подробную информацию об этом] [1] [1]: http://stackoverflow.com/a/11612380/1278748 –
использование шрифта ARIAL_FONT – shareef