Шрифт helvetica не работает в wkhtmltopdf

Я пытаюсь использовать шрифт Helvetica при создании pdf, но шрифт не отражен в PDF-формате.

Я сделал несколько google и нашел некоторые решения, но ни один из них не работоспособен.

Пробное решение 1

Я нашел здесь что-то похожее: Проблема с шрифтом

Пробовал последнее решение, упомянутое там

обходной путь - define @font-face в вашем css и имеет ссылку src к внешнему хосту, доступному через wkhtmltopdf

Но решение не работает.

Пробованное решение 2 Я также попытался использовать google-шрифт api, но результат все еще не работает. шрифт helvetica

вот пример Пример пользовательского шрифта

Пробованное решение 3 Я попытался сделать это, используя свойство css @page. Но это также не работает.

Каков подход для работоспособного решения.

Ответ 1

Самый простой способ исправить проблемы с шрифтом wkhtmltopdf заключается в том, что Base64 кодирует шрифт (вы можете использовать этот инструмент) и включать его в свой CSS:

@font-face {
    font-family: 'Helvetica';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQA...
}

Это работает со всеми шрифтами (включая Google Fonts) и гарантирует кросс-платформенную совместимость между различными машинами и операционными системами.

Ответ 2

Для меня загрузка шрифтов из Google Fonts не сработала. И добавление base64ed в файл CSS кажется немного для меня (корейские типы - несколько мегабайт). Я бы рекомендовал установить шрифты, которые нужно использовать на машине. Для Ubuntu вы можете просто загрузить файлы шрифтов из Google Fonts и скопировать файлы в каталог $HOME/.fonts и запустить команду fc-cache в командной строке, чтобы перестроить список шрифтов.

$ mkdir ~/.fonts
$ copy your-font-file.ttf ~/.fonts/
$ fc-cache -fv

Для приложения Rails вы можете символически ссылаться

$ ln -s /your/app/root/assets/fonts ~/.fonts

Затем вы сможете перечислить все доступные шрифты.

$ fc-list
Nimbus Sans L:style=Regular Italic
URW Palladio L:style=Roman
Century Schoolbook L:style=Bold Italic
Nimbus Sans L:style=Bold
URW Chancery L:style=Medium Italic
Nimbus Roman No9 L:style=Regular
Century Schoolbook L:style=Bold
Century Schoolbook L:style=Italic
Nimbus Sans L:style=Regular
....

Ответ 3

Чтобы добавить в fray, используя wkhtmltopdf 0.12.1 (with patched qt) в linux, это сработало для меня:

@font-face {
    font-family: dejaSansMono;
    src: url('file:///usr/share/fonts/dejavu/DejaVuSansMono.ttf');
} 

I.e., указав путь к .ttf. Простое имя семейства шрифтов, любое семейство шрифтов, не работало, даже если это было в браузере.

Ответ 4

У меня была такая же проблема с PT Sans из google. Для меня работал следующий процесс:

  • Загрузите PT Sans из Google и запустите его через fontsquirrel генератор
  • Поместите @font-face (я использовал ttf) в css (в моем случае это было в html глава файла php)

Примечание, что я не использовал base64, и он работал как ожидалось.

Надеюсь, что это поможет

Ответ 5

Чтобы преобразовать HTML в PDF с помощью wkhtmltopdf, попытайтесь избежать woff font face. Используйте формат trutype веб-шрифтов Google с кодировкой base64.

Недавно я попытался использовать веб-шрифт google из Google Web Fonts. Но в браузере он отображается правильно, но он не отображается после преобразования HTML в PDF.

Затем после поиска большого количества веб-сайтов я нашел инструменты для кодирования шрифтов в base64 в кодированном формате, а также получил CSS для @font-face.

Ответ 6

расширение baxangs ответ для пользователей linux (x64): вы устанавливаете файл шрифта ttf в /usr/share/fonts/font -folder/font-name

а затем в вашем файле css используйте имя шрифта, указанное в списке fc, вам не нужно использовать @font-face, просто используйте имя шрифта в вашем css

пример Verdana.ttf ======

копирование с локальной машины на сервер в /usr/share/fonts/Verdana/Verdana.ttf

fc-list, чтобы получить имя шрифта (скорее всего это будет Verdana)

Затем используйте в своем css P {font-family: 'Verdana'}

и что это! взял меня на некоторое время, чтобы исправить это.