ugrás a tartalomhoz

PDF thumbnail készítési hiba

cszlak · 2013. Már. 27. (Sze), 13.33
Olyan problémávl fordulok hozzátok, hogy van egy PDF feltöltöm, amihez szeretnék készíteni egy Thumbnail készítőt.

Ime a kód:

   
include('image.php'); // Image class
include('imagick_class.php'); //Imagic class

if (isset($_POST['up_submit']) ){
    
$pdfDirectory = "pdf/";
$thumbDirectory = "pdfimage/";
  
//get tde name of tde file
$filename = basename( $_FILES['pdf']['name'], ".pdf");

  
//remove all characters from tde file name otder tdan letters, numbers, hyphens and underscores
$filename = preg_replace("/[^A-Za-z0-9_-]/", "", $filename).".pdf";
 echo "<p> filename: ".$filename."</p>"; 
//name tde tdumbnail image tde same as tde pdf file
$thumb = basename($filename, ".pdf");
 $thumb = $thumb.".jpg";
 echo "<p> thumb: ".$thumb."</p>";
$url = $pdfDirectory.$filename;

echo "<p> Files"; print_r($_FILES); echo"</p>";
  
  if (is_uploaded_file($_FILES['pdf']['tmp_name'])){
    if(move_uploaded_file($_FILES['pdf']['tmp_name'], $url)) {
      
    //tde patd to tde PDF file
    $pdfWithPath = $pdfDirectory.$filename;
      
    //add tde desired extension to tde tdumbnail
   
    //execute imageMagick's 'convert', setting tde color space to RGB and size to 200px wide
	 
	exec("convert \"{$pdfWithPath}[0]\" -colorspace RGB -geometry 200 $thumbDirectory$thumb");
          
    //show tde image
    echo "<p><a href=".$pdfWithPath."><img src='pdfimage/".$thumb." alt='' /></a></p>";
    }
	else{echo "Feltöltési hiba!";}
  }else{echo "Nem választottál ki fájlt!";}
}
  
?>


<form action="<?=$_SERVER['PHP_SELF']?>?site=Katalogus" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="site" value="Katalogus" />
    <input type="file" name="pdf" />
    <input type="submit" name="up_submit" value="Upload" />
</form>

A gondom ezzel a sorral van:

exec("convert \"{$pdfWithPath}[0]\" -colorspace RGB -geometry 200 $thumbDirectory$thumb");
Nem tudtam működésre bírni, hogy elkészítse a képet.
Ha valaki tudna ebben segíteni, nagyon megköszöném.
Vagy esetleg tud másik kódott a megoldásra, az is jó lenne.
 
1

ImageMagick telepítve van? Ha

kuka · 2013. Már. 27. (Sze), 13.38
ImageMagick telepítve van? Ha igen, az útvonala benne van a $PATH vagy %PATH%-ben? Ha igen, működik? Ha igen, a web szerver felhasználójának is van joga futtatni?
2

ÖÖÖ Ez most sok jó kérdés!!

cszlak · 2013. Már. 27. (Sze), 13.46
ÖÖÖ Ez most sok jó kérdés!! A Class-ok nem elegek hozzá?

Ezt én hol tudom egy fizetős tárhelyen megoldani?
A php.ini-hez biztosan nem férek hozzá!
3

A hibás sorban az csomag

kuka · 2013. Már. 27. (Sze), 14.02
A hibás sorban az csomag egyik parancssoros szerszámát, a [url=http://imagemagick.org/script/convert.php]convert próbálja futtatni. Általában ezt csak sebesség kritikus esetben szokták alkalmazni, inkább az Imagick PHP csomagon keresztül érik el az ImageMagick rutinkönyvtárait.

Ha a fizetős tárhelyen saját virtuális gépet kapsz, elméletileg fel kell lehessen telepíteni az ImageMagick csomagot és akkor a szkripted valószínűleg működni fog. Ha nem virtuális gépet kapsz, akkor felejtős.
4

???

cszlak · 2013. Már. 27. (Sze), 14.16
Ezt hol tudom megnézni a tárhelyen? Cpanelen?

Letöltöttem mind a kettőt, és felváltva próbálkozom velük. (Localhoston egyenlőre)

Van esetleg valamilyen megoldás, arra hogy a Pdf-ból egy kis képet készítsek?
Vagy esetleg meg lehet oldani másképp:

<object data="../katalogus/121213_AKC_KAT_web.pdf" type="application/pdf" height="20%" width="20%" ></object>

<embed src="../katalogus/121213_AKC_KAT_web.pdf" width="100" height="250" href="../katalogus/121213_AKC_KAT_web.pdf"></embed>
Láttam JQuery-ben hogy le tudta kicsinyíteni a teljes pdf-et megjelenítéskor.
Nekem az is megoldás lenne, ha kicsibe megjelenne ott a pdf, ha rá katint akkor meg megnyílik nagyban (vagy ahogy a felhasználónak be van állítva.).
5

Hibás a link amit írtál!

cszlak · 2013. Már. 28. (Cs), 12.43
Hibás a link amit írtál!

Meg tudnád írni még egyszer.
6

Észrevettem, de már nem

kuka · 2013. Már. 28. (Cs), 13.22
Észrevettem, de már nem szerkeszthettem, mert időközben válaszoltál rá. Reméltem, hogy a lap forráskódjából kihámozható.
A hibás sorban az ImageMagick csomag egyik parancssoros szerszámát, a convert próbálja futtatni.

Ami meg azt a hibás sort illeti, én inkább lecserélném a PHP nyelvű megfelelőjére:

$pdf = new Imagick();
$pdf->readImage("{$pdfWithPath}[0]");
$pdf->setColorspace(Imagick::COLORSPACE_RGB);
$pdf->scaleImage(200, 0);
$pdf->writeImage($thumbDirectory$thumb);
Ezt nagyobb eséllyel fogja támogatni a tárhely szolgáltatód.
7

Ezen kiakad!

cszlak · 2013. Már. 28. (Cs), 15.33
Ezen kiakad:

$pdf->setColorspace(Imagick::COLORSPACE_RGB);  
$pdf->scaleImage(200, 0);  
$pdf->writeImage($thumbDirectory$thumb); 


Nincsnek deklarálva egyikben sem:

include('image.php'); //image class
include('imagick_class.php'); 
include('imagemagick_class.php');
8

Ezen

kuka · 2013. Már. 28. (Cs), 15.58
Ezen kiakad:
$pdf->setColorspace(Imagick::COLORSPACE_RGB);
Úgy érted, hogy a new Imagick() utasításon átmegy? És pontosabban hogyan akad ki?
Nincsnek deklarálva egyikben sem:

Helyes. Nem tudom mire jók a felsorolt állományok, de nekem nem is kellenek. És a korábban közölt kódomnak sem.
9

Fatal error:

cszlak · 2013. Már. 28. (Cs), 16.15
Fatal error: Call to undefined method Imagick::setColorspace()
10

Aha. Ez verzió különbség lesz

kuka · 2013. Már. 28. (Cs), 16.26
Aha. Ez verzió különbség lesz (nálam 6.8.1 van):
This method is available if Imagick has been compiled against ImageMagick version 6.5.7 or newer.
Imagick::setColorspace
Kommentezd ki azt a sort, nem hinném, hogy szükség lenne rá.
11

Kikommentezni?

cszlak · 2013. Már. 28. (Cs), 17.13
Valamit te félre értettél belőlem, az utolsó 3 sort hibának írja ki, nem csak ezt az egyet.

$pdf->setColorspace(Imagick::COLORSPACE_RGB);    
$pdf->scaleImage(200, 0);    
$pdf->writeImage($thumbDirectory$thumb);   

12

Az idézett hibaüzenet csak az

kuka · 2013. Már. 28. (Cs), 17.32
Az idézett hibaüzenet csak az egyik sorra vonatkozott. Azt az egy sort kommentezd ki. Ha ezután is hibaüzenetet kapsz, másold be azt is. De a setColorspace()-el ellentétben a scaleImage() és a writeImage() verziótól függetlenül kellene működjön.
13

Mindre ugyanazt a hibát írja ki!

cszlak · 2013. Már. 28. (Cs), 17.45

Fatal error: Call to undefined method Imagick::scaleImage()
14

Akkor el sem tudom képzelni

kuka · 2013. Már. 28. (Cs), 17.52
Akkor el sem tudom képzelni mit csináltál, de valami nagyon nem jó. Másold be a szkriptedet a jelenlegi állapotában.

Illetve másold be a

<?php
echo extension_loaded("imagick");
// és/vagy
print_r(get_loaded_extensions());
?>
kimenetét is.
16

Itt van:

cszlak · 2013. Már. 28. (Cs), 18.06

    
if (isset($_POST['up_submit']) ){
    
$pdfDirectory = "pdf/";
$thumbDirectory = "pdfimage/";
  
//get tde name of tde file
$filename = basename( $_FILES['pdf']['name'], ".pdf");

  
//remove all characters from tde file name otder tdan letters, numbers, hyphens and underscores
$filename = preg_replace("/[^A-Za-z0-9_-]/", "", $filename).".pdf";
 echo "<p> filename: ".$filename."</p>"; 
//name tde tdumbnail image tde same as tde pdf file
$thumb = basename($filename, ".pdf");
 $thumb = $thumb.".jpg";
 echo "<p> thumb: ".$thumb."</p>";
$url = $pdfDirectory.$filename;

echo "<p> Files"; print_r($_FILES); echo"</p>";
  
  if (is_uploaded_file($_FILES['pdf']['tmp_name'])){
    if(move_uploaded_file($_FILES['pdf']['tmp_name'], $url)) {
      
    //tde patd to tde PDF file
    $pdfWithPath = $pdfDirectory.$filename;
      
    //add tde desired extension to tde tdumbnail
   
    include('image.php'); 
    include('imagick_class.php');  
//include('imagemagick_class.php');
	//$myurl = 'MDF-Akcio-2013-0101-0331ig-szines.pdf[0]';
	
	$thumn_image = $thumbDirectory.$thumb;
	
	$pdf = new Imagick(); 
	
	print_r(get_loaded_extensions()); 
	 
$pdf->readImage("{$pdfWithPath}[0]");  
$pdf->setColorspace(Imagick::COLORSPACE_RGB);  
$pdf->scaleImage(200, 0);  
$pdf->writeImage($thumn_image);  

echo extension_loaded("imagick");
	 
	//exec("convert \"{$pdfWithPath}[0]\" -colorspace RGB -geometry 200 $thumbDirectory$thumb");
          
    //show tde image
    echo "<p><a href=".$pdfWithPath."><img src='pdfimage/".$thumb." alt='' /></a></p>";
    }
	else{echo "Feltöltési hiba!";}
  }else{echo "Nem választottál ki fájlt!";}
}
  
?>


<form action="<?=$_SERVER['PHP_SELF']?>?site=Katalogus" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="site" value="Katalogus" />
    <input type="file" name="pdf" />
    <input type="submit" name="up_submit" value="Upload" />
</form>

És a kiírás:

Array ( [0] => Core [1] => bcmath [2] => calendar [3] => ctype [4] => date [5] => ereg [6] => filter [7] => ftp [8] => hash [9] => iconv [10] => json [11] => mcrypt [12] => SPL [13] => odbc [14] => pcre [15] => Reflection [16] => session [17] => standard [18] => mysqlnd [19] => tokenizer [20] => zip [21] => zlib [22] => libxml [23] => dom [24] => PDO [25] => bz2 [26] => SimpleXML [27] => wddx [28] => xml [29] => xmlreader [30] => xmlwriter [31] => apache2handler [32] => Phar [33] => curl [34] => gd [35] => mbstring [36] => mysql [37] => mysqli [38] => pdo_mysql [39] => pdo_sqlite [40] => sockets [41] => sqlite3 [42] => xsl [43] => yaz [44] => mhash [45] => xdebug )
Fatal error: Call to undefined method Imagick::setColorspace() in
17

A kód helyes, viszont a

kuka · 2013. Már. 28. (Cs), 18.25
A kód helyes, viszont a kimenet arról árulkodik, hogy neked nincs is Imagick PHP module-od telepítve. Nem tudom ki és milyen gügye vicc kedvéért deklarált valahol Imagick névvel osztályt, de az nem az igazi.

Némely PHP telepítés esetén az Imagick telepítve van (a php.ini extension_dir direktívája mondja meg hol kell legyen, nálam /usr/lib/php), de a php.ini-ben (nálam /etc/php.ini) ki van kommentezve (egy extension direktíva, nálam az értéke imagick.so). Először is ellenőrizd, hogy nem így áll-e a helyzet. Ha igen, távolítsd el a kommentezést és indítsd újra a webszervert. Ha nem, akkor telepítened kell. Vagy más megoldást keresned.

Egy másik dolog amit megnéznék, hogy a tárhelyen telepítve van-e az Imagick PHP module. (Velem már megtörtént, hogy lustaságból minden ImageMagickes dolgot a szerveren fejlesztettem, mert a szerveren eleve fent volt és nem volt kedvem lokálisan is telepíteni… Persze ez nem követendő példa.)
18

Ezt hol tudom megnézni?

cszlak · 2013. Már. 28. (Cs), 18.28
Ezt hol tudom megnézni?
A tárhely szolgáltató Cpanel-ján néztem de sehol sem találtam meg!

Egy másik dolog amit megnéznék, hogy a tárhelyen telepítve van-e az Imagick PHP module.
20

Egy akármilyen PGP szkriptbe

kuka · 2013. Már. 28. (Cs), 20.44
Egy akármilyen PHP szkriptbe beteszed a korábban említett extension_loaded() és/vagy get_loaded_extensions() függvényhívásokat majd megnézed a kimenetüket.
22

Ez az eredmény:

cszlak · 2013. Ápr. 3. (Sze), 08.45
Array ( [0] => Core [1] => date [2] => ereg [3] => libxml [4] => openssl [5] => pcre [6] => sqlite3 [7] => zlib [8] => bcmath [9] => bz2 [10] => calendar [11] => ctype [12] => curl [13] => dom [14] => hash [15] => filter [16] => ftp [17] => gd [18] => gettext [19] => SPL [20] => iconv [21] => session [22] => intl [23] => json [24] => mbstring [25] => mcrypt [26] => mysql [27] => mysqli [28] => pgsql [29] => standard [30] => Phar [31] => posix [32] => Reflection [33] => imap [34] => SimpleXML [35] => soap [36] => sockets [37] => exif [38] => tidy [39] => tokenizer [40] => wddx [41] => xml [42] => xmlreader [43] => xmlrpc [44] => xmlwriter [45] => xsl [46] => zip [47] => cgi-fcgi [48] => suhosin [49] => timezonedb [50] => PDO [51] => pdo_sqlite [52] => SQLite [53] => uploadprogress [54] => imagick [55] => pdo_mysql [56] => ionCube Loader [57] => Zend Guard Loader )
24

Ez lenne:

cszlak · 2013. Ápr. 3. (Sze), 08.47
Ez lenne
[54] => imagick
21

phpinfo...

Hidvégi Gábor · 2013. Már. 28. (Cs), 21.10
phpinfo...
23

extension_dir nincs benne írva.

cszlak · 2013. Ápr. 3. (Sze), 08.46
extension_dir nincs benne írva.
19

extension_dir

cszlak · 2013. Már. 28. (Cs), 18.34
Most így áll benne:

extension_dir = "${path}\php\php546x130226101647\ext\"
25

Ez az eredmény:

cszlak · 2013. Ápr. 3. (Sze), 08.58
Ez az eredmény:

Kód:

 $pdfWithPath = "pdf/284_ecorgan_konyhatechni.pdf"; //647KB
  $thumbDirectory =  "pdfimage/";
  $thumb = "284_ecorgan_konyhatechni.jpg";
  
   $thumn_image = $thumbDirectory.$thumb;  
      
    $pdf = new Imagick();   
            
$pdf->readImage("{$pdfWithPath}[0]");    
$pdf->setColorspace(Imagick::COLORSPACE_RGB);    
$pdf->scaleImage(200, 0);    
$pdf->writeImage($thumn_image);

 echo "<p><a href=".$pdfWithPath."><img src='pdfimage/".$thumb."  /></a></p>";      
Hiba üzenet:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster##kukac##zsokakonyha.hu and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
26

Működik köszönöm

cszlak · 2013. Május. 7. (K), 18.45
$pdf->setColorspace(Imagick::COLORSPACE_RGB); 
Ezt kivettem és működik.
Köszönöm a segítséget.