Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
ImageMagick mungkin sebuah pengalaman baru buat gw, cukup menarik karena dia bisa digunakan untuk banyak hal yang tidak bisa dilakukan oleh GDLib biasa. Sebut saja membuat thumbnail Photoshop file, dan banyak file lainnya yang tidak bisa juga dibuka atau dibaca oleh GDLib.
Kali ini gw mencoba menjelaskan bagaimana membuat thumbnail PDF dengan bantuan Imagemagick. Tetapi untuk membuat thumbnail ini, Imagemagick membutuhkan bantuan sebuah program lainnya, yaitu Ghostscript. Keduanya meruapakan freeware(untuk Imagemagick, mungkin bisa dilihat di posting gw sebelumnya).
Pertama-tama gw mendapatkan caranya dari sini. Tutorial di web tsb dibuat untuk Linux, tetapi gw mencobanya under Windows dan mendapatinya berhasil.
Intinya, untuk mengextract Thumbnail dari PDF:
Apabila terjadi error, kemungkinan Goshcript tidak bisa terakses. Coba pindahkan file “gswin32c.exe” ke root drive C di windows.
Lalu bagaimana dengan PHP, bagaimana kita bisa menggabungkannya dengan PHP supaya bisa jadi satu dalam sebuah aplikasi?
Simple, PHP punya beberapa function untuk mengakses commandline program atau menjalankan shell syntax. beberapa diantaranya yaitu “system,shell_exec,exec,popen,etc”.
Pertama gw mencobanya dengan menggunakan shell_exec. tetapi tidak bekerja di dalam Windows. Setelah beberapa lama mencarinya, Akhirnya menemukan caranya dengan menggunakan “popen”.
Berikut ini gw membuat Class-nya agar mudah digunakan:
/**
* Class ini digunakan untuk membuat thumbnail dari PDF, menggunakan
* imagemagick dan juga ghost script. Pindahkan gswin32c.exe ke root C
* Apabila terjadi kegagalan mungkin akan membantu menyelesaikan masalah
*
* Baru dicoba under Windows belum di Linux...
* @author Rizky Gunawan<goeny_gon@yahoo.com>
*/
class pdfThumbnailer
{
private $source;
private $target;
private $dimension;
private $page;
function __construct() { }
/**
* Set PDF Source
*
* @param string $sourcePdfFilePath file path to PDF file
*/
function setSource($sourcePdfFilePath)
{
if(file_exists($sourcePdfFilePath))
{
$this->source = $sourcePdfFilePath;
}
else
{
echo "pdf source File not found";
return false;
}
}
/**
* Set target/result File with path.
*
* @param string $targetFilePath File result path
*/
function setTarget($targetFilePath)
{
$this->target = $targetFilePath;
}
/**
* Set Result With & height if not supplied, it will set max to 500 pixel
*
* @param int $width width of thumbnail.
* @param int $height height of thumbnail.
*/
function setSize($width=500,$height='')
{
$this->dimension[0] = $width;
$this->dimension[1] = $height;
}
/**
* Set wich page you want to create, if not supplied, it will create all
* page. Started from 0
*
* @param int $page Set wich page you want to create, start from 0
*/
function setPage($page)
{
$this->page = $page;
}
/**
* Generate the thumbnail.
*/
function getThumbnail()
{
if($this->dimension[0]==0){ $this->dimension[0] = 500; }
if($this->dimension[1]==''){$size = $this->dimension[0];}
else{ $size = $this->dimension[0].'x'.$this->dimension[1];}
if($this->page!='') { $page = "[".$this->page."]"; }
if($this->source=='' || $this->target=='') { return false; die(); }
$command = "convert -thumbnail ".$size." ".$this->source.$page." ".$this->target;
$msg = popen($command,"r"); //Change shell_exec so it can works :D
$read = trim(fread($msg, 2096));
if($read == 'pdf source File not found')
{
return false;
}
else { return true; }
}
}
?>
Simpan dengan nama “pdfThumbNailer.php”. Cara pakainya cukup simple:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PDF Thumbnail Extractor Example</title>
</head>
<body>
<?php
/*
IMAGENAGICK tidak dapat membaca path yang terdapat spasi, so just becarefull :)
*/
require_once 'pdfThumbNailer.php'; //include file class
$thumb = new pdfThumbnailer();
$thumb->setSource(dirname(__FILE__).DIRECTORY_SEPARATOR.'exampleFile'.DIRECTORY_SEPARATOR.'test.pdf');
$thumb->setTarget(dirname(__FILE__).DIRECTORY_SEPARATOR.'exampleFile'.DIRECTORY_SEPARATOR.'ThumbnailExtract.jpg');
$thumb->setSize(500);
$thumb->setPage("0"); //halaman dimulai dari nol. halaman nol, buat menjadi string.
if($thumb->getThumbnail())
{
?>
<img src="exampleFile/ThumbnailExtract.jpg" />
<?php
}
else
{
echo "Extraction failed";
}
?>
</body>
</html>
Sementara di beberapa PC converter tidak berjalan mulus karena terkadang Imagemagick tidak menemukan Ghostscript. Untuk mengatasinya bisa copykan file “gswin32c.exe”(yang ada di “
Untuk paket lengkapnya bisa di download disini
Popularity: 2% [?]
16 Responses to Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
Leave a Reply Cancel reply
This Blog
My name is Rizky Gunawan, graduated(Waw, t can't believe myself can graduated from that collage :P ) from Computer Science Major. My Hobby is Coding, collecting some Anime's goods and also my specialty is web development using PHP. Currently I'm working on press company in Indonesia as Internal Software Developer.
Tags
ajax AMD AMD HSF Anime Anime Music Ar tonelico ATI Clannad Crysis GeForce Gigabyte Good Smile Company Hatsune Miku Intel Intel HSF javascript Kosaka Kirino Linux Microsoft Motherboard Music Video mySQl Nendoroid Nvidia ONKYO OreImo Overclocking P55 PC Games php Project Skripsi Soundcard Thermalright thermalright Ultra 120 Extreme Touhou Ubuntu VGA Card Vocaloid Warhead Web Design web project Windows Windows 7 Wordpress ThemeReent Comment
- リズキ on Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
- and on Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
- リズキ on Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
- and on Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
- Hnedry Heryana on [Tutorial] Web Services using XMLRPC with PHP
Archives




misi gan….
ada contoh yang udah jadinya gag ??
kya demonya gitu….
Kalo Demo ga ada sih, soalnya web hosting gw ga ngijinin ini(entah di hosting gw ada Gs-nya atau enggak).
Yang penting untuk bisa pake class ini harus ada Imagemagick dan juga Ghostscript. Imagicknya ga usah pakeextension PHP-nya karena dari PHP akan memanggil langsung melalui Shell command.
wah bagus mas scriptnya cuma saya mau tanya kok kalo background pdf nya warna putih jadinya jpg nya bground hitam .. banyak yg seperti itu ,.. apa ada fungsi untuk memperbaiki kualitas gambar yang di extrak misal jadi 256 color atau 8bit .. biar lebih bagus ..
Terimakasih
Setelah hari ini gw coba, saya menemukan masalahnya, sepertinya untuk rilis imagemagick terakhir ada opsi tambahan, gw mendowngrade dengan versi lebih tua(6.6.2-1 [ImageMagick-6.6.2-1-Q16-windows-dll.exe]) hasilnya lancar
wah, saya baru tau ada kejadian seperti itu, sejauh ini di program yang saya buat ga pernah mengalami hal seperti itumantap gan…ane coba n berhasil…hehe..
tapi bagaimana caranya jika ada banyak pdf gan…
jadi maksudnya satu halaman banyak pdf yg di thumbnail…
mohon pencerahannya master… :D
1 halaman banyak PDF? atau 1 PDF banyak halaman?????
maksudnya 1 halaman banyak PDF…. :d:d
sama kalau pdf thumbnail dari url gimana mas caranya…
maap banyak nanya :d
Kalo 1 file image banyak thumbnail PDF mah sama aja harus ngeextract semua halaman PDF terus tinggal di kalkulasiin dan cetak gambarnya dengan GDLIB etc… untuk logikanya sih bisa dipikirin sendiri, gw ga ada codenya(karena IMO menurut gw kalo PDF-nya masih beberapa halaman<10 mungkin readable, tapi kalo udha 20 halaman lebih jadinya dalam gambar kecil2, ga bisa dibaca)
Kalo dari URL... copy dulu filenya ke lokal. Bisa degan function "copy" dari PHP(kalo fwraper mengiinkan), atau dengan CURL untuk copy filenya(bisa cari cara menggunakan CURL untuk mengcopy file dari URL lawan). Kalau langsung belom pernah coba
hehe :d mantap mas penjelasannya…
tp yang ane maksud itu gini lho mas, jadi saya tampilkan thumbnail dari pdf yang berasal dari url… :d
muter2 cari di simbah google dapet ini mas http://view.samurajdata.se/ tapi masih binggung untuk tampilin thumbnailnya aja…
misal url pdfnya : http://www.yuma.usmc.mil/socialmedia/facebook_tutorial_handbook.pdf
ane coba dapet proses seperti ini mas : http://view.samurajdata.se/ps.php?url=http%3A%2F%2Fwww.yuma.usmc.mil%2Fsocialmedia%2Ffacebook_tutorial_handbook.pdf&submit=View%21
jadi kira2 kalo satu halaman ada beberapa pdf untuk di thumbnail caranya gimana ? :d:d
maacih :”>
gw mencoba langsung via URL bisa, tetapi sedikit perubahan di class “pdfThumbnailer”.
Pada method “setSource”, yang isinya:
if(file_exists($sourcePdfFilePath))
{
$this->source = $sourcePdfFilePath;
}
else
{
echo “pdf source File not found”;
return false;
}
ganti dengan:
$this->source = $sourcePdfFilePath;
Tetapi pastikan si imagemagick bisa terkoneksi ke internet. Kalau ga bisa ya berarti harus dicopy ke lokal dulu file pdfnya(cari tutorial mengcopy dari remote server ke local server. biasanya menggunakan CURL).
Untuk buat thumbnail yang berasal dari beberapa PDF gw ga punya caranya dan gw belom mikirin caranya.
gw coba kok gak ada bedanya ya mas ??
ini saya coba disini http://hppy.in/pdfThumbnail/
hasilnya “pdf source File not foundExtraction failed”
saya coba2 edit disininya
$thumb->setSource(‘http://www.yuma.usmc.mil/socialmedia/facebook_tutorial_handbook.pdf’);
:d udah gan udah bisa dari url ternyata…hehe…
tapi masih binggung untuk tampilin dari banyak link pdf gimana ya caranya ?? :d:d
Mas,boleh tanya lebihh tentang imagemagick dan gostscript dan cara menginstallnya saya sudah mencoba tapi masih kesulitan dan boleh buatin posting donk tentang convert pdf to image please,bisa YMan ??
Andre.antariksa
monggo silahkan aja, add ym sya di : goeny_gon
Terimakasih mass saya sudah bisa namun bagaimana caranya jika pdf itu belum ditentukan directorynya jadi user bisa memilih sendiri pdf mana yang maudiambil ex dengan tombol browse nah nanti oto matis terkonvert dan terseimpan didirectory yang sudah ditentukan sebelumnya,mohon pencerahannya
question:
1. dlm konteks ini dimana PDF-nya di client kah? atau di server?
kalo di client berarti client bisa menguploadnya terlebih dahulu baru di proses
Kalo sudah ada di server seharusnya ANda sudah tahu file PDF yang sudah berada di server apa saja tinggal lakukan operasinya saja kan?