【问题标题】:Creating two pdf pages with Imagick使用 Imagick 创建两个 pdf 页面
【发布时间】:2010-10-07 10:39:48
【问题描述】:

目前我可以使用此功能从 Imagick 中的图像创建 PDF 文件

$im->setImageFormat("pdf");
$im->writeImage("file.pdf");

并且可以像这样使用 imagick 获取多个页面

$im = new imagick("file.pdf[0]");
$im2 = new imagick("file.pdf[1]");

但是可以将两个图像对象保存到两个页面吗? (我在想的例子,不可能这样)

$im->setImageFormat("pdf");
$im->writeImage("file.pdf[0]");

$im2->setImageFormat("pdf");
$im2->writeImage("file.pdf[1]");

【问题讨论】:

    标签: php pdf imagick


    【解决方案1】:

    我知道这早就过期了,但是当我试图做同样的事情时,这个结果就出现了。以下是在 PHP 和 Imagick 中创建多页 PDF 文件的方法。

        $images = array(
        'page_1.png',
        'page_2.png'
    );
    $pdf = new Imagick($images);
    $pdf->setImageFormat('pdf');
    if (!$pdf->writeImages('combined.pdf', true)) {
        die('Could not write!');
    }
    

    【讨论】:

    • 有没有办法从图像 blob(而不是图像文件)做到这一点?
    • 这将使用数组中的最后一个图像创建一个单页 pdf
    【解决方案2】:

    接受的答案对我不起作用,因此,它总是生成一页 pdf(来自构造函数的最后一张图片),为了完成这项工作,我必须先获取文件描述符,如下所示:

    $images = array(
      'img1.png', 'img2.png'
    ); 
    $fp = fopen('combined.pdf', 'w');
    $pdf = new Imagick($images);
    $pdf->resetiterator();
    $pdf->setimageformat('pdf');
    $pdf->writeimagesfile($fp);
    fclose($fp);
    

    【讨论】:

      【解决方案3】:

      这行得通吗?

      $im->setImageFormat("pdf");
      $im->writeImage("file1.pdf");
      
      $im2->setImageFormat("pdf");
      $im2->writeImage("file2.pdf");
      
      exec("convert file*.pdf all.pdf");
      

      【讨论】:

      • 这会返回一个分段错误。不错的尝试:S
      【解决方案4】:

      CAM::PDF 是一个纯 Perl 解决方案,用于像这样的低级 PDF 操作。您可以使用appendpdf.pl 命令行工具,也可以像这样以编程方式进行:

      使用 CAM::PDF; 我的 $doc1 = CAM::PDF->new('file1.pdf'); 我的 $doc2 = CAM::PDF->new('file2.pdf'); $doc1->appendPDF($doc2); $doc1->cleanoutput('out.pdf');

      如果您能弄清楚如何让 ImageMagick 写入字符串而不是文件(我不是 ImageMagick 专家...),那么您可以通过将其全部保存在 Perl 中来节省一些性能开销。

      (我是 CAM::PDF 的作者。它是免费软件:GPL+Artistic 双许可)。

      【讨论】:

        【解决方案5】:

        我不知道 php 或这个 Imagick 库,但如果可以调用外部程序,我可以推荐程序 pdfjoin 来合并 pdf 文件。

        它确实依赖于 pdflatex,所以如果这是你打算在服务器上运行的东西,你可能需要安装额外的乳胶东西,但 pdfjoin 的最终结果非常好,所以我认为这是值得的.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-26
          • 2014-01-03
          • 2012-09-06
          • 1970-01-01
          • 2013-09-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多