Как отобразить арабский язык в PDF, созданном с помощью iText в android

Я использую iText 5.5.10 для создания PDF. Когда я использую английские слова, он работает нормально, но когда я использую арабские слова, он показывает пустые строки.

В чем проблема и как ее решить? Заранее спасибо.

public void createPDF1(View view) throws IOException, DocumentException {
    //    BaseFont urName = BaseFont.createFont("assets/subFolder/fontName.TTF", "UTF-8",BaseFont.EMBEDDED);
    //    Font urFontName = new Font(urName, 12);
    Font font = FontFactory.getFont("Simplified Arabic", BaseFont.IDENTITY_H, true, 22, Font.BOLD);

    EditText et=(EditText)findViewById(R.id.txt_input);
    BaseFont ArialBase = BaseFont.createFont("assets/tahoma.ttf", BaseFont.IDENTITY_H, true);
    Font ArialFont = new Font(ArialBase, 20);

    //  Font f = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font chapterFont = FontFactory.getFont("assets/arialuni.ttf", BaseFont.IDENTITY_H, 16, Font.BOLDITALIC);
    Font f=new Font(Font.FontFamily.TIMES_ROMAN,50.0f,Font.UNDERLINE,BaseColor.RED);
    Document document = new Document();

    String outpath= Environment.getExternalStorageDirectory()+"/mypdf1.pdf";

    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outpath));
    document.open();

    Phrase p = new Phrase("This is incorrect:احمد",ArialFont);
    p.add(new Chunk("احمد",ArialFont));
    p.add(new Chunk(": 50.00 USD"));
    document.add(p);

    p = new Phrase("This is correct: ");
    p.add(new Chunk("#"+et.getText().toString(),chapterFont));
    p.add(new Phrase(": 50.00"));

    ColumnText canvas = new ColumnText(writer.getDirectContent());
    canvas.setSimpleColumn(36, 750, 559, 780);
    canvas.setRunDirection(PdfWriter.RUN_DIRECTION_LTR);
    canvas.addElement(p);
    canvas.go();

    document.close();
}

Я пробовал предложения в эта почта, но это не сработало.

Пожалуйста, объясните, что вы имеете в виду, когда пишете «Не работает». Вы добавляете контент три раза и читаете свой код, это дает неверный результат при первой попытке, правильный результат во второй попытке, и вы не сообщаете нам, правильна третья попытка или нет. Трудно ответить на вопрос, если не объяснишь точную суть проблемы. Начиная с этот ответ был принят, лучший ответ, который можно дать на вопрос «это не работает»: «это работает для нас».

Bruno Lowagie 16.08.2018 10:07

когда я использовал этот код BaseFont ArialBase = BaseFont.createFont ("assets / tahoma.ttf", BaseFont.IDENTITY_H, true); Шрифт ArialFont = новый шрифт (ArialBase, 20); остановка приложения и PDF-файл не был создан. когда я удалил этот код, PDF-файл был создан, а арабское слово не появилось

sakr dev 16.08.2018 17:07

Я обнаружил, что проблема, с которой вы столкнулись, была файлом Assets внутри файла res при удалении этой папки. и я щелкнул прямо по приложению и выбрал New, а затем Folder, а затем Asset Folder, затем поместил в него тип шрифта, проблема была решена, и приложение работает хорошо

sakr dev 17.08.2018 00:42

@BrunoLowagie Спасибо за ваш интерес и попытку решить проблему, и извините, что потратили ваше время

sakr dev 17.08.2018 00:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
4
783
0

Другие вопросы по теме