将pdf缩放为A4 pdf,比率 - 宽度与边和&中心

时间:2018-01-23 22:12:42

标签: php pdf imagemagick imagick

我有一个使用图像创建的PDF(因此它具有图像的原始尺寸)

现在,我正在尝试按比例缩放它以适合A4 pdf(宽度接触侧面并垂直居中)。

这是我尝试过的代码:

    $imagick = new \Imagick();
    $imagick->setResolution(576,576);
    $imagick->readImage($path);
    $imagick->resizeImage(2480,3508,\Imagick::FILTER_CUBIC,1);
    $imagick->setCompressionQuality(80);
    $imagick->setImageFormat('pdf');
    $imagick->writeImage($path);

但它会影响整个页面的图像比率(100%宽度和100%高度)。

例如,原始图像717x558: enter image description here

导出的图片,

enter image description here

然而,我想要实现的是:

enter image description here

enter image description here

**更新**

$imagick = new \Imagick();
$imagick->readImage($path);
$imagick->resizeImage(595,842,\Imagick::FILTER_CUBIC,1);
$imagick->setBackgroundColor(new ImagickPixel('white')); 
$imagick->setGravity ( Imagick::GRAVITY_CENTER );
$imagick->extentImage ( 595 , 843 , 0 , 0 );
$imagick->setImageFormat('pdf');
$imagick->writeImage($path);

使用它,这是输出(它的整页但丢失了比率):

enter image description here

2 个答案:

答案 0 :(得分:0)

您只提供了PNG图像,而不是PDF。但这应该有助于使用Imagemagick命令行。对不起,我不知道Imagick,但你应该能够找出相应的命令。请注意,A4尺寸为595x842像素。

enter image description here

convert source.png -background white -resize 595x842 -gravity center -extent 595x842 -bordercolor red -border 1 result.png

请注意,您可以删除-bordercolor red -border 1,因为我添加了一个红色边框,以显示白色背景的输出大小。

enter image description here

如果使用PDF输入,您可以尝试相同或如果质量不佳,您可以尝试增加密度,例如

convert -density 300 source.pdf -background white -resize 595x842 -gravity center -extent 595x842 result.png

答案 1 :(得分:0)

这在Imagemagick中似乎对我有用。

convert birds.pdf -background white -resize 595x842 -gravity center -extent 595x842 result.pdf


您可以在Imagick中尝试以下操作,但我不是专家。

$imagick = new \Imagick();
$imagick->readImage($path);
$imagick->resizeImage(595,842,\Imagick::FILTER_CUBIC,1);
$imagick->setBackgroundColor(new ImagickPixel('white')); 
$imagick->setGravity ( Imagick::GRAVITY_CENTER );
$imagick->extentImage ( 595 , 843 , 0 , 0 );
$imagick->setImageFormat('pdf');
$imagick->writeImage($path);