Extraindo imagens de fundo de um arquivo PDF?


8

Eu tenho um arquivo PDF contendo mapas do prédio em que trabalho, aqui:

http://www.libsys.und.edu/dev/FloorPlans_All.pdf

Os arquivos de origem originais foram perdidos e me pediram para extrair as imagens do mapa, de preferência sem o texto e os ícones que foram sobrepostos em cima deles. Isso provou ser irritantemente difícil.

Até agora, eu tentei os seguintes programas GUI:

  • Adobe Reader: permite selecionar o texto, mas não as imagens de fundo
  • FoxIt PDF Viewer: deixa-me selecionar texto, mas não as imagens de fundo
  • XPDF no Ubuntu 10.10: permite selecionar texto, mas não as imagens de fundo

E também os seguintes programas de linha de comando:

  • pdfimages: extrai os ícones indicando banheiros muito bem, mas não as imagens de fundo
  • pdftohtml: mesmo que pdfimages, mais ele faz um documento HTML mal marcado
  • pdfextract: same as pdfimages
  • convert: imagens salvas com sucesso, mas com o texto gravado nelas

Eu até tentei abrir o PDF manualmente em um editor de texto e extrair os objetos de fluxo, colando-os em um novo arquivo e salvando-o com uma extensão .jpg, .png ou .bmp (cada um por sua vez). Considerando o pouco que sei sobre a estrutura interna dos arquivos PDF, não é surpresa que isso não funcionou.

Então ... existe alguma maneira de recuperar as imagens do mapa desta coisa sem ter o texto e os ícones?


A maneira como geralmente resolvo esse tipo de tarefa: (1) Use qpdfpara converter as partes binárias em ASCII o máximo possível. (2) Use um editor de texto para tornar todo o texto invisível que eu não quero ver na tela ou em impressões (pode ser conseguido facilmente e sem danos à tabela XRef, alternando o sinalizador invisível ). (3) Re-destile o resultado com Ghostscript para reduzir seu tamanho, tanto quanto possível. - Infelizmente, o seu arquivo não está mais disponível para download para demonstrar o procedimento ...
Kurt Pfeifle

Respostas:


7

Você pode fazer o download da biblioteca XPDF em http://www.foolabs.com/xpdf/download.html para Linux e Windows. Em seguida, execute pdfimages -j input.pdf outpute você deve obter output-000.jpg, output-001.jpgetc. Além disso, confira http://linuxcommand.org/man_pages/pdfimages1.html para mais opções de uso.


1
Correção, parece que a imagem é um gráfico vetorial embutido diretamente no PDF. Tente abri-lo em algo como Inkscape ou Adobe Illustrator, que lida com gráficos vetoriais.
Mybluevan

Ah, ah! Os mapas são gráficos vetoriais - não admira que eu tenha tido tantos problemas! Inkscape parece ter aberto bem, e eu posso editá-lo para o conteúdo do meu coração. Obrigado!
Will Martin

2

Ok, depois de brincar com isso por 5 minutos, minha análise é que o PDF é ainda mais estranho do que eu pensava, e isso é dizer alguma coisa.

Não sabe qual é o seu orçamento, mas com o Acrobat Pro Extended 9, você pode usar:

A. Ferramentas, Edição Avançada, Ferramenta de Texto de Retoque

-Select All
-Right click, Properties
-Text tab
-Select a standard font (e.g. Arial), close
-Hit Delete

B. Ferramentas, edição avançada, ferramenta de objeto de retoque

-Selecione o objeto (você pode obter a maioria, mas não todos, deles (por exemplo, os ícones dos computadores dos alunos não podem ser selecionados) e, em seguida, excluir

Veja como ficou a página 1 após uma limpeza rápida: http://dl.dropbox.com/u/7434256/p1test.pdf


Estranho é subavaliação. Não conheço o histórico desse arquivo, mas o Acrobat Pro 8 nos causou problemas. O Inkscape fez o truque, graças a Deus. Agora, para converter tudo para alguns SVGs adequados que podemos gerar gráficos raster de ...
Will Martin

1
O trabalho que você fez no PDF original (que, infelizmente, não está mais disponível para mim) não é o melhor. Seu arquivo ainda é ~ 3 MByte. Ele contém muitos + lotes de objetos não utilizados. Ele ainda contém uma instância do /AAoperador (para Ação Automática ), tornando-se um arquivo PDF potencialmente perigoso. O Ghostscript foi capaz de reduzi-lo a 60 kByte sem perder nenhum conteúdo visível. (Os metadados contidos no arquivo se espalham por 17 objetos diferentes. Os metadados sugerem que há 17 revisões / modificações diferentes desse arquivo desde sua criação em 2011-01-18.)
Kurt Pfeifle

@Pipitas Estou feliz por ter verificado isso novamente, acontece Apache estava no servidor. O PDF original está disponível novamente. Ainda é irritante embora. Desde então, descobri que os mapas foram gerados a partir de arquivos DXF do AutoCAD, o que torna os gráficos vetoriais extremamente feios. Existem centenas de caminhos individuais em cada mapa, cada um deles com uma única linha com dois pontos finais. Isso provavelmente tornou mais fácil para um arquiteto alterar seções individuais da parede ou qualquer outra coisa, mas é uma dor na bunda para qualquer outra coisa.
Will Martin

@Will Martin: Ouch !, este é um arquivo PDF bastante grande, contendo muitas atualizações de arquivos internos e ocultos (e, portanto: lixo do ponto de vista do usuário). - 16 páginas em 16 MBytes são bastante "pesadas" para gráficos vetoriais aparentemente simples. Pelo menos 16 camadas diferentes ("Conteúdo Opcional" no jargão do PDF), uma para cada página. Eu prefiro não percorrer esta bagunça com um editor de texto só ...
Kurt Pfeifle

2
@Pipitas: Obrigado - pontos justos. Embora eu não descrevesse o que eu fazia como um "trabalho" - eu estava apenas demonstrando (depois de alguns minutos brincando) que isso era possível com o Acrobat. Garantia de devolução do dinheiro e tudo mais. ;)
Craig H

1

Pegue o PDF que foi feito por Craig H e otimize-o um pouco, executando-o através do Ghostscript. No Windows, a linha de comando é:

gswin32c.exe ^
   -o p1test-gs-optimized.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTIINGS=/prepress ^
    p1test.pdf

No Linux / Unix / Mac OS X, faça:

gs \
   -o p1test-gs-optimized.pdf \
   -sDEVICE=pdfwrite \
   -dPDFSETTIINGS=/prepress \
    p1test.pdf

Isso reduzirá o tamanho do arquivo de 3.000 kByte para cerca de 60 kByte sem perder conteúdo. Em seguida, importá-lo para o Inkscape (ou InDesign, Illustrator, ...) deve ser muito mais rápido ....


1

... você poderia tentar o Photoshop. Ele lê o PDF, e é "possível", originou-se no PS e, possivelmente, ainda tem as camadas ... mas é muito longo.


0

Em um ambiente Linux eu usei o pdfmod para extrair todas as imagens de uma só vez. Veja https://wiki.gnome.org/Apps/PdfMod ou, para usuários do Ubuntu, https://apps.ubuntu.com/cat/applications/pdfmod/

Para baixar e instalar no Ubuntu, basta digitar sudo apt-get install pdfmod.

  • Inicie o pdfmod GUI (digite no pdfmodpainel ou no terminal da linha de comando)
  • Abra o documento PDF
  • Selecione todas as páginas (ou qualquer uma das quais você queira extrair as imagens)
  • O item de menu Editar apresentará a opção de extrair quantas imagens puderem ser extraídas dentro do intervalo selecionado ( export n images, com n o número apropriado). Você também pode acessar este comando passando o mouse sobre a seleção e ativando o menu local (clique com o botão direito do mouse para o destro).
  • Uma vez que você vá em frente com isso, uma nova janela será aberta onde você seleciona o local para salvar as imagens.

Espero que isto ajude.


Por favor, leia Como recomendo o software para algumas dicas sobre como você deve recomendar o software. Forneça mais do que apenas um link, por exemplo, bem como algumas informações adicionais sobre o software em si e como ele pode ser usado para resolver o problema na pergunta. Você pode até incluir algumas linhas de comando de exemplo.
DavidPostill

@DavidPostill. Obrigado por apontar isso. Feito, eu acredito.
XavierStuvw

Muito melhor ...;)
DavidPostill

Agora eu sei o que eu posso exigir das respostas aos meus posts :-)
XavierStuvw

-1

Abra o documento na tela, amplie a imagem para torná-la o maior possível, mas tudo ainda estará visível. Pressione alt + prnt scrn (ou o equivalente em seu sistema operacional) e ele deve fazer uma captura de tela do programa. Agora abra a pintura ou o seu editor de imagem favorito (photoshop, gimp, etc) cole na foto e recorte tudo o que você não quer.


Isso também inclui os ícones que estão sobre a imagem de fundo nas imagens capturadas, além de usar a resolução da tela. Deve haver um caminho melhor.
Zachiel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.