Quando converto um arquivo pdf em vários arquivos jpg usando
convert -quality 100 file.pdf page_%04d.jpg
Tenho perda de qualidade apreciável.
No entanto, se eu fizer o seguinte, não haverá perda de qualidade (perceptível):
Inicie o gscan2pdf, escolha arquivo-> importar (e escolha arquivo.pdf). Em seguida, vá para o diretório temporário de gscan2pdf. Existem muitos arquivos pnm (um para cada página do arquivo pdf). Agora eu faço
for file in *.pnm; do
convert $file $file.jpg done
Os arquivos jpg resultantes são (aproximadamente) da mesma qualidade que o pdf original (que é o que eu quero).
Agora, minha pergunta é: se existe uma maneira simples de linha de comando para converter o arquivo pdf em um monte de arquivos jpg sem perda perceptível de qualidade? (A solução acima é muito complicada e consome tempo).
Respostas:
Não está claro o que você quer dizer com "perda de qualidade". Isso pode significar muitas coisas diferentes. Você poderia postar algumas amostras para ilustrar? Talvez corte a mesma seção das versões de baixa qualidade e de boa qualidade (como um PNG para evitar mais perdas de qualidade).
Talvez você precise usar
-density
para fazer a conversão em um dpi mais alto:(Você pode anexar
-units PixelsPerInch
ou,-units PixelsPerCentimeter
se necessário. Minha cópia é padronizada como ppi.)Atualização: como você apontou,
gscan2pdf
(do jeito que você está usando) é apenas um invólucro parapdfimages
(do poppler ).pdfimages
não faz o mesmo queconvert
quando recebe um PDF como entrada.convert
pega o PDF, renderiza-o com alguma resolução e usa o bitmap resultante como imagem de origem.pdfimages
procura no PDF por imagens de bitmap incorporadas e exporta cada uma delas para um arquivo. Ele simplesmente ignora qualquer comando de desenho de texto ou vetor no PDF.Como resultado, se o que você tem é um PDF que é apenas um invólucro em torno de uma série de bitmaps,
pdfimages
fará um trabalho muito melhor de extraí-los, porque fornece os dados brutos no tamanho original. Você provavelmente também deseja usar a-j
opçãopdfimages
, porque um PDF pode conter dados JPEG brutos. Por padrão,pdfimages
converte tudo para o formato PNM, e converter JPEG> PPM> JPEG é um processo com perdas.Então tente
Você pode ou não pode precisar a seguir que com um
convert
a.jpg
passo (dependendo do que bitmap formatar o PDF estava usando).Eu tentei esse comando em um PDF que eu havia criado a partir de uma sequência de imagens JPEG. Os JPEGs extraídos eram byte por byte idênticos às imagens de origem. Você não pode obter qualidade superior a isso.
fonte
convert
também é impraticável para PDFs grandes. Por exemplo, foram necessários 45 GB de memória para processar um livro de 700 páginas de 6 megapixels. Também demorou cerca de mil vezes mais quepdfimages
.Como disse a resposta do aluno,
pdfimages
é uma boa opção. Da minha experiênciags
econvert
exportar para baixa qualidade, independentemente se você especificar o dpi correto.Mas se o pdf tiver várias camadas por página
pdfimages
não funcionar e extrair as camadas como imagem separada, nesse caso, é melhor usarinskcape
para exportar a página como é vista.Estes são os comandos que eu uso:
O primeiro comando divide todas as páginas. O segundo comando converte página por página em png. Você pode mantê-los png ou apenas convertê-los em jpeg
Comparado com
pdfimages
,gs
e ImageMagick éconvert
que eu encontrarinkscape
de exportação o melhor em qualidade.fonte
a resposta do @cjm está correta, mas se você gosta de GUI e não deseja renderizar todas as páginas em pdf, apenas para obter uma imagem, use gimp.
Abra um pdf com o gimp e você receberá uma janela de importação com todas as páginas renderizadas. Escolha as páginas que você deseja e defina a resolução para 600 pix / polegada (eu achei 300 muito nítidas em muitos casos). Salve no formato desejado com "Arquivo / Exportar"
De qualquer forma, deve haver um sinalizador para selecionar as páginas desejadas na linha de comando.
fonte
Olhando para o código-fonte do gscan2pdf, notei que ele usa o pdfimages. Então
pdfimages file.pdf page
resultaria empage-001.ppm, page-002.ppm
etc.fonte
O que não está claro em sua pergunta é se você fala sobre texto e gráficos vetoriais em seu PDF ou se seu PDF contém imagens incorporadas.
Depois de ler o que é o gscan2pdf, meu palpite é que seus arquivos PDF contêm (apenas) gráficos incorporados.
convert
essencialmente "imprime" seu pdf sem considerar qual é o conteúdo. Como o @cjm sugere, convém alterar a densidade da impressão. Essa é a única maneira de aumentar a qualidade dos gráficos vetoriais.Se, em vez disso, o que você deseja fazer é extrair imagens incorporadas (como o gscan2pdf parece fazer), supondo que a densidade geralmente leve a perda de qualidade ou qualidade superior à necessária (e desperdício de espaço em disco). A resposta então é extrair a imagem em vez de imprimir o pdf. Consulte este artigo, que defende basicamente o uso
pdfimages
para extrair imagens sem perda de qualidade.fonte