WkhtmlToPdf несколько шрифтов лица / стили

Я прочитал много, много тем о хлопотах с несколькими стилями шрифтов / гранями при использовании wkhtmltopdf.

В настоящее время у нас возникают проблемы при использовании Nunito (предоставляемых веб-шрифтами Google) в обычном и жирном стиле на одной странице. Мы испробовали много (возможных) решений, но ни одно из них еще не дало нам решения.

Мы попробовали следующие решения, но пока никому не удалось:

  • Изменить имя семейства шрифтов с помощью FontForge
  • Конвертировать шрифты используя fontsquirrel
  • Вручную конвертировать шрифты в base64, используя openssl (mac)
  • Конвертировать в base64 http://www.opinionatedgeek.com/dotnet/tools/base64encode/default.aspx
  • Использование удаленных включений для шрифтов (из Google WebFont)
  • Измените шрифты на SVG

Все вышеперечисленные методы не сработали. Браузер отображает его правильно, но wkhtmltopdf, похоже, отображает его по-другому.

Мы опубликовали несколько тестовых примеров:
http://bannes.nl/fonts

Если у кого-то есть предложения, как это исправить, пожалуйста, дайте мне знать. Если вы используете Mac и установили wkhtmltopdf, пожалуйста, не стесняйтесь проверять случаи на http://bannes.nl/fonts. Я включил вывод PDF для каждого теста в их каталоге.

Надеюсь, что кто-то получил предложение о том, как это исправить!

С наилучшими пожеланиями,

Робин

4

Решение

Я потратил много часов на эту же проблему, пытаясь заставить работать несколько лиц Готэма, и смог решить эту проблему. Я обнаружил, что многие шрифты TTF / OTF, являющиеся частью коллекции, содержат поле «Предпочитаемое семейство» в таблице имен TTF. Значением этого поля будет общее имя коллекции, например «Gotham» во всех файлах шрифтов. Таким образом, фактическое «Фамилия» может быть уникальным, например, «Gotham Book» или «Gotham Light», но «Предпочитаемое семейство» будет общим для всех файлов.

FontForge TTF Names

Если вы проверите установленный шрифт с помощью команды fc-list в Linux, вы увидите, что для шрифта есть два семейных имени:

Две фамилии

В этом и заключается проблема. Когда несколько лиц в одном и том же семействе используются в одном и том же PDF, wkhtmltopdf (не уверен, что это вещь веб-набора или вещь QT), кажется, выбирает только один из шрифтов в «Предпочитаемом семействе» и использует его для рендеринга всех текст, который должен отображаться разными шрифтами в этой группе.

К счастью, вы можете полностью удалить поле «Preferred Family» из файлов шрифтов, используя такой инструмент, как FontForge. Я сделал это для всех нужных мне вариантов семейства Готэм и переустановил их, что решило проблему двойной фамилии:

Одна фамилия

Это позволило wkhtmltopdf правильно отобразить все поверхности шрифтов в моей системе.

10

Другие решения

  • Используйте эту похожую утилиту, поддерживаемую другими разработчиками: https://github.com/plessl/wkpdf
  • если это не работает для вас, убедитесь, что у вас установлена ​​последняя версия wkhtmltopdf

Если вышеупомянутое не работает вообще, вы можете попробовать другую утилиту командной строки или надежное решение, такое как: «LaTeX»: https://www.latex-project.org/

1

Почему бы не изменить lib?

Я использовал wkhtmltopdf, но нашел внутренний мир с TCPDF

Я напечатал HTML-страницу, делая это

// set font
$pdf->SetFont('itclegacysansltmedium', '', 12);
// add a page
$pdf->AddPage();

// set some text to print
ob_start();
include('view.php');
$html = ob_get_clean();
$pdf->writeHTML($html, true, false, true, false, '');
1
По вопросам рекламы [email protected]