Je veux convertir des fichiers de jpeg en pdf. J'utilise la commande suivante.
$ convert image1.jpg image1.pdf
Mais j'ai 100 images. Comment devrais-je les convertir tous en fichiers PDF correspondants?
j'ai essayé
$ convert image*.jpg image*.pdf
Ça ne marche pas
command-line
wildcards
conversion
imagemagick
Pratik Deoghare
la source
la source
Réponses:
En bash:
la source
-
donne donne des problèmes, sinon.mogrify
saisie est beaucoup moins fréquente. Voir ma réponse.Vous pouvez utiliser la
mogrify
commande pour cela. Normalement, il modifie les fichiers sur place, mais lors de la conversion de formats, il écrit un nouveau fichier (il suffit de changer l'extension pour l'adapter au nouveau format). Ainsi:(Comme enzotib
./*.jpg
, cela--
empêche tout nom de fichier étrange d'être interprété comme un commutateur. La plupart des commandes reconnaissent--
le fait "arrêtez de chercher des options à ce stade".)la source
mogrify
au lieu deconvert
. Cela fonctionnera pour 100 fichiers, mais l'utilisation de la sélection avec*.jpg
ne permet pas de gérer des milliers de fichiers. cela peut être fait en combinant la commande dans une simple ligne avecfind
.*.jpg
et les*.png
fichiers à un seul*.pdf
? Notez qu'il s'agit de fichiers numérotés (par exemple,1.jpg 2.png 3.png 4.jpg
) et que cet ordre doit être maintenu / préservé dans la sortie pdf.*.jpg
en*.png
s à la première étape et exécuter l'équivalent de votre réponse à l'étape 2 ...syntaxe plus rapide mais inhabituelle:
Fonctionne en parallèle (en utilisant https://www.gnu.org/software/parallel/ ). Je n'ai pas encore remarqué de multi-threading
convert
, ce qui limiterait l'efficacité de la parallélisation. Si cela vous préoccupe, voir dans le commentaire ci-dessous une méthode permettant d'éviter tout multi-threading.la source
parallel
) en définissant la variable d'environnementMAGICK_THREAD_LIMIT=1
.https://gitlab.mister-muffin.de/josch/img2pdf
Dans toutes les solutions proposées impliquant ImageMagick, les données JPEG sont entièrement décodées et recodées. Il en résulte une perte de génération , ainsi que des performances "dix à cent" fois pires que
img2pdf
.Peut être installé à
pip img2pdf
condition d'avoir des dépendances (par exempleapt-get install python python-pil python-setuptools libjpeg-dev
ouyum install python python-pillow python-setuptools
).la source
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
. IMHO cette réponse mérite plus de votes positifs. En effet,convert
ici , échoue,img2pdf
réussit un tel test et inclut même de nombreuses options pour définir la taille de l’image, la taille de la page, etc. afin d’ajuster le fichier PDF généré à vos besoins.img2pdf
est disponible dans les dépôts réguliers d'Ubuntu 16.04, vous n'avez pas besoin d'opérations manuellespip
, et vous conservez l'avantage des mises à jour.Voici un moyen de combiner le meilleur des suggestions ci-dessus en une ligne de commande simple, efficace et robuste:
Cela fonctionne très bien avec les noms de fichiers qui commencent par un
-
ou contiennent des espaces. Notez l'utilisation-iname
qui est insensible à la casse version de-name
sorte qu'il fonctionne sur.JPG
tout aussi bien que.jpg
.Cela permet
find
d’obtenir la liste de fichiers au lieu de parcourir le shell avec le*.jpg
caractère générique, ce qui peut entraîner une erreur «Liste d’arguments trop longue» sur certains systèmes. Bien que @enzotib pointe dans un commentaire, l'utilisation de la suppression dans une boucle for diffère de celle utilisée pour les arguments d'une commande .De plus,
find
gérera les sous-répertoires, alors que l'éclatement du shell ne le sera pas, à moins que vous n'ayez des fonctionnalités spécifiques à celui-ci, comme la**/*jpg
syntaxe récursive de l'échantillonnage dans zsh.EDIT: J'ai pensé ajouter une autre fonctionnalité utile à
find
laquelle j'avais pensé après avoir lu un commentaire de @IlmariKaronen à propos de la réexécution de la commande et de la conversion uniquement des fichiers modifiés depuis la première exécution.Au premier passage, vous pouvez
touch
créer un fichier d’horodatage une fois la conversion terminée.Ajoutez ensuite
-newer timestamp
à l'find
expression pour agir sur le sous-ensemble de fichiers dont l'heure de dernière modification est plus récente que le fichier d'horodatage. Continuez à mettre à jour le fichier d'horodatage après chaque exécution.C'est un moyen facile d'éviter de devoir recourir à un Makefile (sauf si vous en utilisez déjà un) et c'est une autre bonne raison pour laquelle il vaut la peine d'être utilisé
find
chaque fois que cela est possible ... il a une expressivité polyvalente tout en restant concis.la source
Vous pouvez le faire
convert
directement. Ceci se trouve au bas du site ImageMagicks à propos du traitement en ligne de commande .la source
convert *.jpg -adjoin output.pdf
pour un pdf combinéJ'ai utilisé le fichier Make suivant pour quelque chose de similaire:
Maintenant, je peux juste courir
make
et obtenir des fichiers png pour chaque fichier svg qui se trouve autour.Modifier
Comme demandé:
origs/foo.svg
devientfoo.png
)all: $(PNG)
définit que la cible "tout" dépend de tous les PNG%.png: origs/%.svg
définit, le fichier $ X.png dépend de origs / $ X.svg et peut être généré par appelconvert ... $< $@
.$<
est la dépendance et et$@
est le nom de la ciblela source
make
nouveau reconvertira ceux, et uniquement ceux, qui ont été modifiés.make
semble un peu compliqué quand un simple paquebot fera l'affaire.find
pour ne pas avoir à recourir à un Makefile.Un petit script ferait l'affaire. (testé avec ksh88 sur Solaris 10)
script.ksh
Ensuite, vous pouvez exécuter
find
pour exécuter le script:Notez que les deux
script.ksh
et lafind
commande que je vous ai donnée peuvent avoir des syntaxes différentes selon le système d'exploitation et le shell que vous utilisez.la source
pdfname=${1%.*}.pdf
remplace l'extension du fichier parpdf
. Cette méthode est beaucoup plus simple et fonctionne même si le nom du fichier contient des caractères spéciaux. Sur une note associée, ajoutez des guillemets autour des substitutions de variables.L'utilitaire MacOS
SIPS
Sous MacOS (Sierra), l'utilitaire de ligne de commande intégré d'Applesips
fournit un accès complet à tous les utilitaires d'image raster d'Apple. cela s'avère inclure la conversion dejpg
enpdf
.Par exemple, à partir d' une basse résolution / de petite taille actuelle l'
jpg
image'cat.jpg'
(de la taille 8401 octets), la ligne de commande suivante crée'cat.pdf'
, sans changement de trame résolution et extension minimale de la taille du fichier:Conversion au
PSD
format d'image raster d'Adobe Unsips
idiome similaire crée des*.psd
fichiers compatibles avec AdobeNotez toutefois l'extension de 30 fois la taille du fichier associée à l'utilisation du
psd
format raster Adope .Production de livres Dans le cadre de la production de livres à grande échelle, comprenant des centaines d’images, fournies dans de nombreux formats, un idiome pratique en ligne de commande consiste à utiliser des
ImageMagick
utilitaires pour créer des fichiers d’images raster pures aupng
format (avec toutes les métadonnées et les les profils de couleur dépouillé-out), puis utilisezsips
pour restaurer un ensemble uniforme de profils de couleurs et / ou des commentaires, et utilisersips
aussi pour générer des fichiers de sortie ( le plus souvent*.png
,*.psd
ou des*.pdf
fichiers).la source
Malheureusement ,
convert
modifie l'image avant donc d'avoir une perte minimale de qualité de l'original ,jpg
vous devez utiliserimg2pdf
, j'utiliser cette commande:1) Ceci pour créer un
pdf
fichier à partir de chaquejpg
image sans perte de résolution ni de qualité:2) Ceci pour concaténer les
pdf
pages en une seule:3) Enfin, j’ajoute un calque de texte OCRed qui ne modifie pas la qualité de la numérisation dans les fichiers PDF, de sorte qu’il peut être interrogé:
la source
J'ai eu résoudre avec imagemagick pour la conversion et en parallèle pour accélérer mon processus de conversion:
la source
L'un des moyens les plus simples de convertir plusieurs fichiers consiste à accéder au répertoire de fichiers du terminal linux et à taper:
la source
Si vous utilisez uniquement des fichiers image, vous voudrez peut-être utiliser Comic Book Archive (.cbr, .cbz, .cbt, .cba, .cb7)
C'est beaucoup plus flexible que PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
la source