【问题标题】:imagick , page break in pdf in php imagickimagick , php imagick 中 pdf 的分页符
【发布时间】:2014-07-07 09:23:05
【问题描述】:

我正在使用 php imagick 创建图像,然后转换为 pdf。使用 php imagick。我编码了这个:

    $image = new Imagick();
    $height = 800; //height of the page;
    $image->newImage(794, $height, "#f5f5f5");
    $image->setImageFormat("jpg"); 
    $card = new Imagick('card.jpg'); ; //get single card 

    $l_align = 190; //left alignment
    for($i=0; $i < 4; $i++)  //for creating multiple cards on a page
    {
        $image->compositeImage($card, Imagick::COMPOSITE_DEFAULT,10, ($l_align*$i)+10);
        $image->compositeImage($card, Imagick::COMPOSITE_DEFAULT, 390, ($l_align*$i)+10);
    }
    $image->setResolution(72, 72);
    $image->resetIterator();
    $combined = $image->appendImages(true);


    $image->setImageFormat("pdf");
    $combined->writeImages( 'card.pdf', true );
    header("Content-Type: application/pdf");
    header('Content-Disposition: attachment; filename="card.pdf"');

    echo file_get_contents('card.pdf');

并得到类似的东西 以pdf格式。现在我想在 pdf 中每打印 6 张卡片后分页。我正在使用 imagick 。请帮我。提前致谢。

【问题讨论】:

    标签: php pdf imagick


    【解决方案1】:

    您在将图像添加为新页面时使用了错误的功能。您应该使用 addImage 将新图像添加为单独的页面,而不是 append 将它们添加到当前图像的底部。

    这个工作的一个例子是:

    $combined = null;
    
    $images = [
        '../../../images/Source1.jpg',
        '../../../images/Source2.png',
    ];
    
    foreach ($images as $image) {
        if ($combined == null) {
            $combined = new Imagick(realpath($image));   
        }
        else {
            $card = new Imagick(realpath($image)); ; //get single card 
            $combined->addImage($card);
        }
    }
    
    $combined->setImageFormat("pdf");
    $combined->writeImages( './card.pdf', true );
    

    顺便说一句,您的代码示例中发生了一些奇怪的事情 - 您甚至只是尝试添加一个图像,而“resetIterator”在其中做什么?

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 2015-10-12
      • 2013-04-04
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多