背景:我正在尝试使用mPDF库以300dpi渲染一张名片。文档有一个图像背景,它应该填充画布,然后覆盖各种文本元素。
尺寸:PDF文档设置为91毫米x 61毫米,为横向格式。
$pdf = new mPDF('utf-8', array(91,61), 0, '', 0, 0, 0, 0, 0, 'L');
我在配置中设置了如下的分辨率;
$this->dpi = 300;
$this->img_dpi = 300
我已经在photoshop中创建了一个图像,也以300dpi的尺寸与卡片相同(91mm x 61mm)。
我尝试使用如下标记将图像添加到div内的文档中:
$html .= '<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;width:100%; height:100%"><img style="width:100%; height:100%" src="/assets/images/bg.jpg"></div>';
当显示PDF文档时,图像似乎比文档小,即没有按比例缩放以适应页面。事实上,图像在X和Y方向上似乎只填充了画布的大约55-60%。
当我保存PDF文档并在Adobe阅读器中查看其属性时,确认其大小为91x61mm。
有没有人遇到过类似的问题,或者了解这里发生了什么?
我真的需要能够有一个300dpi的图像,这将完全填满页面。
我期待你的建议。
问候
James
您拥有的css样式与"大小约束"部分中手册建议的样式不完全匹配
在我的例子中,我在photoshop中有一个11x8.5英寸150dpi的横向图像,它在mpdf中作为页面大小匹配,我将css分离以保持的清洁
为了以防万一,我指定了任何其他mpdf值或css设置
所以,尝试一些更像这段代码的东西,对我来说是有效的,用css&根据需要调整dpi/页面大小:
$html = '
<html>
<head>
<style>
body {
position: relative;
text-align: center;
overflow: hidden;
page-break-inside: avoid;
}
#bg {
position: absolute;
left:0;
right: 0;
top: 0;
bottom: 0;
}
#bg img {
width: 100%;
height: 100%;
margin: 0;
}
#text1 {
top: 20%;
font-size: 20pt;
position: absolute;
width: 100%;
color: #fff;
}
#text2 {
top: 60%;
font-size: 16pt;
position: absolute;
width: 100%;
color: #ddd;
}
</style>
</head>
<body>
<div id="bg">
<img src="bg.png" />
</div>
<div id="text1">John Smith</div>
<div id="text2">555-5555</div>
</body>
</html>';
$mpdf = new mPDF('UTF8','Letter-L',14,'Arial',0,0,0,0,0,0);
$mpdf->dpi = 150;
$mpdf->img_dpi = 150;
$mpdf->WriteHTML($html);
$mpdf->SetDisplayMode('fullpage');
$mpdf->Output();
当然,有一种更简单的方法可以制作背景。。。告诉body或html在css中有一个背景图像,但后来你遇到了这个错误,所以这不是我第一次推荐