Wenn ich eine pdf-Datei mit in eine Menge jpg-Dateien konvertiere
convert -quality 100 file.pdf page_%04d.jpg
Ich habe einen merklichen Qualitätsverlust.
Wenn ich jedoch Folgendes tue, tritt kein (merklicher) Qualitätsverlust auf:
Starten Sie gscan2pdf, wählen Sie file-> import (und wählen Sie file.pdf). Wechseln Sie dann in das temporäre Verzeichnis von gscan2pdf. Es gibt viele PNM-Dateien (eine für jede Seite der PDF-Datei). Jetzt mache ich
for file in *.pnm; do
convert $file $file.jpg done
Die resultierenden JPG-Dateien haben (ungefähr) die gleiche Qualität wie das Original-PDF (was ich will).
Nun ist meine Frage, ob es eine einfache Befehlszeile gibt, mit der die PDF-Datei in eine Reihe von JPG-Dateien konvertiert werden kann, ohne dass ein Qualitätsverlust auftritt. (Die obige Lösung ist zu kompliziert und zeitaufwändig).
Antworten:
Es ist nicht klar, was Sie unter "Qualitätsverlust" verstehen. Das könnte viele verschiedene Dinge bedeuten. Könnten Sie ein paar Beispiele zur Veranschaulichung posten? Vielleicht schneiden Sie den gleichen Abschnitt aus den Versionen mit schlechter Qualität und guter Qualität (als PNG, um weitere Qualitätsverluste zu vermeiden).
Möglicherweise müssen Sie verwenden
-density
, um die Konvertierung mit einer höheren Auflösung durchzuführen:(Sie können voranstellen
-units PixelsPerInch
oder-units PixelsPerCentimeter
bei Bedarf. Meine Kopie ist standardmäßig ppi.)Update: Wie Sie bereits betont haben, ist
gscan2pdf
(wie Sie es verwenden) nur ein Wrapper fürpdfimages
(von Poppler ).pdfimages
tut nicht das Gleicheconvert
wie bei einer PDF-Eingabe.convert
Nimmt die PDF-Datei, rendert sie mit einer bestimmten Auflösung und verwendet die resultierende Bitmap als Quellbild.pdfimages
Durchsucht die PDF-Datei nach eingebetteten Bitmap-Bildern und exportiert sie in eine Datei. Text- oder Vektorzeichnungsbefehle in der PDF-Datei werden einfach ignoriert.Wenn Sie also eine PDF-Datei haben, die nur eine Reihe von Bitmaps umschließt,
pdfimages
können Sie sie viel besser extrahieren, da Sie die Rohdaten in ihrer ursprünglichen Größe erhalten. Wahrscheinlich möchten Sie diese-j
Option auch verwendenpdfimages
, da eine PDF-Datei unformatierte JPEG-Daten enthalten kann. Standardmäßigpdfimages
wird alles in das PNM-Format konvertiert, und das Konvertieren von JPEG> PPM> JPEG ist ein verlustreicher Prozess.Also versuche
Möglicherweise müssen Sie dem ein
convert
bis-.jpg
Zeichen hinzufügen (je nachdem, welches Bitmap-Format die PDF-Datei verwendet hat).Ich habe diesen Befehl an einem PDF ausprobiert, das ich selbst aus einer Folge von JPEG-Bildern erstellt habe. Die extrahierten JPEGs waren Byte für Byte identisch mit den Quellbildern. Höhere Qualität kann man nicht erreichen.
quelle
convert
ist auch für große PDFs unpraktisch. Beispielsweise waren 45 GB Speicher erforderlich, um ein Buch mit 700 Seiten mit 6 Megapixeln zu verarbeiten. Es dauerte auch ungefähr tausendmal länger alspdfimages
.Wie die Antwort des Schülers sagt,
pdfimages
ist dies eine gute Option. Aus meiner Erfahrung beidesgs
undconvert
zu schlechter Qualität exportieren, egal ob du die richtige dpi angibst.Wenn die PDF-Datei jedoch mehrere Ebenen pro Seite
pdfimages
enthält, funktioniert dies nicht und die Ebenen werden als separates Bild extrahiert. In diesem Fall ist es am besteninskcape
, die Seite so zu exportieren, wie sie angezeigt wird.Dies sind die Befehle, die ich benutze:
Der erste Befehl teilt alle Seiten auf. Der zweite Befehl konvertiert Seite für Seite in PNG. Sie können sie png behalten oder einfach in jpeg konvertieren
Im Vergleich zu
pdfimages
,gs
und ImageMagick ist der Exportconvert
meiner Meinung nach voninkscape
bester Qualität.quelle
Die Antwort von @cjm ist korrekt, aber wenn Sie GUI mögen und nicht alle PDF-Seiten rendern möchten, verwenden Sie gimp, um ein Bild zu erhalten.
Öffnen Sie ein PDF mit gimp und Sie erhalten ein Importfenster mit allen gerenderten Seiten. Wählen Sie die gewünschten Seiten aus und stellen Sie die Auflösung auf 600 Pixel / Zoll ein (ich habe festgestellt, dass 300 in vielen Fällen zu scharf sind). Speichern im gewünschten Format mit "Datei / Export"
Auf jeden Fall muss ein Flag vorhanden sein, mit dem die gewünschten Seiten über die Befehlszeile ausgewählt werden können.
quelle
Beim Betrachten des Quellcodes von gscan2pdf ist mir aufgefallen, dass PDF-Bilder verwendet werden. So
pdfimages file.pdf page
würde inpage-001.ppm, page-002.ppm
usw.quelle
In Ihrer Frage ist nicht klar, ob Sie in Ihrem PDF über Text und Vektorgrafiken sprechen oder ob Ihr PDF eingebettete Bilder enthält.
Nachdem ich gelesen habe, worum es bei gscan2pdf geht, gehe ich davon aus, dass Ihre PDF-Dateien (nur) eingebettete Grafiken enthalten.
convert
Im Wesentlichen "druckt" Ihr PDF ohne Rücksicht auf den Inhalt. Wie @cjm vorschlägt, möchten Sie möglicherweise die Druckdichte ändern. Nur so kann die Qualität von Vektorgrafiken gesteigert werden.Wenn Sie stattdessen eingebettete Bilder extrahieren möchten (ähnlich wie es gscan2pdf zu tun scheint), führt die Schätzung der Dichte in der Regel entweder zu Qualitätsverlusten oder zu einer höheren Qualität als erforderlich (und zur Verschwendung von Speicherplatz). Die Antwort ist dann, das Bild zu extrahieren, anstatt das PDF zu drucken. Lesen Sie diesen Artikel, in dem grundsätzlich die Verwendung von
pdfimages
empfohlen wird, um Bilder ohne Qualitätsverlust zu extrahieren.quelle