A resposta atualmente aceita faz o trabalho, mas resulta em uma saída que é maior em tamanho e sofre com perda de qualidade.
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 -densitypara fazer a conversão em um dpi mais alto:
convert -density 300 file.pdf page_%04d.jpg
(Você pode anexar -units PixelsPerInchou, -units
PixelsPerCentimeterse necessário. Minha cópia é padronizada como ppi.)
Atualização: como você apontou, gscan2pdf(do jeito que você está usando) é apenas um invólucro para pdfimages(do poppler ). pdfimages
não faz o mesmo que convertquando recebe um PDF como entrada.
convert pega o PDF, renderiza-o com alguma resolução e usa o bitmap resultante como imagem de origem.
pdfimagesprocura 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, pdfimagesfará um trabalho muito melhor de extraí-los, porque fornece os dados brutos no tamanho original. Você provavelmente também deseja usar a -jopção pdfimages, porque um PDF pode conter dados JPEG brutos. Por padrão, pdfimagesconverte tudo para o formato PNM, e converter JPEG> PPM> JPEG é um processo com perdas.
Então tente
pdfimages -j file.pdf page
Você pode ou não precisa seguir isso com um converta .jpgpasso (dependendo do que formato bitmap do 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.