itext 7 с использованием языка RTL без pdfCalligraph - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь решить проблему с itext 7, требующим, чтобы библиотека pdfCalligraph писала арабский c. Мне удалось записать Arabi c в pdf с itext 7 без pdfCalligraph с использованием библиотеки icu на https://unicode-org.github.io/icu-docs/. это мой код для ее решения:

    PdfWriter writer = new PdfWriter(DEST);
    String text = "Arabic text";
    PdfDocument pdf = new PdfDocument(writer);  
    public static final String _FONT = "NotoNaskhArabic-Regular.ttf";

    PdfFont font = PdfFontFactory.createFont(_FONT, PdfEncodings.IDENTITY_H, true);


    // Initialize document
    Document document = new Document(pdf);
    document.setFont(font);
    document.setTextAlignment(TextAlignment.RIGHT)
    document.setBaseDirection(BaseDirection.LEFT_TO_RIGHT);
    document.setFontScript(Character.UnicodeScript.ARABIC);

    document.add(new Paragraph(toArabic(text));
    document.close();

трюк происходит с методом арабского c. Этот метод основан на ответе: { ссылка }

Теперь он работает со словами и одной строкой текста. Однако если текст занимает несколько строк, строки будут записаны в обратном направлении. поэтому последняя строка будет написана первой. Например, предположим, что следующий текст написан на арабском c:

Чиа прошла долгий путь с тех пор, как впервые появилась из забавной глиняной посуды

в телевизионной рекламе. На сегодняшний день эти семена наиболее известны как

как суперпродукт

, теперь при использовании itext pdf будет:

реклама. Сегодня эти семена наиболее известны как супер-пища

на протяжении долгого времени с тех пор, как они впервые выросли из забавной глиняной посуды на телевидении

Чиа вместо

писать сверху вниз, это записывать сверху вниз. Любая идея, почему это происходит.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...