MPDF文档和图像DPI问题


MPDF document and Image DPI problems

背景:我正在尝试使用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中有一个背景图像,但后来你遇到了这个错误,所以这不是我第一次推荐