Mesclando imagens png em um arquivo pdf [fechado]

89

Como posso mesclar vários .pngarquivos em um arquivo PDF no Unix?

girar
fonte

Respostas:

149

Olhando a documentação do ImageMagick, pode ser tão fácil quanto:

convert 1.png 2.png myfile.pdf

Se isso não funcionar, o PDFjam afirma ser capaz de resolver seu problema.

Jeremiah Willcock
fonte
5
Isso é incrível. Tão fácil. Ele dimensiona automaticamente as imagens e tudo mais .. Eu adoro código aberto.
Nathan Wallace
Existe uma maneira de controlar a qualidade do documento ou o tamanho do arquivo PDF resultante? Preciso fazer upload de alguns documentos com um tamanho máximo de arquivo de 2,5 MiB. Tentei com a -qualityopção, mas o tamanho do arquivo é sempre ~ 9,5 MiB.
arielnmz
É possível anexar arquivos de imagem a um PDF existente?
Kiran Reddy de
3
Converta todos os arquivos em uma pasta de um tipo especificado usandoconvert *.jpg file.pdf
haakym
2
@arielnmz, você pode compactar o arquivo usando os parâmetros -compress jpeg -quality 50. Veja minha resposta
Michael Schmid
36

Se eu quiser mesclar algumas digitalizações em um arquivo PDF, faço o seguinte:

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

Isso fornece um documento PDF com tamanho de página DIN-A4, onde cada pngarquivo é centralizado em sua própria página. Imagens muito grandes para uma página DIN-A4 são redimensionadas proporcionalmente para caber em uma página. Imagens menores não são redimensionadas (não aumentadas).

Você deve nomear todos os pngarquivos na linha de comando, mas também pode usar curingas para, por exemplo, mesclar todos os arquivos png no diretório atual:

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

O pdfjoincomando faz parte do PDFjam, conforme mencionado na resposta de Jeremiah Willcock. Portanto, você provavelmente terá que instalar um pacote chamado pdfjamou texlive-extra-utilscom o gerenciador de pacotes da sua distros. PDFjam é capaz de usar pngarquivos como entrada desde a versão 2.07, lançada em 2013-11-13.

Pascal Rosin
fonte
parece que o pdfjoin se foi e agora existe apenas uma ferramenta diferente chamada pdfunite que só combina vários arquivos PDF em um ...
Gregor
1
@Gregor O que o faz dizer que o pdfjoin se foi?
Pascal Rosin
@Pascal_Rosin não conseguiu encontrá-lo no Debian nem nos repositórios Arch ...
Gregor
2
pdfjoinestá disponível no texlive-extra-utilspacote em algumas plataformas. Você sempre pode instalá-lo a partir da fonte também.
Mahmoud Al-Qudsi
10

A ferramenta de conversão da ImageMagick é minha preferência.

O programa convert é membro do conjunto de ferramentas ImageMagick. Use-o para converter entre formatos de imagem, bem como redimensionar uma imagem, desfocar, cortar, remover, pontilhar, desenhar, inverter, juntar, fazer uma nova amostra e muito mais.

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

Se você quiser que os arquivos de imagem (e, portanto, sua qualidade e tamanho) sejam alterados, basta colocar um contêiner PDF em torno deles:

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

No caso de desejar um tamanho de arquivo menor e não houver problemas com a perda de qualidade, você pode primeiro convertê-los para o formato JPEG. (ImageMagick também suporta a alteração do nível de compressão PNG, mas normalmente seus arquivos de entrada já estão usando o nível mais alto.)

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

Use um valor entre 0 e 100 para a qualityopção.

Como alternativa, você pode obter um tamanho de arquivo (e qualidade) mais baixos, reamostrando as imagens para uma determinada resolução.

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

O valor de resamplerefere-se ao número de pixels por polegada. ImageMagick lê a densidade original da parte EXIF ​​das imagens de entrada, caindo para 72 dpi. Você pode usar o densityparâmetro para definir uma resolução personalizada para as imagens de entrada.

Pode, claro, também combinar os compress, qualitye resampleparâmetros.

Michael Schmid
fonte
Alguém aqui sabe reverter a operação?
Andrei Cioara,
Os arquivos de imagem não são excluídos, mas você pode copiá-los para sua tranquilidade. Eu também tive o problema stackoverflow.com/questions/42928765/… para resolver antes de funcionar.
Audrius Meskauskas
Se você encontrar problemas para converter imagens em PDF e ver um erro dizendo 'converter não permitido', verifique esta resposta: askubuntu.com/questions/1127260/imagemagick-convert-not-allowed
Tuhin
Recentemente, a imagemagick nega a conversão de PDF por padrão. Veja esta pergunta se você encontrar isso para saber como alterar esta política. stackoverflow.com/questions/52998331/…
user2565010
5

Eu roubei isso, mas esta é a solução que usei de Jeremiah Willcock e outro site de respostas. Não cavar na história no momento. Eu menti, menti. (Tully @ https://askubuntu.com/a/626301 )
Eu precisava de um arquivo pequeno o suficiente para enviar por e-mail.

Para combinar imagens em um PDF (no diretório de trabalho, use a linha de comando:

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

Para encolher usando o ghostscript após a combinação (eu usei quase no sistema padrão kde):

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

Meu arquivo tinha 14 imagens (19 MB após a conversão, gs aumentou 1,6 MB, a qualidade ainda era ótima). O arquivo de saída é chamado output.pdf.

pctech101
fonte
Você pode compactar o arquivo diretamente com convert , usando os parâmetros -compress jpeg -quality 50. Veja minha resposta
Michael Schmid
@MichaelSchmid A compressão com convert não é tão efetiva. Isso apenas reduz a qualidade do jpeg, enquanto a solução gs altera a resolução. Se você tentar com uma imagem de alta resolução, verá como é grande a diferença de tamanho, mesmo que opte por qualidade jpg extremamente baixa.
mak
Sim, a reamostragem pode realmente ser mais eficaz do que a compactação JPEG. E ImageMagick também suporta isso. Eu adicionei essa opção em minha resposta.
Michael Schmid