Ghostscritp drängelt sich vor HTML
Hagen
- php
Moin,
konvertiere in meinem Script bilddateien versch. formate zu kleinen jpegs um sie als vorschau darzustellen. Da für nutze ich ImageMagick über
PHP-Quellcode:
<?php
exec("convert.....
?>
->das klappt prima.
Nehme ich nun ein PDF(ghostscript ist installiert), und konvertiere über:
Quellcode:
exec("convert scan/".$entry." thumbnails/".$file[0].".jpg ",$error);
bricht die Darstellung der seite ab, ich bekomme den html code als text zurück.Z.Bsp:
Quellcode:
**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Avision NetDeliver C5540MFP <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.
**** Warning: stream operator not terminated by valid EOL.
**** Warning: stream operator not terminated by valid EOL.
**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Avision NetDeliver C5540MFP <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.
X-Powered-By: PHP/5.1.2
Content-type: text/html
<html>
<head>
<title>Vorschau</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script language="JavaScript" type="text/javascript">
USW......
Die Jpg werden aber korrekt erzeugt. Hat jem ne idee wie ich es schaffe die pdf ´s zu konvertieren und trotzdem meine PHP seite korrekt dargestellt bekomme??
Meine Idee war die konvertierung in eine andere php datei zu verlagern und von dieser die konvertierung ausführen zu lassen, hab aber ehrlich gesagt keine ideee wie ich das anstellen soll, da ich auch noch den jeweiligen namen der pdf files übergeben muss!!!
Am Besten wäre alledings wenn jemand ne idee hat wie man dies blöden meldungen von ghostscript ausstellen kann!!!*G*
Achja die PDF Dateien SIND NICHT KAPUTT!!!
MFG Hagen
Hi,
Am Besten wäre alledings wenn jemand ne idee hat wie man dies blöden meldungen von ghostscript ausstellen kann!!!*G*
Keine Ahnung, aber Bildschirmausgaben lassen sich abfangen (http://php.net/ob_start). Schlimmstenfalls also den Müll einsammeln, entsorgen und das nunmehr recycelte Material dem Browser wieder zuführen ... ;)
Gruß, Cybaer
Hi Cybaer,
»»(http://php.net/ob_start). Schlimmstenfalls also den Müll
»»einsammeln, entsorgen und das nunmehr recycelte Material dem
»»Browser wieder zuführen ... ;)
Habs nach deinem Tipp mal so probiert:
ob_start();
exec("convert scan/".$entry." thumbnails/".$file[0].".jpg ");
ob_end_flush();
Leider lässt sich Ghostscript dadurch nicht an der ausgabe hindern...!
MFG Hagen
ÄHM KORREKTUR:
Habs nach deinem Tipp, mal so probiert:
ob_start();
exec("convert scan/".$entry." thumbnails/".$file[0].".jpg ");
ob_end_clean();
Leider lässt sich Ghostscript dadurch nicht an der ausgabe hindern...!
MFG Hagen
Hi,
exec("convert scan/".$entry." thumbnails/".$file[0].".jpg ");
Leider lässt sich Ghostscript dadurch nicht an der ausgabe hindern...!
/* Programm ausfuehren und Statuscode sowie Standard- & Error-Output zurueck 051017 */
function shell($command,$return='all') {
$result=NULL;
if($proc=popen('('.escapeshellcmd($command).')2>&1','r')) {
$output='';
while(!feof($proc)) { $output.=fgets($proc,1000); }
$code=pclose($proc);
$output=trim($output);
switch(strtolower($return)) {
case ('code'): $result=$code; break;
case ('output'): $result=$output; break;
default: $result=array('code'=>$code,'output'=>$output);
}
}
return $result;
}
Das sollte den Fehleroutput einfangen ...
Gruß, Cybaer
Danke für deine Mühe... aber was machst du da,*G* versteh nur Bahnhof und wie soll ich das in mein script einbinden????
so sieht es jetzt bei mir aus:
elseif($file[1]=="pdf")
{
exec("convert scan/".$entry." thumbnails/".$file[0].".jpg ");
}
MFG Hagen
/* Programm ausfuehren und Statuscode sowie Standard- & Error-Output zurueck 051017 */
function shell($command,$return='all') {
$result=NULL;
if($proc=popen('('.escapeshellcmd($command).')2>&1','r')) {
$output='';
while(!feof($proc)) { $output.=fgets($proc,1000); }
$code=pclose($proc);
$output=trim($output);
switch(strtolower($return)) {
case ('code'): $result=$code; break;
case ('output'): $result=$output; break;
default: $result=array('code'=>$code,'output'=>$output);
}
}
return $result;
}
>
> Das sollte den Fehleroutput einfangen ...
>
>
> Gruß, Cybaer
>
Hi,
Danke für deine Mühe... aber was machst du da,*G* versteh nur Bahnhof und wie soll ich das in mein script einbinden????
Gepostete Funktion shell() in dein Programm kopieren, und exex(...) einfach durch shell(...) ersetzen.
Wenn Du die Ausgabe von GS benötigst, kannst Du auch $output=shell(...); schreiben. $output ist dann ein Array, welches den Statuscode sowie die Ausgabe von GS enthält.
Gruß, Cybaer
Ja verpipscht nochamal DAS GEHT DIE SCHEISE GEHT!!!!!...
Cybaer Ich danke dir!!!
Ich habe zwar keine Ahnung was zum teufel deine Funktion macht aber sie macht es gut!!!
M super FG Hagen
Hi,
Ich habe zwar keine Ahnung was zum teufel deine Funktion macht aber sie macht es gut!!!
LOL - s. http://php.net/popen! Der Kanal für die Standard-Fehler-Ausgabe (stderr) des übergebenen Kommandos wird umgeleitet und, zusammen mit der normalen Ausgabe, ausgelesen. Je nach 2. Paramter gibt shell() aber nur einen String mit dem Statuscode des gestarteten Prozesses zurück (shell(...,'code')), oder nur die komplette Ausgabe (shell(...,'output')), oder eben beides, dann halt in einem assoziativen Array ...
Gruß, Cybaer
Ich habe selbstverständlich einen entsprechenden Kommentar
//Funktion von Cybaer @SLFHTML.org
in meinen Quelltext eingebunden....
dir wurde ein denkmal gesetzt*GGGGG*
MFG Danke für die Erklärung
Hagen
Hi,
Ich habe selbstverständlich einen entsprechenden Kommentar
//Funktion von Cybaer @SLFHTML.org
Bitte nicht so etwas mißverständliches! :-o Lieber cybaer@binon.net ;)
dir wurde ein denkmal gesetzt*GGGGG*
*g*
Gruß, Cybaer
Moin Cybaer,
ich schon wieder,und zwar macht doch deine Fkt. so tolle sachen!
nun hab ich es mit pdfs probiert die mehrere Seiten haben so:
exec("convert -size 200x286 scan/".$entry."[1] -resize 200x286 thumbnails/".$file[0].".jpg ");
funzt es(augenmerk auf !!![1]!!!)
so:
shell("convert -size 200x286 scan/".$entry."[1] -resize 200x286 thumbnails/".$file[0].".jpg ");
macht er von allen seiten einen thumb, hast du ne idee woran das liegen könnte???
MFG Hagen
Hi,
hast du ne idee woran das liegen könnte???
Nein - drösel mal das Kommando auf!
shell() sichert das Kommando gegen "böse Buben" ab: escapeshellcmd($command)
Das sollte man mit Kommandos unbekannter Herkunft machen. Ersetz das "escapeshellcmd($command)" also einfach mal durch "$command"
Gruß, Cybaer
Ok bin erst am Montag wieder auf Arbeit,aber trotzdem schonmal danke
MFG Hagen
Moin
Nein - drösel mal das Kommando auf!
shell() sichert das Kommando gegen "böse Buben" ab: escapeshellcmd($command)
Das sollte man mit Kommandos unbekannter Herkunft machen. Ersetz das "escapeshellcmd($command)" also einfach mal durch "$command"
so nun funzt es in 99% aller Fälle, so eigentlich mit jeder nur denkbaren .pdf außer mit der Siemens Telefonanlagenbeschreibung... naja man kann nicht alles haben*GGG*.
Nochmal Vielen dank.
MFG Hagen
Hi,
ob_start();
exec("convert scan/".$entry." thumbnails/".$file[0].".jpg ");
ob_end_flush();
Leider lässt sich Ghostscript dadurch nicht an der ausgabe hindern...!
Du öffnest den Ausgabepuffer, GS schreibt in den Puffer, Du schließt den Puffer und sendest den Inhalt. Was erwartest Du denn dann? =%-)
Lies das Manual zur Ausgabepufferung auch *durch* (also nicht nur die ersten Wörter). Da findest Du auch, wie die den Puffer in ein Variable holen und ihn dann *ohne Ausgabe* schließen kannst.
Lösche aus dem Wert dieser Variablen dann alles vor "<html" und geb sie aus! Fertig.
Gruß, Cybaer
Siehe KORREKTUR!!!*GGG*
So wie ichs inner korrektur geschrieben hab, dürfte eigentlich nix ausgegeben werden??? oder seh ich das falsch wird aber trotzdem alles genauso ausgegeben!
MFG Hagen