Quero converter alguns arquivos de jpeg para pdf. Eu estou usando o seguinte comando.
$ convert image1.jpg image1.pdf
Mas eu tenho 100 imagens. Como devo converter todos eles em pdfs correspondentes?
eu tentei
$ convert image*.jpg image*.pdf
Isso não funciona.
command-line
wildcards
conversion
imagemagick
Pratik Deoghare
fonte
fonte
Respostas:
Na festança:
fonte
-
dá problemas, caso contrário.mogrify
é muito menos digitado. Veja minha resposta.Você pode usar o
mogrify
comando para isso. Normalmente, ele modifica os arquivos no local, mas ao converter formatos, ele grava um novo arquivo (apenas alterando a extensão para corresponder ao novo formato). Portanto:(Como o enzotib
./*.jpg
, isso--
evita que nomes de arquivos estranhos sejam interpretados como opções. A maioria dos comandos reconhece--
como "pare de procurar opções neste momento".)fonte
mogrify
vez deconvert
. Isso funcionará para 100 arquivos, mas o uso de globbing com*.jpg
não é dimensionado para milhares de arquivos; isso pode ser feito combinando o comando em uma linha simples comfind
.*.jpg
e*.png
arquivos para um único*.pdf
? Observe que eles são arquivos numerados (por exemplo,1.jpg 2.png 3.png 4.jpg
) e que a ordem deve ser mantida / preservada na saída em pdf.*.jpg
's em*.png
' s na primeira etapa, e realizando o equivalente a sua resposta no passo 2 ...sintaxe mais rápida, mas incomum:
Executa em paralelo (usando https://www.gnu.org/software/parallel/ ). Ainda não notei nenhum multiencadeamento
convert
, o que limitaria a paralelização efetiva. Se essa é a sua preocupação, consulte o comentário abaixo para obter um método para garantir que não ocorra multiencadeamento.fonte
parallel
), configurando a variável de ambienteMAGICK_THREAD_LIMIT=1
.https://gitlab.mister-muffin.de/josch/img2pdf
Em todas as soluções propostas que envolvem o ImageMagick, os dados JPEG são totalmente decodificados e recodificados. Isso resulta em perda de geração e desempenho "dez a cem" vezes pior que
img2pdf
.Pode ser instalado
pip img2pdf
desde que você tenha dependências (por exemplo,apt-get install python python-pil python-setuptools libjpeg-dev
ouyum install python python-pillow python-setuptools
).fonte
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
. IMHO esta resposta merece mais votos positivos. De fato,convert
falha aqui,img2pdf
passa em um teste e até inclui muitas opções para definir o tamanho da imagem, o tamanho da página etc. para ajustar o pdf gerado às suas necessidades.img2pdf
está disponível nos repositórios regulares do Ubuntu 16.04, sem necessidade de operações manuais compip
ele e você mantém o benefício das atualizações.Aqui está uma maneira de combinar as melhores sugestões acima em uma linha de comando simples, eficiente e robusta:
Funciona bem com nomes de arquivos que começam com
-
ou contêm espaços. Observe o uso de-iname
qual é a versão que não diferencia maiúsculas de minúsculas,-name
por isso funcionará.JPG
tão bem quanto.jpg
.Isso é usado
find
para obter a lista de arquivos, em vez de o shell globbing com o*.jpg
curinga, o que pode resultar em um erro 'Lista de argumentos muito longa' em alguns sistemas. Embora como @enzotib aponte em um comentário, o comportamento de usar globbing em um loop for é diferente do que nos argumentos de um comando .Além disso,
find
ele manipulará subdiretórios, enquanto o globbing do shell não terá, a menos que você tenha recursos específicos do shell, como a**/*jpg
sintaxe do globbing recursivo no zsh.EDIT: Eu pensei em adicionar outro recurso útil,
find
depois de ler um comentário de @IlmariKaronen sobre executar novamente o comando e apenas converter arquivos que foram alterados desde a primeira execução.Na primeira passagem, você pode
touch
criar um arquivo de carimbo de data e hora após a conclusão da conversão.Em seguida, inclua
-newer timestamp
nafind
expressão para operar no subconjunto de arquivos cuja hora da última modificação é mais recente que o arquivo de carimbo de data / hora. Continue atualizando o arquivo de carimbo de data / hora após cada execução.Essa é uma maneira fácil de evitar o recurso a um Makefile (a menos que você já esteja usando uma) e é outra boa razão pela qual vale a pena usá-la
find
sempre que possível ... tem expressividade versátil e permanece concisa.fonte
Você pode fazer isso
convert
diretamente. Isso pode ser encontrado na parte inferior do site ImageMagicks, sobre o processamento de linha de comando .fonte
convert *.jpg -adjoin output.pdf
para um pdf combinadoEu usei o seguinte makefile para algo semelhante:
Agora posso apenas executar
make
e obter arquivos png para todos os arquivos svg existentes.Editar
Como pedido:
origs/foo.svg
torna - sefoo.png
)all: $(PNG)
define que o destino "todos" depende de todos os PNGs%.png: origs/%.svg
define, o arquivo $ X.png depende de origs / $ X.svg e pode ser gerado por chamadaconvert ... $< $@
.$<
é a dependência ee$@
é o nome do destinofonte
make
novamente irá reconverter esses e somente os PDFs que foram alterados.make
parece um pouco complicado demais quando uma simples linha de comando faz o truque.find
para que você não precise recorrer a um Makefile.Um pequeno script faria o truque. (testado com ksh88 no Solaris 10)
script.ksh
Então você pode executar
find
para executar o script:Observe que ambos,
script.ksh
e ofind
comando que eu dei a você, podem ter diferentes sintaxes dependendo do SO e do shell que você está usando.fonte
pdfname=${1%.*}.pdf
substitui a extensão do arquivo porpdf
. Esse método é muito mais simples e funciona mesmo que o nome do arquivo contenha caracteres especiais. Em uma nota relacionada, adicione aspas duplas em torno das substituições de variáveis.O utilitário MacOS
SIPS
No MacOS (Sierra), o utilitário de linha de comandosips
interno da Apple fornece acesso abrangente a todos os utilitários de imagem raster da Apple; isso inclui a conversão dejpg
parapdf
.Por exemplo, a partir de uma baixa resolução / de tamanho pequeno existente
jpg
imagem'cat.jpg'
(o tamanho de 8401 bytes), a seguinte linha de comando cria'cat.pdf'
, sem qualquer alteração na quadrícula-resolução mínima e expansão de tamanho:Conversão para o
PSD
formato de imagem raster da Adobe Umsips
idioma semelhante cria*.psd
arquivos compatíveis com a AdobeObserve, no entanto, a expansão em tamanho de arquivo de 30 vezes que é compatível com o uso do formato
psd
raster Adope .Produção de livros Na produção de livros em larga escala, envolvendo centenas de imagens, fornecidas em vários formatos, para mim, um idioma conveniente da linha de comando tem sido o uso de
ImageMagick
utilitários para criar arquivos puros de imagens rasterizadas empng
formato (com todos os metadados e perfis de cor despojado-out), em seguida, usarsips
para restaurar um conjunto uniforme de perfis de cor e / ou comentários, e usarsips
também para gerar arquivos de saída finais (mais comumente*.png
,*.psd
ou*.pdf
arquivos).fonte
Infelizmente,
convert
a imagem foi alterada antes, para ter uma perda mínima de qualidade do original quejpg
você precisa usarimg2pdf
, eu uso estes comandos:1) Isso para criar um
pdf
arquivo de cadajpg
imagem sem perda de resolução ou qualidade:2) Isso para concatenar as
pdf
páginas em uma:3) E, por último, adiciono uma camada de texto com OCR que não altera a qualidade da digitalização nos pdfs para que possam ser pesquisados:
fonte
Consegui resolver com imagemagick para conversão e paralelo para acelerar meu processo de conversão:
fonte
Uma das maneiras mais simples de converter vários arquivos é ir para o diretório de arquivos no terminal linux e digitar:
fonte
Se você usar apenas arquivos de imagem, talvez queira usar o Comic Book Archive (.cbr, .cbz, .cbt, .cba, .cb7)
Isso é muito mais flexível que o PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
fonte