如何将带边框的内容从html转换为pdf时居中

  • 本文关键字:转换 html pdf 边框 html css pdf
  • 更新时间 :
  • 英文 :


我有一个html页面,其内容位于7px的边框内,该边框必须是div、父div和子div,我正试图将其转换为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;
}```

laravel-dompdf是一个很好的库,但在处理css时它不是很好,所以有一个wkhtmltopdf,它是一个使用WebKit渲染引擎的CLI工具。有一个名为laravel-snappy的PHP库,它创建了一个wkhtmltopdf的包装器,并将html转换为pdf/image,几乎适用于所有操作系统。有关手册文档的完整说明和链接,请访问[链接]https://github.com/barryvdh/laravel-snappy

如果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>

最新更新