【问题标题】:Dompdf max-height max-width supported or not?是否支持 Dompdf max-height max-width?
【发布时间】:2015-01-22 15:12:58
【问题描述】:

我正在尝试将图像限制为最大的特定高度和宽度。所以我很自然地使用最大高度和最大宽度,这样图像在达到最大值时可以保持它们的纵横比。在 html 中工作,这是我的代码 sn-ps

'<table class="seperate" id="images-table">'.   
        '<tbody>'.
          '<tr>'.
            '<td>&nbsp;</td>'.
            '<td class="uscs-logo" ><img src="http://localhost/dompdfTest/dompdf/uscompliancesystems_logo.png" /></td>'.

            '<td class="signature-logo" ><img src="http://localhost/dompdfTest/dompdf/USCSDefaultSignature.jpg" /></td>'.
            '<td>&nbsp;</td>'.
          '</tr>'.
        '</tbody>'.
    '</table>'.

还有css:

table#images-table .uscs-logo {
  height: 100px;
  text-align: left;

}

table#images-table .uscs-logo img{
    max-height:200px;
    max-width: 200px;
}
table#images-table .signature {
  height: 125px;
  text-align: right;
  width: 300px;
  height: auto;
  max-height:200px;
  max-width: 200px;
}

但是我在 pdf 中得到的是一个两页的 pdf,页面上没有图像,因为它们是全尺寸的。如果我在 html 中渲染到页面,它会很好。

所以我的问题是,img 标签上的 dompdf 真的支持 max-width 和 max-height 吗?

【问题讨论】:

  • 仅供参考 PHPpdf 似乎支持这个:github.com/psliwa/PHPPdf#attributes
  • 您应该能够在当前版本的 dompdf 中指定图像的最大宽度/高度,但不能指定其他元素。你用的是哪个版本?
  • toto21 - 我们不打算使用不同的 pdf 生成器。 BrianS - 几周前我下载了最新版本,5.5.3
  • 最新版本的 dompdf?应该是 0.6.1。

标签: php css dompdf


【解决方案1】:

使用 GD PHP 扩展动态调整图像大小并不难。就时间成本而言,如果您不这样做,浏览器就必须进行扩展。

$filename ='/home/user/public_html/images/image.jpg';
$image = @imagecreatefromjpeg();
$originalWidth  = imagesx($image);
$originalHeight = imagesy($image);
$scale      = min($desiredWidth/$originalWidth, $desiredHeight/$originalHeight);
$newWidth  = ceil($scale*$originalWidth);
$newHeight = ceil($scale*$originalHeight);
$newPic = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
if (imagejpeg($newPic,$tmpfile)){rename($tmpfile,$filename);}

并恢复内存清理。

imagedestroy($image);
imagedestroy($newPic);

【讨论】:

  • 我发帖主要是为了获取有关 DomPdf 的更多信息,并了解为什么 max-width 和 max-height 不起作用。但这是一个有趣的解决方案。
  • 让浏览器进行缩放被认为是一种不好的做法。为什么开发人员可能没有预料到必须缩放图像,因为他们认为用户应该使用适当缩放。但无论出于何种原因,它都不起作用,您需要某种解决方法。我的解决方案是在生产环境中经常需要缩放图像。如果这是一次性交易,那么使用独立的图像实用程序会更容易。对于这种情况,我发现免费的 Fast Stone Image Viewer 是一个非常强大的图像工具。
  • 我们首先使用 php 调整图像大小。仍然想回答为什么文档说支持 max-width 和 max-height,但在 DomPdf 的 pdf 中不起作用。
  • max- 可能受支持,但可能不是 100% 支持图像。可能如果您将图像制作为 div 并以图像作为背景。 domPDF 不能容忍 HTML 错误。您的 &lt;img&gt; 标签没有指定高度或指定。这对渲染来说是个大问题。渲染的第一次绘制使用粗略布局的宽度和高度。在呈现 HTML 和 CSS 之后,将检索图像。检索图像尺寸并且必须调整布局。不是理想的情况。您应该在 domPDF 论坛中提出问题。
  • 关于调整大小的图像需要注意的一点是,将较大的图像放置在 PDF 的较小空间中会导致图像的相对 DPI 更高,因此可能会提高打印质量。或者至少应该。最新版本的 dompdf 进行了大量的图像处理,这可能会导致一些质量损失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多