Como converter PDF para imagem?

327

Eu tenho o requisito de converter páginas PDF em imagens. Há uma imagem de plano de fundo com algum texto escrito; portanto, quando eu a salvo como imagem, apenas a imagem de plano de fundo é salva.

Existe algum software disponível para o mesmo, para que a página completa possa ser convertida em imagem?

Deependra Solanky
fonte
Aparentemente, também é possível com o Inkscape: stackoverflow.com/a/15484727/32453
rogerdpack

Respostas:

299
  1. Instale o imagemagick .

  2. Usando um terminal em que o PDF está localizado:

    • Para o documento completo:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Para uma única página:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

Através do qual:

  • PNG, JPG ou (virtualmente) qualquer outro formato de imagem pode ser escolhido.

  • -density xxxdefinirá o DPI como xxx(comum são 150 e 300).

  • -quality xxxdefinirá a compactação para xxxos formatos de arquivo PNG, JPG e MIFF (100 significa sem compactação).

  • [666]converterá apenas a 667ª página em PNG (numeração com base em zero, assim [0]como a 1ª página).

  • Todas as outras opções (como recorte, escala de cinza etc.) podem ser visualizadas no site do Image Magic .

Vida binária
fonte
2
A resposta como está funciona, mas a resolução é muito ruim. Portanto, atualmente não é uma resposta que seja útil. Talvez se convert tiver alguns parâmetros que possam ser especificados, isso possa mudar.
Elias Lynn
48
Esta resposta é muito mais elevados de qualidade askubuntu.com/a/50180/11929
Elias Lynn
6
Você pode alterar a densidade adicionando o -density 300parâmetro
OHLÁLÁ 1/15
4
Então, alguém pode confirmar que especificar a densidade a torna "tão boa" quanto as outras respostas aqui, ou não? Além disso, como uma nota de seguidores, ImageMagick chama por "ghostscript" para realmente converter de PDF para PNG ex: gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1e se você conseguir convert: no images defined output.pngisso significa que você não tem ghostscript instalado ...
rogerdpack
4
Analisando PDF em imagemagick foi desativado - bugs.archlinux.org/task/59778 - que pode ser ativado manualmente através da edição /etc/ImageMagick-7/policy.xmldo arquivo e remoção PDFde<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jezor
393

Você pode usar pdftoppmpara converter um PDF em PNG:

pdftoppm input.pdf outputname -png

Isso produzirá cada página no PDF usando o formato outputname-01.png, 01sendo o índice da página.

Convertendo uma única página do PDF

pdftoppm input.pdf outputname -png -f {page} -singlefile

Mude {page}para o número da página. É indexado em 1, então -f 1seria a primeira página.

Especificando a resolução da imagem convertida

A resolução padrão para este comando é 150 DPI. Aumentá-lo resultará em um tamanho de arquivo maior e em mais detalhes.

Para aumentar a resolução do PDF convertido, adicione as opções -rx {resolution}e -ry {resolution}. Por exemplo:

pdftoppm input.pdf outputname -png -rx 300 -ry 300
enzotib
fonte
24
Muito obrigado. Qualidade muito melhor do que com imagemagick ou graphicsmagick!
precisa saber é
7
pdftoppm é muito mais rápido do que converso
Zuo
4
Isso é realmente muito melhor que o imagemagick. Imagemagick realmente mudou as cores de uma maneira inesperada no meu caso!
NoBackingDown 17/09/2015
13
isso é bom !, mas é um pouco mais fácil escrever em -r 300vez de especificar as resoluções xey independentemente quando você deseja defini-las com o mesmo valor.
Página
2
Tive muito mais sucesso com o pdftoppm do que com o imagemagick.
Michael Hays
22

O IIRC GIMP é capaz de usar PDFs, ou seja, convertê-los em imagens. Então, se você deseja editar as imagens imediatamente, o GIMP é seu amigo.

tesseract
fonte
O GIMP pode de fato abrir PDFs, cada página como uma camada. Escolher "Exportar como" parece salvar apenas a camada atual, mas você pode excluir facilmente a camada após exportar e executar "Exportar como" novamente.
Dan Dascalescu
12

A resposta atualmente aceita faz o trabalho, mas resulta em uma saída que é maior em tamanho e sofre com perda de qualidade.

O método na resposta dada aqui resulta em uma saída que é comparável em tamanho à entrada e não sofre perda de qualidade.

TLDR - Uso pdfimages:pdfimages -j input.pdf output

Citando a resposta vinculada:

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.

Anmol Singh Jaggi
fonte
8

Se os seus PDFs forem digitalizados, as imagens já serão armazenadas como parte do PDF. você simplesmente precisará extraí-los com pdfimages:

pdfimages my-file.pdf prefix 
VitoshKa
fonte
2
Esta é a solução perfeita para PDFs digitalizados, pois com isso você pode, com um comando, extrair os jpgs originais e sem recompressões adicionais.
Jose Gómez
3

Para obter uma única página do gm convert, adicione [N] (com N o número da página começando em 0) ao nome do PDF, ou seja, gm convert foo.pdf[11] out.pngpara obter a 12ª página do PDF.

Para pdftoppmuso -f N -singlefile, onde N é o número da página iniciando em 1, ou seja, pdftoppm -f 12 -singlefile foo.pdf outpara o mesmo resultado. Parece sempre adicionar ".png" ao nome do arquivo de saída e não há como parar isso.

user3080602
fonte
2

Você pode usar convert e especificar uma densidade mais alta usando a -densityopção

por exemplo. convert -d 300 foo.pdf bar.png

Arjun
fonte
você pode explicar mais sobre o que é densidade e o que ele pode fazer?
24414 rjd
1
@AgentCool Especifica a densidade da imagem horizontal e vertical (em ppi).
Arjun
2

Se você só deseja converter uma página específica de um PDF para um PNG, você pode canalizar pdftkpara convert( descrito acima ) como este:

pdftk document.pdf cat 12 output - | convert - document-page-12.png
IQAndreas
fonte
1

O Master PDF Editor (versão 2.2) possui essa opção. Abra o arquivo PDF e vá para Arquivo> Exportar para> Imagens. Apresenta uma caixa de diálogo onde você pode definir opções diferentes para a saída. Extremamente útil. Espero que esta informação ajude.

Pressa
fonte
Está na versão gratuita ou paga? Na minha versão, a opção está acinzentada? Isso significa que eu preciso pagar? Existe uma versão paga?
Joshua Robison
0

O PDF Mod também permite exportar imagens de todas ou de páginas individuais de arquivos PDF.

  • Abrir arquivo PDF no PDF Mod
  • Selecionar página (s) -
  • Editar> Exportar imagem (s)
nilado
fonte