將PDF文檔的一部分渲染爲圖像文件需要哪些庫,擴展等?如何將PDF文檔轉換爲PHP中的預覽圖像?
我發現的大多數PHP PDF庫都是以創建PDF文檔爲中心的,但是有沒有一種簡單的方法將文檔呈現爲適合網頁使用的圖像格式?
我們的環境是LAMP堆棧。
將PDF文檔的一部分渲染爲圖像文件需要哪些庫,擴展等?如何將PDF文檔轉換爲PHP中的預覽圖像?
我發現的大多數PHP PDF庫都是以創建PDF文檔爲中心的,但是有沒有一種簡單的方法將文檔呈現爲適合網頁使用的圖像格式?
我們的環境是LAMP堆棧。
<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
的[0]
意味着page 1
。
是的,它的工作原理。你也可以這樣做:$ im-> setResolution(300,300),例如以你想要的分辨率渲染你的pdf。 – 2009-01-22 02:16:46
我還沒有嘗試過,但如果你使用的是谷歌文檔,不介意iFrame,這個建議可能會起作用(這也是一個wp插件)https://forrst.com/posts/PDF_thumbnails_with_Google_Docs-6G6 – 2012-09-05 01:27:24
但如何將ImageMagick和GhostScript包含在php文件中 – namratha 2013-11-29 06:41:47
您也可以使用
$im->getNumberImages();
然後,您可以創建可以使用循環,如所有頁面的縮圖頁數。
'file.pdf['.$x.']'
對於那些沒有任何原因的ImageMagick,GD函數也可以與GhostScript結合使用。使用exec()
運行ghostscript命令將PDF轉換爲JPG,然後使用imagecreatefromjpeg()
處理生成的文件。
運行的ghostscript命令:
exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')
要操作,創建一個新的佔位符圖像,$newimage = imagecreatetruecolor(...)
,並在當前圖像中帶來的。 $image = imagecreatefromjpeg('whatever.jpg')
,然後你可以使用imagecopyresampled()
改變大小,或任意數量的其他內置,非imagemagick
命令
如果你正在加載從BLOB PDF的你這是怎麼得到的第一個頁面,而不是最後一頁:
$im->readimageblob($blob);
$im->setiteratorindex(0);
我安裝完了!它的工作!
你可能會在windows上做基地install imagemagick。
在php (local)
使用呼叫exec(<command line>)
例如:
<?php
$pdf = "filename.pdf";
$info = pathinfo($pdf);
$file_name = basename($pdf,'.'.$info['extension']);
echo $file_name;
$pdf = "filename.pdf[0]";
exec("convert $pdf convert-img/$file_name.jpg");
?>
此外,你可能會使用class imagick
在PHP Imagick class
感謝所有幫助過我!
這是一個簡單的課,我已經寫了幾個項目使用。它只是包裝imagick
並處理每個頁面寫入磁盤。如果有人仍然在尋找一個簡單的方法來做到這一點,this link可能會有所幫助。
你也可以嘗試執行imagemagick附帶的'convert'工具。
exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
使用php擴展Imagick。 要控制光柵輸出圖像所需的大小,使用setResolution function
<?php
$im = new Imagick();
$im->setResolution(300, 300); //set the resolution of the resulting jpg
$im->readImage('file.pdf[0]'); //[0] for the first page
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
(在保羅Bergantino他的回答和路易斯Melgratti他的評論擴展。你需要在載入圖像之前設置的分辨率。)
我的PDFlib筆者這是一個GhostScript包裝爲PHP,利用使用這個庫的是,它已經測試,它不需要ImageMagic
始終GhostScript
命令比快,當涉及到PDF格式,所以你要麼去一個GhostScript的包裝或純GhostScript的命令
$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();
我希望能夠做到這一點,有一個文件有`.jpg`擴展。我試過.htaccess的AddHandler方法,但它不起作用。 – Keyslinger 2016-05-18 20:11:44