Zeigt die erste Seite von PDF als Bild an

8

Ich erstelle eine Webanwendung, in der ich Bilder / PDF im Miniaturformat anzeigen kann. Klicken Sie auf das jeweilige Bild / PDF, um es in einem neuen Fenster zu öffnen.

Für PDF habe ich (das ist Code des neuen Fensters)

%Vor%

Damit kann ich alle PDFs im Webbrowser sehen. Als Miniaturansicht möchte ich jedoch nur die erste PDF-Seite als Bild anzeigen.

Ich habe es versucht

%Vor%

aber es funktioniert nicht. Irgendeine Idee, wie man das erledigt?

Aktualisieren 1

Ich stelle Pfad der pdf-Datei zum Beispiel zur Verfügung. Ich habe jedoch Bilder in der Datenbank. In Wirklichkeit habe ich Code wie folgt.

%Vor%

Update 2

Aus Gründen der Miniaturansicht verwende ich

%Vor%

aber ich muss dasselbe auch für PDF erreichen.

Hoffe ich bin klar, was ich erwarte ...

    
Fahim Parkar 06.08.2012, 12:43
quelle

4 Antworten

1

Das habe ich benutzt

%Vor%     
Fahim Parkar 12.02.2013, 12:36
quelle
4

Ich bin mir nicht sicher, ob alle Browser Ihr eingebettetes PDF (erledigt über <h:graphicImage value="some.pdf" ... /> ) gleich gut anzeigen.

1. Seite als PDF extrahieren

Wenn Sie darauf bestehen, PDF zu verwenden, würde ich eines dieser beiden Befehlszeilenwerkzeuge empfehlen, um die erste Seite eines PDFs zu extrahieren:

  1. pdftk
  2. Ghostscript

Beide sind für Linux, Mac OS X und Windows verfügbar.

Befehl pdftk

%Vor%

Ghostscript-Befehl

%Vor%

(Unter Windows verwenden Sie gswin32c.exe oder gswin64c.exe anstelle von gs .)

pdftk ist etwas schneller als Ghostscript, wenn es um die Seitenextraktion geht, aber für eine einzelne Seite ist dieser Unterschied wahrscheinlich vernachlässigbar. Ab der letzten veröffentlichten Version, v9.05 , der vorherige Satz ist nicht mehr wahr. Ich fand, dass Ghostscript (einschließlich aller Startup-Overhead) ~ 1 Sekunde benötigt, um die erste Seite aus der 756 Seite PDF-Spezifikation zu extrahieren, während PDFTK ~ 11 Sekunden benötigt.

Erste Seite in JPEG konvertieren

Wenn Sie sichergehen möchten, dass auch ältere Browser Ihre erste Seite gut anzeigen können, konvertieren Sie sie in JPEG. Ghostscript ist hier dein Freund (ImageMagick kann das nicht alleine, es benötigt sowieso die Hilfe von Ghostscript):

%Vor%

Wenn Sie Seite 33 brauchen, können Sie es so machen:

%Vor%

Wenn Sie eine Reihe von PDFs benötigen, z. B. Seiten 17-23, versuchen Sie Folgendes:

%Vor%

Beachten Sie, dass die %03d -Notation mit jeder verarbeiteten Seite beginnt, beginnend mit 1. Ihr erster JPEG-Name wäre also page-16+001-of-input-PDF.jpeg .

Vielleicht ist PNG besser?

Beachten Sie, dass JPEG kein geeignetes Format für Bilder mit hohem Schwarz-Weiß-Kontrast und scharfen Kanten wie Textseiten ist. PNG ist dafür viel besser.

Um ein PNG aus den ersten PDF-Seiten mit Ghostscript zu erstellen, ist es einfach:

%Vor%

Die analogen Optionen wie bei JPEGs sind richtig, wenn es darum geht, Seitenbereiche zu extrahieren.

    
Kurt Pfeifle 06.08.2012 18:47
quelle
1

Warnung: Verwenden Sie nicht das Skript von Ma9ic (in einer anderen Antwort), außer Sie möchten ...

  • ... die PDF- & gt; JPEG-Konvertierung verbraucht viel mehr Zeit + Ressourcen als es sein sollte
  • ... geben Sie Ihre eigene Kontrolle über den gesamten PDF- & gt; JPEG-Umwandlungsprozess auf.

Es mag zwar gut für dich funktionieren, aber in diesen acht kleinen Zeilen von Bash gibt es so viele Probleme.

Erstens,
Es verwendet identify , um die Anzahl der Seiten aus der PDF-Eingabedatei zu extrahieren. % Co_de% (Teil von ImageMagick) kann jedoch PDFs nicht vollständig selbst verarbeiten. Ghostscript muss als 'delegate' ausgeführt werden, um die PDF-Eingabe zu verarbeiten. Es wäre viel effizienter, Ghostscript direkt zu verwenden, anstatt es indirekt über ImageMagick auszuführen.

Zweitens,
Es verwendet identify zur PDF- & gt; JPEG-Konvertierung. Die gleiche Bemerkung wie oben: Ghostscript wird sowieso verwendet, also warum nicht direkt ausführen?

Drittens,
Er läuft über die Seiten und führt für jede einzelne Seite der PDF-Datei einen anderen convert -Prozess durch, dh 100 Konvertierungen für eine 100-seitige PDF-Datei. Das bedeutet: Es werden auch 100 Ghostscript-Befehle ausgeführt, um 100 JPEGs zu erzeugen.

Vierter ,
Fahim Parkar's Frage war, ein Thumbnail von der ersten Seite der PDF zu bekommen, nicht von allen.

Das Skript führt mindestens 201 verschiedene Befehle für eine 100-seitige PDF-Datei aus, wenn alles in nur einem Befehl ausgeführt werden kann. Wenn du Ghostscript direkt ...

  1. ... es wird nicht nur schneller und effizienter laufen,
  2. ... aber es gibt Ihnen auch eine feinere und bessere Kontrolle über die Qualitätseinstellungen der JPEGs.

Verwenden Sie das richtige Tool für den Job und verwenden Sie es richtig!

Aktualisierung:

Seit ich gefragt wurde, hier ist meine alternative Implementierung zu Ma9ics Skript.

%Vor%

Ich habe sogar einen Benchmark dafür erstellt. Ich konvertierte die 756-Seiten-PDF-1.7-Spezifikation in JPEGs mit beiden Skripten:

  • Die Version von Ma9ic benötigt 1413 Sekunden, um die 756 JPEGs zu generieren.
  • Meine Version speichert 93% dieser Zeit und benötigt 91 Sekunden.
  • Darüber hinaus erzeugt Ma9ics Skript auf meinem System hauptsächlich schwarze JPEG-Bilder, meins sind Ok.
Kurt Pfeifle 06.08.2012 16:33
quelle
0

Hier ist ein Bash-Skript, das die Seiten in JPEG-Bilder umwandelt.

%Vor%     
Ma9ic 06.08.2012 13:00
quelle

Tags und Links