Печать символа ≤ в файле PDF с использованием библиотек JagPDF - PullRequest
0 голосов
/ 20 марта 2019

Я создаю файл PDF с использованием JagPDF и пытаюсь напечатать символ ≤, например:

pdf::Document doc(pdf::create_file("report.pdf"));
doc.page_start(792,612);   
pdf::Font font = doc.font_load("standard; name=Times-Roman; size=12");
doc.page().canvas().text_font(font);
doc.page().canvas().color("f", 0);
doc.page().canvas().text_rendering_mode("f");
doc.page().canvas().text(100, 300, "PEP ≤ 90");
doc.page_end();
doc.finalize();

, который печатает

PEP ? 90

Я попытался прочитать документацию иони говорят что-то о Unicode, но не могут понять, как они работают, это должно быть легко и просто то, чего мне не хватает.Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Я не знаком с JagPDF, но "PEP ≤ 90" должен работать нормально, при условии, что вы сохранили исходный код как UTF-8, а библиотека также ожидает строку UTF-8.Вы также можете использовать "PEP \u2264 90" с \uXXXX - escape-последовательность для кодовой точки U + XXXX, но это, очевидно, менее читабельно

В соответствии с документацией вы можете установить кодировку и вывести текст с помощью приведенного нижефрагмент

font = doc.font_load("file=DejaVuSans.ttf; size=14; enc=utf-8")
canvas.text_font(font)
text = unicode_text.encode('utf8')
canvas.text(50, 780, text)

http://www.jagpdf.org/doc/jagpdf/usersguide/text.htm

Вам также необходимо использовать шрифт TrueType или OpenType, поскольку на той же странице есть примечание к шрифту Type 1

Несмотря на то, что JagPDF позволяет изменить встроенную кодировку шрифта на UTF-8, на практике мы ограничены латинским алфавитом из-за набора символов, используемого стандартными шрифтами.

Если вы используете C ++ 11 и выше (что вам следует), то вы можете принудительно кодировать как UTF-8 одним из следующих

u8"PEP ≤ 90"
u8"PEP \U00002264 90"
u8"PEP \u2264 90"
0 голосов
/ 23 марта 2019

Попробуйте:

doc.page().canvas().text(100, 300, "PEP \U+2264 90");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...