Мне нужно сгенерировать счета с помощью mPDF, и у всех них будет заголовок, нижний колонтитул и одно и то же фоновое изображение, которое должно охватывать всю страницу.
Я видел другие решения в сетино ни одна из них не сработала для меня.
Это несколько попыток, все они приводят к сбою (изображение не отображается, ошибка 50 * или изображение, покрывающее часть содержимого при использовании изображений):
1- Использование внешнего файла CSS и внедрение его в качестве содержимого CSS
$pdf = new mPDF('es', 'A4', 0, '', 5, 5, 0, 0, 0, 0, 'P');
$pdf->useSubstitutions=false;
$pdf->setAutoTopMargin = 'stretch';
$pdf->SetDisplayMode('fullpage');
$css = file_get_contents('./styles.css');
$cabecera = file_get_contents('./header.html');
$cuerpo = file_get_contents('./body.html');
$pie = file_get_contents('./footer.html');
$pdf->SetHTMLHeader($cabecera);
$pdf->SetHTMLFooter($pie);
$pdf->WriteHTML($css, 1);
$pdf->WriteHTML($cuerpo, 2);
$pdf->Output();
И файла styles.css:
body {
background-image: url('background_300dpi.png') ;
}
Это приводит к ошибке времени ожидания.Если я использую фоновое изображение с низким разрешением, это работает, но это нарушает мой макет.
2 - Попытка установить фоновое изображение с помощью SetDefaultBodyCSS
$pdf = new mPDF('es', 'A4', 0, '', 5, 5, 0, 0, 0, 0, 'P');
$pdf->useSubstitutions=false;
$pdf->setAutoTopMargin = 'stretch';
$pdf->SetDisplayMode('fullpage');
$cabecera = file_get_contents('./cabecera.html');
$cuerpo = file_get_contents('./cuerpo.html');
$pie = file_get_contents('./pie.html');
$pdf->SetHTMLHeader($cabecera);
$pdf->SetHTMLFooter($pie);
$pdf->SetDefaultBodyCSS('background', "url('background_300dpi.png')");
$pdf->SetDefaultBodyCSS('background-image-resize', 6);
$pdf->WriteHTML($cuerpo, 2);
$pdf->Output();
Timeoutошибка тоже.Это работает, если я использую изображение с низким разрешением.Но это не очень хорошее решение для печати, потому что на бланке есть маленькие буквы, которые включены в фоновое изображение.
3 - Попытка использовать изображения (фоновое изображение разбивается на верхнюю частьфирменный бланк и нижнее изображение) вместо единственного фонового изображения и установки для полей ограничения значения false
$pdf = new mPDF('es', 'A4', 0, '', 5, 5, 0, 0, 0, 0, 'P');
$pdf->useSubstitutions=false;
$pdf->setAutoTopMargin = 'stretch';
$pdf->SetDisplayMode('fullpage');
$cabecera = file_get_contents('./cabecera.html');
$cuerpo = file_get_contents('./cuerpo.html');
$pie = file_get_contents('./pie.html');
$pdf->SetHTMLHeader($cabecera);
$pdf->SetHTMLFooter($pie);
$pdf->WriteHTML($cuerpo, 2);
$pdf->Image('miramar/background_top.png', 0, 0, 210, 28.5, 'png', '', true, false);
$pdf->Image('miramar/background_bottom.png', 0, 259, 210, 38, 'png', '', true, false, false, false);
$pdf->Output();
В этом случае тайм-аут не установлен, но изображение нижнего колонтитула делает некоторый контент включенным в нижний колонтитулушел.
У кого-нибудь есть идеи, как этого добиться?
Другой вопрос: поддерживает ли mPDF векторных изображений для фона?Я мог бы использовать фоновое изображение в качестве файла SVG.