Como extrair vetores de um arquivo PDF?

51

Eu tenho um arquivo PDF com imagens vetoriais dentro dele. (Fiz o download da Internet, portanto não tenho originais.)

Desejo extrair os vetores para poder sobrepor-los em outras imagens; use-os na mídia impressa ou em um site.

Como extraio os vetores específicos do arquivo PDF?

Existe, talvez, algum software que possa extrair os vetores de um arquivo PDF? (De preferência grátis.)

Devdatta Tengshe
fonte
@slhck: eu quis dizer gráficos vetoriais . Eu usei o Inkscape e funciona como esperado. Você pode colocar seu comentário como resposta, para que eu possa marcá-lo como aceito?
Devdatta Tengshe

Respostas:

49

Você pode usar o Inkscape , que é um aplicativo gratuito de gráficos vetoriais de código aberto e multiplataforma. Isso permitirá que você importe os arquivos PDF e selecione vetores incorporados. Você pode editá-los e processá-los como quiser.

Documentação detalhada está disponível no site do Inkscape.

Note que no Linux ele requer X11. Há também uma versão nativa do Windows.

Como alternativa, você pode experimentar o Adobe Illustrator (software pago).

slhck
fonte
2
No Linux, isso requer X11 - há também uma versão nativa do Windows (que eu usei muito bem para extrair um desenho vetorial de um PDF).
Mark Leighton Fisher
23

Embora o Inkscape seja uma excelente maneira de fazer isso, para aqueles que não possuem o X11, você também pode extrair páginas individuais de um PDF para o formato SVG usando os poppler-utils na linha de comando. Por exemplo, para extrair apenas a página 30:

$ pdftocairo -f 30 -l 30 -svg  somehugemanual.pdf  myextractedpage.svg

Você pode usar seu editor de vetores favorito (o meu é o Inkscape) para isolar a imagem do texto.

Como alternativa, se você é um usuário de linha de comando hardcore, pode extrair para EPS (postscript encapsulado) e usar sedpara ocultar todo o texto (que acontece entre as linhas BT e ET para pdftocairo). Aqui está como:

$ pdftocairo -f 30 -l 30 -eps  manual.pdf  - | sed '/^BT$/,/^ET$/ d' > myimage.eps

E, se você é realmente louco para evitar o uso do X11, pode até encolher a caixa delimitadora da imagem na linha de comando usando o eps2epscomando do Ghostscript :

$ eps2eps myimage.eps myimage-bb.eps

Eu testei isso e funciona muito bem. No entanto, pessoalmente, acho mais fácil usar o Inkscape.

hackerb9
fonte
Marque com +1 sua linha de comando retira todo o texto .. mas você também sabe retirar todas as imagens? I'am procurando uma solução onde apenas o gráfico vetorial é deixado :)
clarkk
Isso funciona para você? cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9
1
mas é possível verificar se o arquivo eps possui um gráfico vetorial? :)
clarkk
1
Suponho que você possa usar o eps2eps do Ghostscript para destilá-lo até a menor caixa delimitadora e ver se está completamente vazio. Mas isso está começando a se tornar uma nova pergunta. Fique à vontade para perguntar e tenho certeza que, se eu não responder, alguém responderá.
hackerb9
1
@ hackerb9 obrigado, agora o eps é legível, mas a imagem está em uma densidade muito baixa e ainda resta algum texto ao seu redor. O pdf está aqui e a imagem está na página 7
rtrtrt