2013-09-10 2 views
4

Можно ли отображать символ евро в 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); 
+1

Не могли бы вы включить немного более подробно? Возможно [небольшой пример] (http://sscce.org/), который демонстрирует проблему? –

ответ

10

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

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

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


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

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

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.

+0

Таким образом, ответ заключается в том, что это невозможно **. – grim

Смежные вопросы