Zusammenführen von PNG-Bildern in einer PDF-Datei [geschlossen]

89

Wie kann ich unter .pngUnix mehrere Dateien zu einer PDF-Datei zusammenführen?

Twidizle
quelle

Antworten:

149

Wenn Sie sich die Dokumentation zu ImageMagick ansehen, ist dies möglicherweise so einfach wie:

convert 1.png 2.png myfile.pdf

Wenn das nicht funktioniert, behauptet PDFjam , Ihr Problem lösen zu können.

Jeremiah Willcock
quelle
5
Das ist erstaunlich. So einfach. Die Größe der Bilder und alles wird automatisch angepasst. Ich liebe Open Source.
Nathan Wallace
Gibt es eine Möglichkeit, die Qualität des Dokuments oder die Dateigröße der resultierenden PDF-Datei zu steuern? Ich muss einige Dokumente mit einer maximalen Dateigröße von 2,5 MiB hochladen. Ich habe es mit der -qualityOption versucht, aber die Dateigröße beträgt immer ~ 9,5 MiB.
Arielnmz
Ist es möglich, Bilddateien an vorhandene PDF-Dateien anzuhängen?
Kiran Reddy
3
Konvertieren Sie alle Dateien in einem Ordner eines bestimmten Typs mitconvert *.jpg file.pdf
haakym
2
@arielnmz, Sie können die Datei mithilfe der Parameter komprimieren -compress jpeg -quality 50. Siehe meine Antwort
Michael Schmid
36

Wenn ich einige Scans zu einer PDF-Datei zusammenführen möchte, gehe ich folgendermaßen vor:

pdfjoin --a4paper --fitpaper false --rotateoversize false scan01.png scan02.png

Auf diese Weise erhalten Sie ein PDF-Dokument mit der Seitengröße DIN-A4, in dem jede pngDatei auf einer eigenen Seite zentriert ist. Bilder, die für eine DIN-A4-Seite zu groß sind, werden proportional an eine Seite angepasst. Kleinere Bilder werden nicht in der Größe geändert (nicht vergrößert).

Sie müssen alle pngDateien in der Befehlszeile benennen , können aber auch Platzhalter verwenden, um z. B. alle PNG-Dateien im aktuellen Verzeichnis zusammenzuführen:

pdfjoin --a4paper --fitpaper false --rotateoversize false *.png

Der pdfjoinBefehl ist Teil von PDFjam, wie in der Antwort von Jeremiah Willcock erwähnt. Sie müssen also höchstwahrscheinlich ein Paket mit dem Namen pdfjamoder texlive-extra-utilsmit Ihrem Distribution-Paketmanager installieren . PDFjam kann pngseit Version 2.07, die am 13.11.2010 veröffentlicht wurde, Dateien als Eingabe verwenden.

Pascal Kolophonium
quelle
Anscheinend ist pdfjoin weg und es gibt nur noch ein anderes Tool namens pdfunite, das nur mehrere PDF-Dateien zu einer kombiniert ...
Gregor
1
@ Gregor Warum sagst du, dass pdfjoin weg ist?
Pascal Rosin
@Pascal_Rosin konnte es weder in Debian noch in Arch-Repositories finden ...
Gregor
2
pdfjoinist texlive-extra-utilsauf einigen Plattformen im Paket verfügbar. Sie können es auch immer von der Quelle installieren.
Mahmoud Al-Qudsi
10

Das Konvertierungswerkzeug von ImageMagick ist meine Präferenz.

Das Konvertierungsprogramm ist Mitglied der ImageMagick-Tool-Suite. Verwenden Sie diese Option, um zwischen Bildformaten zu konvertieren sowie die Größe eines Bilds zu ändern, zu verwischen, zuzuschneiden, zu entflecken, zu zittern, zu zeichnen, zu drehen, zu verbinden, erneut abzutasten und vieles mehr.

convert [input-option] input-file [output-option] output-file`

Wenn Sie möchten, dass die Bilddateien (und damit ihre Qualität und Dateigröße) unverändert bleiben, und einfach einen PDF-Container um sie legen:

convert In.png In-2.png Someother-*.png Result.pdf

Wenn Sie eine kleinere Dateigröße wünschen und mit einem Qualitätsverlust einverstanden sind, können Sie diese zuerst in das JPEG-Format konvertieren. (ImageMagick unterstützt auch das Ändern der PNG-Komprimierungsstufe, aber normalerweise verwenden Ihre Eingabedateien bereits die höchste Stufe.)

convert 1.png 2.png -compress jpeg -quality 50 Result.pdf

Verwenden Sie für die qualityOption einen Wert zwischen 0 und 100 .

Alternativ können Sie eine niedrigere Dateigröße (und -qualität) erreichen, indem Sie die Bilder auf eine bestimmte Auflösung neu abtasten.

convert *.png 2.png -resample 300 Result.pdf

Der Wert für resamplebezieht sich auf die Anzahl der Pixel pro Zoll. ImageMagick liest die ursprüngliche Dichte aus dem EXIF-Teil der Eingabebilder und fällt auf 72 dpi zurück. Mit dem densityParameter können Sie eine benutzerdefinierte Auflösung für die Eingabebilder festlegen.

Sie können kombinieren natürlich auch compress, qualityund resampleParameter.

Michael Schmid
quelle
Weiß hier jemand, wie man den Vorgang zurücksetzt?
Andrei Cioara
Die Bilddateien werden nicht gelöscht, während Sie sie zur Beruhigung kopieren können. Ich musste auch das Problem stackoverflow.com/questions/42928765/… beheben, bevor es funktionierte.
Audrius Meskauskas
Wenn Sie
Probleme
5

Ich habe das gestohlen, aber das ist die Lösung, die ich von Jeremiah Willcock und einer anderen Antwort-Website verwendet habe. Im Moment nicht durch die Geschichte graben. Ich habe gelogen, ich habe gelogen. (Tully @ https://askubuntu.com/a/626301 )
Ich brauchte eine Datei, die klein genug war, um eine E-Mail zu senden.

So kombinieren Sie Bilder zu einer PDF-Datei (verwenden Sie im Arbeitsverzeichnis die Befehlszeile:

user@box:/home/user/scans/:$ 
convert 1.png 2.png convertoutput.pdf

So verkleinern Sie nach dem Kombinieren mit Ghostscript (ich habe es fast auf dem KDE-Standardsystem verwendet):

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
   -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true \
   -r150 -sOutputFile=output.pdf convertoutput.pdf

Meine Datei hatte 14 Bilder (19 MB nach der Konvertierung, gs machte es 1,6 MB, die Qualität war immer noch großartig). Die Ausgabedatei wird aufgerufen output.pdf.

pctech101
quelle
Sie können die Datei mithilfe der Parameter direkt mit convert konvertieren-compress jpeg -quality 50 . Siehe meine Antwort
Michael Schmid
@MichaelSchmid Die Komprimierung mit Konvertierung ist nicht so effektiv. Es reduziert nur die JPEG-Qualität, während die gs-Lösung die Auflösung ändert. Wenn Sie es mit einem hochauflösenden Bild versuchen, werden Sie sehen, wie groß der Größenunterschied ist, selbst wenn Sie sich für eine extrem niedrige JPG-Qualität entscheiden.
Mak
Ja, Resampling ist möglicherweise effektiver als die JPEG-Komprimierung. Und ImageMagick unterstützt das auch. Ich habe diese Option in meiner Antwort hinzugefügt.
Michael Schmid