imagick - 设置输出pdf的纸张大小

Posted

技术标签:

【中文标题】imagick - 设置输出pdf的纸张大小【英文标题】:Imagick - set paper size of output pdf 【发布时间】:2022-01-16 20:56:49 【问题描述】:

我有一个 php 辅助函数,它接受 base64 png 并输出一个 pdf 文件:

    public static function base64PngToPdf($b64, $filePath) 
        $imagick = new Imagick();
        $imagick->readImageBlob(base64_decode($b64));

        // Create PDF File
        $pdfFile = new Imagick();
        $pdfFile->setFormat('pdf');
        // Add image to pdf
        $pdfFile->addImage($imagick->getImage());

        file_put_contents($filePath, $pdfFile->getImagesBlob());
        return $filePath;
    

我的问题是,我拥有的 png 是 800w x 1200h 像素。上面的代码输出一个 211 x 317mm 的标签。我想要一个缩小到 101 毫米宽或 152 毫米高的标签(最好不缩放像素本身,只改变物理尺寸)。

我做了一些谷歌搜索,发现 imagick 有一个密度参数,但我不能 100% 确定在这种情况下是否是我想要的,而且我的库没有 ->setDensity 函数。

【问题讨论】:

【参考方案1】:

我找到了一种相关的解决方案。我可以使用$pdfFile->setResolution($resolution[0], $resolution[1]);,在setResolution 中我可以设置例如72的ppi。

【讨论】:

以上是关于imagick - 设置输出pdf的纸张大小的主要内容,如果未能解决你的问题,请参考以下文章

GHOSTSCRIPT - PS 到 PDF 转换纸张大小

如何在arcmap里设置地图输出的纸张大小

windows7下Wamp安装php扩展imagick(转)

从BIRT报表文件中获取页面设置信息(页边距纸张大小输出方向)的方法

使用 Imagick 转换透明 PDF 文件

各种误解解释纸张打印机操作系统等误解相关