Ich möchte einige Dateien von JPEG nach PDF konvertieren. Ich benutze folgenden Befehl.
$ convert image1.jpg image1.pdf
Aber ich habe 100 Bilder. Wie soll ich sie alle in entsprechende PDFs konvertieren?
Ich habe es versucht
$ convert image*.jpg image*.pdf
Es funktioniert nicht
command-line
wildcards
conversion
imagemagick
Pratik Deoghare
quelle
quelle
Antworten:
In der Bash:
quelle
-
problemen anfangen , ansonsten.mogrify
viel weniger tippend. Siehe meine Antwort.Hierfür können Sie den
mogrify
Befehl verwenden. Normalerweise werden Dateien direkt geändert, aber beim Konvertieren von Formaten wird eine neue Datei geschrieben (nur die Erweiterung wird an das neue Format angepasst). Somit:(Wie bei Enzotibs
./*.jpg
wird--
verhindert, dass fremde Dateinamen als Schalter interpretiert werden. Die meisten Befehle--
bedeuten, dass an diesem Punkt nicht mehr nach Optionen gesucht wird.)quelle
mogrify
anstatt zu verwendenconvert
. Dies funktioniert für 100 Dateien, aber die Verwendung von Globbing mit*.jpg
wird nicht auf Tausende von Dateien skaliert. Dies kann erreicht werden, indem der Befehl in einem einfachen Einzeiler mitfind
kombiniert wird .*.jpg
und*.png
Dateien in eine einzige*.pdf
? Beachten Sie, dass es sich um nummerierte Dateien handelt (z. B.1.jpg 2.png 3.png 4.jpg
) und dass die Reihenfolge in der PDF-Ausgabe beibehalten werden sollte.*.jpg
in*.png
's in Schritt 1 und führen Sie das Äquivalent Ihrer Antwort in Schritt 2 durch ...schnellere aber ungewöhnliche Syntax:
Läuft parallel (mit https://www.gnu.org/software/parallel/ ). Ich habe noch kein Multithreading bemerkt
convert
, das die effektive Parallelisierung einschränken würde. Wenn dies Ihr Anliegen ist, finden Sie im Kommentar unten eine Methode, um sicherzustellen, dass kein Multithreading auftritt.quelle
parallel
), indem die Umgebungsvariable festgelegt wirdMAGICK_THREAD_LIMIT=1
.https://gitlab.mister-muffin.de/josch/img2pdf
Bei allen vorgeschlagenen Lösungen mit ImageMagick werden die JPEG-Daten vollständig dekodiert und neu kodiert. Dies führt zu einem Generationsverlust und einer zehn- bis hundertmal schlechteren Leistung
img2pdf
.Kann mit installiert werden,
pip img2pdf
vorausgesetzt, Sie haben Abhängigkeiten (zBapt-get install python python-pil python-setuptools libjpeg-dev
oderyum install python python-pillow python-setuptools
).quelle
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
. IMHO verdient diese Antwort mehr Gegenstimmen. In der Tatconvert
scheitert hier, besteht einenimg2pdf
solchen Test und enthält sogar viele Optionen zum Festlegen der Bildgröße, Seitengröße usw., um das erzeugte PDF an Ihre Bedürfnisse anzupassen.img2pdf
ist in den regulären Ubuntu 16.04-Repositories verfügbar, ohne dass manuelle Vorgänge erforderlichpip
sind, und Sie behalten den Vorteil von Updates.Hier ist eine Möglichkeit, die die besten der oben genannten Vorschläge in einer einfachen, effizienten und robusten Befehlszeile kombiniert:
Es funktioniert gut mit Dateinamen, die mit einem
-
oder Leerzeichen beginnen. Beachten Sie die Verwendung von-iname
denen die Groß- und Kleinschreibung - Version ,-name
so dass es arbeiten wird.JPG
genauso gut wie.jpg
.Dies wird verwendet
find
, um die Dateiliste abzurufen, anstatt ein Shell-Globbing mit dem*.jpg
Platzhalter durchzuführen, was auf einigen Systemen zu einem Fehler führen kann, dass die Argumentliste zu lang ist. Obwohl @enzotib in einem Kommentar verweist, unterscheidet sich das Verhalten der Verwendung von Globbing in einer for-Schleife von dem für die Argumente eines Befehls .Auch
find
Unterverzeichnisse handhaben , während Shell Globbing nicht , wenn Sie Shell-spezifische Funktionen wie die haben passieren**/*jpg
rekursive Globbing Syntax in zsh.BEARBEITEN: Ich dachte, ich würde eine weitere nützliche Funktion hinzufügen, an
find
die ich dachte, nachdem ich einen Kommentar von @IlmariKaronen gelesen hatte, in dem es darum ging, den Befehl erneut auszuführen und nur Dateien zu konvertieren, die sich seit der ersten Ausführung geändert haben.Beim ersten Durchlauf können Sie
touch
eine Zeitstempeldatei erstellen, nachdem die Konvertierung abgeschlossen ist.Fügen Sie
-newer timestamp
dann denfind
Ausdruck hinzu, um die Teilmenge der Dateien zu bearbeiten, deren letzte Änderungszeit neuer ist als die Zeitstempeldatei. Aktualisieren Sie die Zeitstempeldatei nach jedem Lauf.Dies ist ein einfacher Weg, um zu vermeiden, dass Sie auf ein Makefile zurückgreifen müssen (es sei denn, Sie verwenden bereits eines), und ein weiterer guter Grund, warum es sich lohnt, es zu verwenden,
find
wann immer es möglich ist.quelle
Sie können dies
convert
direkt mit tun . Dies finden Sie am Ende der ImageMagicks-Site über die Befehlszeilenverarbeitung .quelle
convert *.jpg -adjoin output.pdf
für eine kombinierte pdfIch habe das folgende Makefile für etwas Ähnliches verwendet:
Jetzt kann ich einfach laufen
make
und ich bekomme PNG-Dateien für jede SVG-Datei, die herumliegt.Bearbeiten
Wie gewünscht:
origs/foo.svg
wirdfoo.png
)all: $(PNG)
definiert, dass das Ziel "all" von allen PNGs abhängt%.png: origs/%.svg
Definiert, dass die Datei $ X.png von origs / $ X.svg abhängt und durch Aufruf generiert werden kannconvert ... $< $@
.$<
ist die Abhängigkeit und und$@
ist der Zielnamequelle
make
diese und nur die geänderten PDF-Dateien wiederhergestellt.make
scheint etwas zu kompliziert, wenn ein einfacher Einzeiler den Trick macht.find
Sie nicht auf ein Makefile zurückgreifen müssen.Ein winziges Skript würde den Trick machen. (getestet mit ksh88 unter Solaris 10)
script.ksh
Dann können Sie ausführen
find
, um das Skript auszuführen:Beachten Sie, dass beide
script.ksh
und derfind
Befehl, den ich Ihnen gegeben habe, je nach Betriebssystem und verwendeter Shell unterschiedliche Syntaxen haben können.quelle
pdfname=${1%.*}.pdf
ersetzt die Dateierweiterung durchpdf
. Diese Methode ist viel einfacher und funktioniert auch dann, wenn der Dateiname Sonderzeichen enthält. Fügen Sie in einem verwandten Hinweis doppelte Anführungszeichen um Variablenersetzungen ein.Das MacOS-Dienstprogramm
SIPS
Unter MacOS (Sierra) bietet das integrierte Apple-Befehlszeilendienstprogrammsips
umfassenden Zugriff auf alle Apple-Dienstprogramme für Rasterbilder. Dies schließt die Konvertierung vonjpg
nach mit einpdf
.Beispielsweise wird aus einem vorhandenen
jpg
Image mit niedriger Auflösung / kleiner Größe'cat.jpg'
(mit einer Größe von 8401 Byte) die folgende Befehlszeile erstellt'cat.pdf'
, ohne dass sich die Rasterauflösung ändert und die Dateigröße minimal erweitert wird:Konvertierung in das Adobe-
PSD
Rasterbildformat Eine ähnlichesips
Redewendung erstellt Adobe-kompatible*.psd
DateienBeachten Sie jedoch die 30-fache Dateigrößenerweiterung, die mit der Verwendung des Adope-
psd
Rasterformats einhergeht .Buchproduktion in Großbuchproduktion zu tun, Hunderte von Bildern beteiligt, die in verschiedenen Formaten geliefert werden, für mich ein bequemen Befehlszeilen Idiom hat Einsatz
ImageMagick
Dienstprogramme reine Rasterbilddateien erstellenpng
Format (mit allen Meta-Daten und Farbprofile stripped-out), dann verwenden Siesips
einen einheitlichen Satz von Farbprofilen und / oder Kommentare zu restaurieren und verwendensips
auch die endgültige Ausgabe - Dateien (am häufigsten zu erzeugen*.png
,*.psd
oder*.pdf
Dateien).quelle
Leider
convert
ändert sich das Bild vorher, so dass der Qualitätsverlust des Originals, dasjpg
Sie verwenden müssen, minimalimg2pdf
ist. Ich verwende diese Befehle:1) So
pdf
erstellen Sie aus jedemjpg
Bild eine Datei, ohne die Auflösung oder Qualität zu beeinträchtigen:2) So verknüpfen Sie die
pdf
Seiten zu einer:3) Und zuletzt füge ich eine OCR-Textebene hinzu, die die Qualität des Scans in den PDFs nicht ändert, damit sie durchsuchbar sind:
quelle
Ich habe es mit imagemagick für die Konvertierung gelöst und parallel, um meinen Konvertierungsprozess zu beschleunigen:
quelle
Eine der einfachsten Möglichkeiten zum Konvertieren mehrerer Dateien besteht darin, in das Dateiverzeichnis im Linux-Terminal zu wechseln und Folgendes einzugeben:
quelle
Wenn Sie nur Bilddateien verwenden, möchten Sie möglicherweise das Comic-Archiv (.cbr, .cbz, .cbt, .cba, .cb7) verwenden.
Dies ist viel flexibler als PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
quelle