#html #css #pdf
Вопрос:
У меня есть html-страница с содержимым внутри рамки с 7 пикселей, которая должна быть разделена на родительский и дочерний разделы, я пытаюсь преобразовать ее в pdf, но когда я это делаю, страница выравнивается больше вправо, оставляя огромное пространство слева. Но когда одна и та же страница просматривается в формате html, она правильно центрирована. Th
Чего мне нужно добиться, так это центрировать границу и ее содержимое в файле PDF. Родительский div имеет следующий css
``` #wrapper{
width: 740px;
/*margin: 2px auto;*/
margin: auto;
/*border: solid red;*/
height: 1000px;
page-break-after: avoid;
}```
и дочерний div имеет следующий css
```#maincontent{
border: solid 7px black;
/*margin: 2px auto 100px;*/
/*margin: 2px auto;*/
margin: auto;
height: 98.2%;
/*width: 98%;*/
width: 720px;
display: block;
page-break-before: avoid;
break-after: avoid;
}```
Комментарии:
1. Вы создаете pdf-файл с помощью функций печати браузеров?
Ответ №1:
Laravel-dompdf-хорошая библиотека, но она не очень хороша при работе с css, поэтому существует wkhtmltopdf, который является инструментом CLI, использующим механизм рендеринга WebKit. Существует библиотека PHP под названием laravel-snappy, которая создала оболочку для wkhtmltopdf и преобразует html в pdf/изображение, доступное почти для всех операционных систем. Полное объяснение и ссылка на ручную документацию доступны по адресу [ссылка]https://github.com/barryvdh/laravel-snappy
Комментарии:
1. спасибо вам за информацию, которую я сам только начал использовать в Laravel, и, честно говоря, поскольку в pdf не так много информации, это мне поможет. мой первоначальный ответ был основан на CodeIgniter
Ответ №2:
С MPDF не стилизуйте внутри вашей страницы печати HTML, это не будет работать. Добавьте стиль в свой контроллер или .CSS или добавьте стиль над вашим HTML, а не внутри. Пожалуйста, обратите внимание, что стиль строки очень важен, вам нужно добавить его в свой стиль. Также обратите внимание, что начальная загрузка не всех версий начальной загрузки удобна для MPDF. Версия 3.4.1 работает на меня.
<?php
$mpdf = new MpdfMpdf();
$stylesheet = file_get_contents('https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css');
$mpdf->WriteHTML($stylesheet, MpdfHTMLParserMode::HEADER_CSS);
$stylesheet = '<style>
.row {
margin: 10px 0px 0px 0px !important;
padding: 0px !important;
}
.wrapper{
width: 740px;
/*margin: 2px auto;*/
margin: auto;
/*border: solid red;*/
height: 1000px;
page-break-after: avoid;
}
.maincontent{
border: solid 7px black;
/*margin: 2px auto 100px;*/
/*margin: 2px auto;*/
margin: auto;
height: 98.2%;
/*width: 98%;*/
width: 720px;
display: block;
page-break-before: avoid;
break-after: avoid;
}
</style>';
$mpdf->WriteHTML($stylesheet, MpdfHTMLParserMode::HEADER_CSS);
$mpdf->WriteHTML(view('/print/print_jobcard', $data), MpdfHTMLParserMode::HTML_BODY);
$mpdf->Output($data['jobcard'][0]['job_number'].'.pdf', 'D');
?>
<!DOCTYPE html>
<html>
<body>
<div >
<br style="height: 15mm; margin: 0;">
<div class="row">
<div class="col-xs-8 col-sm-8"><h4>Date</h4></div>
<div class="col-sm-8"><h4 style= "text-align:center"> Lorem Ipson</h4></div>
</div>
<br style="height: 30mm; margin: 0;">
<div class="row">
<div class="col-xs-4 col-sm-4"><h4>Name</h4></div>
<div class="col-xs-4 col-sm-4"><h4>Email</h4></div>
<div class="col-sm-4"><h4>Tel</h4></div>
</div>
</div>
</body>
</html>
Комментарии:
1. Я использую библиотеку DomPDF
2. основы останутся прежними, используйте внешний стиль. DomPDF поддерживает больше CSS, но, если я правильно понимаю, он работает медленнее, но конечным результатом будет pdf. если вы можете дать мне свой код, я попытаюсь реализовать свой код для тестирования.
3. скопируйте мой <стиль> и внедрите в свой код и посмотрите, поможет ли это
4. Большое вам спасибо, я вам очень признательна. Но, я нашел очень полезную ссылку, которая помогла мне много,кажется, что Laravel-dompdf оболочка имеет некоторые проблемы при преобразовании HTML в PDF, есть еще одна обертка точно так же, как barryvdh/фреймворк Laravel-dompdf , но это называется фреймворк Laravel-живо barryvdh/фреймворк Laravel-живо , я использовал эту оболочку и работал как шарм
5. Я нашел выпущенные и предложенные решения @Corez64 по адресу [ссылка] laracasts.com/discuss/channels/general-discussion/…