Как: вывести символ евро в pdfkit для nodejs

Можно ли отображать символ евро в pdfkit для nodejs без встраивания внешнего шрифта?

Я использую pdfKit для создания счетов-фактур и хотел бы добавлять к сумме в валюте префикс с символом евро (€).

Я пробовал несколько подходов, и ни один из них не работал:

doc.font('Helvetica-Bold')
    .fontSize(12)
    .text('€', 10, 10); // Alt+0128 on keypad

doc.font('Helvetica-Bold')
    .fontSize(12)
    .text('\u20AC', 10, 10);

person grim    schedule 10.09.2013    source источник
comment
Не могли бы вы включить немного больше деталей? Возможно, небольшой пример, демонстрирующий проблему?   -  person Jonathan Lonowski    schedule 10.09.2013


Ответы (1)


Оказывается, это проблема со шрифтом:

Юникод работает, но вы должны убедиться, что используемый вами шрифт включает символы, которые вы хотите использовать. В отличие от вашей операционной системы, PDFKit не выполняет автоматической замены шрифтов.

Источник: тема Reddit, комментарий автора /u/devongovett


Я протестировал два шрифта, которые были включены в pdfkit. И «Helvetica-Bold», и «Times-Roman» не работали с символами Unicode. Я заметил в документации по шрифтам, что вы можете добавлять свои собственные шрифты, поэтому дал Cardo Font (размещенный в Google Fonts), поскольку он поддерживает множество символов Юникода.

Конечно же, это сработало. Вот сценарий, который я использовал для тестирования (убедитесь, что у вас есть шрифт Cardo):

var PDFDocument = require('pdfkit');
var doc = new PDFDocument();

doc.registerFont('Cardo', 'Cardo/Cardo-Regular.ttf')

doc.font('Cardo')
    .fontSize(20)
    .text('Testing [\u20AC]', 10, 10);

doc.write('out.pdf');

Если вы настроены на использование Helvetica-Bold, загрузите копию шрифта в другом месте (убедитесь, что он поддерживает символы Юникода, которые вам нужны) и зарегистрируйте его, как у меня, со шрифтом Cardo.

person Jay    schedule 10.09.2013
comment
Таким образом, ответ заключается в том, что это не возможно. - person grim; 11.09.2013
comment
Вот список шрифтов, которые поддерживают знак евро. На сайте также есть списки для других символов. fileformat.info/info/unicode/char/20ac/fontsupport.htm< /а> - person edrichhans; 16.09.2020