MPDF 文档和图像 DPI 问题

Posted

技术标签:

【中文标题】MPDF 文档和图像 DPI 问题【英文标题】:MPDF document and Image DPI problems 【发布时间】:2014-10-10 10:06:31 【问题描述】:

背景: 我正在尝试使用 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,尺寸与卡片相同(91 毫米 x 61 毫米)。

我尝试使用如下标记将图像添加到 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 文档并在 Adob​​e Reader 中查看它的属性时,它被确认为 91x61mm 的正确尺寸。

有没有人遇到过类似的问题或了解这里发生了什么?

我真的需要能够有一个 300dpi 的图像,它会完全填满页面。

期待您的建议。

问候

詹姆斯

【问题讨论】:

【参考方案1】:

您拥有的 css 样式与手册中“大小约束”部分中的 recommendation 中的样式不完全匹配

在我的例子中,我在 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 中拥有背景图片,但随后您遇到 this bug 所以这不是我的第一个建议

【讨论】:

以上是关于MPDF 文档和图像 DPI 问题的主要内容,如果未能解决你的问题,请参考以下文章

mPDF 文档自动高度(POS 打印机)

用php修改现有的pdf文档

如何将数字签名添加到pdf

Bangla unicode 字体未在 mpdf 中显示

mPDF 库和浮动图像

MPDF如何使用alpha透明?