我花了太多时间在这上面,我无法找到一个好的21世纪解决方案。
我只需要生成带有背景图像的PDF名片,但MPDF不是很有帮助。
默认我有:
@page{
sheet-size: 90mm 55mm;
margin: 0;
}
我试图:
doesn't work
doesn't work
div
与背景图片img
标记,使用src
属性。在最后一个选项中,我有一个非常奇怪的事情。它显示了整个图像,但在页面中的一个小矩形中,但甚至没有达到全高。
有没有人有想法,如何简单地将图片用作页面背景?
答案 0 :(得分:29)
mPDF具有背景图像的自定义css属性:background-image-resize,自定义值为0-6:
所以你可能需要: body {background-image:url(something.png);背景图像调整大小:6}
答案 1 :(得分:2)
如果其他人需要mPDF中的背景覆盖,并且没有帮助background-image-resize,它会在被浮动元素包裹时立即中断。由于css顺应性的消除,mPdf中通常需要浮动元素。这是一个更加强大的圆圈图像解决方案,模拟了bg-cover。
获取图片方向
function getImageOrientation(string $imgPath){
list($imgWidth,$imgHeight) = getimagesize($imgPath);
$aspectRatio = $imgWidth / $imgHeight;
if($aspectRatio >= 1){
return array('landscape',$imgWidth,$imgHeight,$aspectRatio);
}else{
return array('portrait',$imgWidth,$imgHeight,$aspectRatio);
}
}
设置自己的属性以模拟背景遮挡
public static function returnCircledImage($imgPath, int $size){
list($orientation,$imgWidth,$imgHeight, $aspectRatio) = getImageOrientation($imgPath);
if($orientation == 'landscape'){
$backgroundSize = 'auto 100%'; //fit height, keep aspect ratio
$calculatedWidth = floor($size * $aspectRatio);
$calculatedHeight = $size;
//position center manually
$dx = -floor(($calculatedWidth - $calculatedHeight) / 2);
$dy = 0;
}else{
$backgroundSize = '100% auto'; //fit width, keep aspect ratio
$calculatedWidth = $size;
$calculatedHeight = floor($size * $aspectRatio);
//position center manually
$dx = 0;
$dy = -floor(($calculatedHeight - $calculatedWidth) / 2);
}
return sprintf('
<div class="%s" style="background-size: %s; background-position:%spx %spx; overflow:hidden; border-radius:100px; width:%spx; height:%spx; background-image: url(%s)"></div>
',
$backgroundSize,
$dx,
$dy,
$size,
$size,
$imgPath
);
}
答案 2 :(得分:2)
使用background-image-resolution
属性的工作示例:
<body style="background-image: url('/absolute/path/to/image.jpg');
background-position: top left;
background-repeat: no-repeat;
background-image-resize: 4;
background-image-resolution: from-image;">
在发票上使用300DPI JPEG图片时效果很好。
如果您在CSS 中使用
style="..."
标记和body{...}
样式,则mpdf将忽略style="..."
标记及其内容,因此图片将会没出现!