使用 Imagick 创建两个 pdf 页面

发布于 2024-07-13 05:41:31 字数 468 浏览 6 评论 0原文

目前我可以使用此功能从 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]");

Currently i can create PDF files from images in Imagick with this function

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

And it's possible to fetch multiple pages with imagick like this

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

But is it possible to save two image objects to two pages?
(example of what i am thinking, its not possible like this)

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

时光瘦了 2024-07-20 05:41:31

我知道这已经过期很久了,但是当我尝试做同样的事情时出现了这个结果。 以下是如何在 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!');
}

I know this is long past due, but this result came up when I was trying to do the same thing. Here is how you create a multi-page PDF file in PHP and Imagick.

    $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!');
}
灼痛 2024-07-20 05:41:31

接受的答案对我不起作用,因此,它总是生成一页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);

Accepted answer wasn't working for me, as a result, it always generated one page pdf (last image from constructor), to make this work I had to get file descriptor first, like this:

$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);
影子的影子 2024-07-20 05:41:31

这管用吗?

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

$im2->setImageFormat("pdf");
$im2->writeImage("file2.pdf");

exec("convert file*.pdf all.pdf");

Is this working?

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

$im2->setImageFormat("pdf");
$im2->writeImage("file2.pdf");

exec("convert file*.pdf all.pdf");
×纯※雪 2024-07-20 05:41:31

CAM::PDF 是一个纯 Perl 解决方案,用于低级 PDF 操作,例如这。 您可以使用 appendpdf.pl 命令-line 工具,或者像这样以编程方式执行:

use CAM::PDF;
my $doc1 = CAM::PDF->new('file1.pdf');
my $doc2 = CAM::PDF->new('file2.pdf');
$doc1->appendPDF($doc2);
$doc1->cleanoutput('out.pdf');

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

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

CAM::PDF is a pure-Perl solution for low-level PDF manipulation like this. You can either use the appendpdf.pl command-line tool, or do it programmatically like this:

use CAM::PDF;
my $doc1 = CAM::PDF->new('file1.pdf');
my $doc2 = CAM::PDF->new('file2.pdf');
$doc1->appendPDF($doc2);
$doc1->cleanoutput('out.pdf');

If you can figure out how to make ImageMagick write to a string instead of to a file (I'm not an ImageMagick expert...) then you save some performance overhead by keeping it all in Perl.

(I'm the author of CAM::PDF. It's free software: GPL+Artistic dual-licensed).

我的痛♀有谁懂 2024-07-20 05:41:31

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

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

I do not know php or this Imagick library, but if calling an external program is acceptable I can recommend the program pdfjoin to merge pdf files.

It does have an dependency to pdflatex, so if this is something you intend to run on a server you might have to install extra latex stuff, but the end result from pdfjoin is very good, so I think it will be worth it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文