Pdf -> Gif/jpg

hscheffknecht

Grünschnabel
Hallo!

Wer kennt Objekte, die es möglich machen, ein PDF in ein Bild umzuwandeln, das dann ausgegeben werden soll?

Mir wurde Ghostscript empfohlen, aber aus der Website werde ich nicht schlau (falls ich die richtige erwischt habe: http://www.cs.wisc.edu/~ghost/) und ich weiß nicht ob man das für ASP verwenden kann.

danke für eure Hilfe
Herbert
 
Hallo Leute!
Danke für eure Hilfe *smile*

Ich habe mich gestern Nachmittag mit Ghostscript beschäftigt und bin auf folgende Lösung gekommen:

• Ghostscript herunterladen und auf dem Server installieren

• Ghostscript mit folgendem Befehl starten:
wshell.run "C:\Programme\ghostscript\gs8.00\bin\gswin32c.exe -sDEVICE=png16m -r100 -dNOPAUSE -sOutputFile=d:\web\mydocs\temp.png d:\web\mydocs\temp.pdf -c quit" , 1, TRUE

-> gswin32c: Eingabezeilenversion von Ghostscript für Windows
-> sDEVICE=Treiber für umwandlung in png
-> -r100: PDF mit 100dpi rastern
-> -dNOPAUSE: ohne dem Eintrag würde gs nach jeder Seite in der PDF auf eine Eingabe vom Benutzer warten dh. das Programm würde ewig laufen und das ASP Script würde nie fertig werden bis der Server die ausführung abbricht.
-> -c quit: gs wird nach dem rastern beendet.

gs rastert die pdf leider ohne anti aliasing. Um eine schönere Grafik zu erhalten, muss man mit mehr dpi (200 -300) rastern und anschliessend mit einem anderen programm (zb. ImageGlue) die Datei Laden und verkleinern.

Die Performance ist dann zwar im A****, aber dafür hast du ein tolles Bild von einem PDF.

Beispiel:
Bild ohne Antialiasing:
bild1.png


Bild mit Antialiasing:
http://80.120.126.70/bild2.gif

lg
Herbert
 
Ja, bis gestern wusste ich auch nicht so richtig was Ghostscript ist und kann.
Aber wenn man ein paar Stunden herum tüftelt, kann sich das schnell ändern.
 
Hallo Leute,

ich habe dasselbe Problem: Moechte pdf-files in jpg konvertieren. Dazu soll man eine pdf (sagen wir mal datei.pdf) hochladen und der Server bastelt daraus fuer jede Seite des pdfs ein eigenes jpg mit dem Name datei_seitennummer.jpg...

Ich habe ganz ehrlich null Ahnung von Ghostscript, weiss aber, dass gsview und ghostscript auf dem Server installiert sind. Wo finde ich gute Tutorials, mit denen ich lernen kann, was ich wissen muss Wie starte ich das ganze dann aus PHP?

Vielen Dank fuer eure Hilfe,
Flo
 
Hallo Flo,

nach 3 1/2 Jahren kann ich da leider auch nicht mehr weiter helfen, außerdem kenne ich mich in PHP nicht wirklich gut aus. Ich hoffe trotzdem, dass dir der obere Eintrag von mir weiter helfen kann.

lg Herbert
 
Ich habs mit:

<?
exec("/usr/bin/gs pdf2ps /httpdocs/f1/gs/test.pdf");
?>

versucht. Das pdf liegt auch dort, wor es angegeben ist. Ebenfalls hab ich

<?
exec("/usr/bin/gs pdf2ps test.pdf");
?>

versucht, da das php-file aus demselben Ordner wie das pdf-file kommt, jedoch ebenfalls ohne jegliche Ergebnisse.

Waere dankbar fuer jeden Hinweis.
Flo
 
Hallo Flo,

unterscheidet sich die Art der Angabe der Parameter bei Linux denn derart, oder müssten auch Bindestriche verwendet werden?

Ich hätte es mit folgendem Befehl probiert:

exec("/usr/bin/gs -sDEVICE=png16m -r100 -dNOPAUSE -sOutputFile=temp.png temp.pdf -c quit");

Hast du Vollzugriff auf den Server oder einen Linux Computer zur Verfügung? Dann könntest du auch probieren, den Befehl in der Eingabeaufforderung einzugeben und schauen was für Fehlermeldung kommt. Vielleicht kannst du auch im PHP irgendwie den Rückgabetext ausgeben?

lg Hörbi
 
PHP:
exec('/usr/bin/gs -dBATCH -dUseCIEColor -dNOQUIET -sDEVICE=jpeg -sOutputFile=bild.jpg test.pdf', $ausgabe, $returnValue);

Damit hab ichs hinbekommen. Einziges Problem besteht darin, dass ich von einem dreiseitigen PDF-File nur die erste Seite als Jpg bekomme. Welches Format ist denn am geeignetsten fuer viel Textdartellung? Soll ich da jpg, png oder lieber tiff nehmen?

Die Ausgabe $ausgabe liefert ein Array mit Meldungen "Page 1", ">>showpage, press to continue<<", "Page 2", ">>showpage, press to continue<<" und so weiter und den und $returnValue = 0.

Soweit alles gut, aber ich will ja nicht nur das Deckblatt bekommen, sondern jede Seite in ein einzelnes file. Irgendwo hab ich den Befehl als
PHP:
exec('/usr/bin/gs -dBATCH -dUseCIEColor -dNOQUIET -sDEVICE=jpeg -sOutputFile=bild.jpg test.pdf[]', $ausgabe, $returnValue);
gesehen, der tuts aber nicht...

Nee, Linux hab ich selber nicht, mein Kumpel meinte nur, dass auf dem Server Unix laeuft und ich deshalb nicht die Windows-Befehle nutzen koennte, sondern das ueber Linux-Eingaben machen sollte.

Wie gesagt, es tuts, das Deckblatt wird erstellt, aber die restlichen Seiten werden "uebersehen" oder ignoriert... Woran liegts?

Danke fuer eure Bemuehungen....
Flo
 

Neue Beiträge

Zurück