2009-02-13 62 views
5

目前我可以創建從Imagick圖像PDF文件使用此功能創建兩個PDF頁面與Imagick

$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]"); 

回答

13

我知道這是很久以前的事了,但是當我試圖做同樣的事情時,這個結果出現了。以下是您如何在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!'); 
} 
1

這工作正常?

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

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

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

這將返回分段錯誤。很好,但嘗試:S – 2009-02-13 13:17:21

+0

convert file1.pdf file2.pdf all.pdf也不起作用 – 2009-02-13 13:17:55

0

我不知道PHP或本Imagick庫,但如果調用外部程序是可以接受的,我可以推薦節目pdfjoin合併PDF文件。

它確實對pdflatex有依賴性,所以如果這是你打算在服務器上運行的東西,你可能不得不安裝額外的latex東西,但pdfjoin的最終結果是非常好的,所以我認爲這將是值得的它。

1

CAM::PDF是一個用於低級別PDF操作的純Perl解決方案。您可以使用appendpdf.pl命令行工具,也可以通過編程方式執行此操作:

使用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 +藝術雙授權)。

1

接受的答案是不工作對我來說,作爲一個結果,它總是產生一個頁面的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); 
相關問題