2016-03-16 4 views
1

В настоящее время я работаю над пакетом генератора символов symfony 2, который позволяет создавать HTML и PDF-документы (например, счет-фактуру).WhtmlToPdf не применяет шрифты к PDF

Когда я создаю свой документ в браузере как HTML-страницу, все в порядке, но когда я создаю свой файл PDF, у меня нет шрифтов, применяемых к моему документу.

Я использую те же шаблоны для обоих случаев. Вот мой PDF метод генерации:

private function generatePdfWithoutMerge($html) 
{ 
    $pdfService = $this->get('knp_snappy.pdf'); 

    return $pdfService->getOutputFromHtml($html); 
} 

переменный $ HTML генерируется из тонированного шаблона веточки и, как было сказано ранее, у меня нет никаких проблем, если я его отображать HTML в браузере.

МЕНЬШЕ Файл:

@base-url: 'url-to-bucket'; 
@dark-grey: #555559; 
@dark-pink: #970047; 

@font-face { 
    font-family: paralucent_demi_boldregular; 
    src: url('@{base-url}/paradb__-webfont.eot'); 
    src: url('@{base-url}/paradb__-webfont.eot?#iefix') format('embedded-opentype'), 
    url('@{base-url}/paradb__-webfont.woff') format('woff'), 
    url('@{base-url}/paradb__-webfont.ttf') format('truetype'), 
    url('@{base-url}/paradb__-webfont.svg#paralucent_demi_boldregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

@font-face { 
    font-family: paralucent_lightregular; 
    src: url('@{base-url}/paral___-webfont.eot'); 
    src: url('@{base-url}/paral___-webfont.eot?#iefix') format('embedded-opentype'), 
    url('@{base-url}/paral___-webfont.woff') format('woff'), 
    url('@{base-url}/paral___-webfont.ttf') format('truetype'), 
    url('@{base-url}/paral___-webfont.svg#paralucent_lightregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

@font-face { 
    font-family: paralucent_thinregular; 
    src: url('@{base-url}/parat___-webfont.eot'); 
    src: url('@{base-url}/parat___-webfont.eot?#iefix') format('embedded-opentype'), 
    url('@{base-url}/parat___-webfont.woff') format('woff'), 
    url('@{base-url}/parat___-webfont.ttf') format('truetype'), 
    url('@{base-url}/parat___-webfont.svg#paralucent_thinregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

@font-face { 
    font-family: paralucent_mediumregular; 
    src: url('@{base-url}/param___-webfont.eot'); 
    src: url('@{base-url}/param___-webfont.eot?#iefix') format('embedded-opentype'), 
    url('@{base-url}/param___-webfont.woff') format('woff'), 
    url('@{base-url}/param___-webfont.ttf') format('truetype'), 
    url('@{base-url}/param___-webfont.svg#paralucent_mediumregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

body { 
    color: @dark-grey; 
    font-family: paralucent_lightregular, Helvetica, Arial, sans-serif; 
    font-size: 1.2em; 
    line-height: 0.9em; 
} 

.thin { 
    font-family: paralucent_thinregular, Helvetica, Arial, sans-serif; 
} 

.bold { 
    font-family: paralucent_mediumregular, Helvetica, Arial, sans-serif; 
} 

.demibold { 
    font-family: paralucent_demi_boldregular, Helvetica, Arial, sans-serif; 
} 

.price { 
    font-family: Arial, sans-serif; 
    font-size: 0.8em; 
} 

.separator_unbreak_wrapper { 

} 

.separator_unbreak { 
    page-break-inside: avoid !important; 
} 

.city_format { 
    font-size: 0.75em; 

} 

table tr th { 
    border-bottom: 1px solid @dark-pink; 
    font-weight: normal; 
    font-style: normal; 
} 
+0

Какие шрифты вы используете? –

+0

Мои шрифты .eot, .woff, .ttf и .svg файлы, размещенные на S3 ведро с CORS набор следующим образом: локальный GET < AllowedHeader> * Mouke

+0

Я не знаю эту библиотеку, но я был бы очень впечатлен, если бы он был достаточно умен, чтобы вставлять шрифты font-face, упомянутые в документе HTML ... возможно, им нужно добавлять вручную? Я действительно ничего не знаю об этом продукте. –

ответ

1

Благодаря DevDonkey комментария:

Я попытался иметь хорошую архитектуру файл с детьми шаблонов, простирающиеся от общего шаблона родительского и общего МЕНЬШЕ файла, но Wkhtmltopdf имеет некоторые проблемы с такой сложной архитектурой. Мне нужно было собрать все в одном файле HTML, чтобы он работал.

Большое спасибо за вашу помощь.

+0

Это не значит, что Wkhtmltopdf должен был интерпретировать LESS-файлы, правда? Он получил обычный CSS для анализа? –

+1

Нет, поскольку это шаблон твига с использованием assetic, вызов render() обрабатывает файл LESS в файл CSS и все файлы twig в файл HTML. Кстати, twig include/extends работает как шарм, поэтому вы можете создать файл twig с вами