Como descobrir ONDE uma fonte específica é usada em um documento PDF

20

Para um determinado PDF que usa várias fontes (por exemplo, no Acrobat Reader, as fontes usadas podem ser vistas ao selecionar Arquivos> Propriedades> Fontes), como posso descobrir onde uma determinada fonte é usada no documento (usando o Adobe Acrobat 7 , Reader ou uma ferramenta gratuita em PDF)

Só para esclarecer: não quero descobrir qual fonte é usada em um determinado pedaço de texto (sei como fazer isso usando o Acrobat 9 Professional, consulte esta pergunta sobre superusuário ). Em vez disso, quero descobrir onde uma fonte específica é usada.

Rabarberski
fonte
Você poderia responder ao comentário acima de @ Arjan?
Mehper C. Palavuzlar,
1
@Arjan & Mehper: Pronto
Rabarberski

Respostas:

15

Agora é um pouco antiga essa pergunta, mas eu vim aqui pelo Google, e outra pessoa também pode. Minha solução foi criar um perfil de comprovação (Acrobat 9 Pro) que apresentava erros nas informações da fonte. Clicando no nome da fonte nos resultados, pula para a página e destaca o texto. A desvantagem é que você obtém uma lista de todas as fontes em todas as páginas organizadas por página e não pelo nome da fonte, mas isso me proporcionou uma solução.

1) Crie um novo perfil de comprovação personalizado Avançado | Comprovação | Opções | Criar novo perfil de comprovação

2) Dê um nome ao perfil (Fontfinder, por exemplo)

3) Na janela esquerda da caixa de diálogo, clique em "Verificações personalizadas"

4) Na janela direita da caixa de diálogo abaixo da caixa em branco, clique no símbolo de adição para criar uma nova verificação e incluir no perfil atual

5) Clique em "texto" no grupo, a propriedade inferior é "Tamanho do texto". Selecione isso e clique em "Adicionar"

6) O painel abaixo agora tem mais opções. Clique nas opções suspensas provavelmente rotuladas como "igual a" e selecione "menor que"

7) Digite um valor grande no campo Número. Entrei 500

8) No canto superior esquerdo da caixa de diálogo, ao verificar o relatório de disparos como ..., digite algo como Tamanho do texto 500 pt ou menos e clique em OK. Deve haver uma nova verificação personalizada no painel com uma cruz vermelha ao lado. Se a cruz não estiver vermelha, clique no rótulo de verificação e selecione "erro" abaixo do painel

Repita as etapas acima para outra verificação de erro, mas altere a opção 500 para "maior que ou igual a" e verifique o relatório de acionamentos como texto 500 pt ou superior

9) Clique em OK na caixa de diálogo Editar perfil

10) Execute o perfil no seu PDF

Defino a fonte como erro em um tamanho de ponto grande para que todos os erros sejam relatados em um grupo. A segunda verificação é simplesmente para capturar qualquer fonte maior que isso. Suponho que você possa verificar o tamanho pt 50000 e obter o mesmo resultado.

user164577
fonte
5
Essa resposta ajudou muito. No entanto, na etapa 5, em vez de selecionar o Textgrupo, selecione o Fontgrupo Base Font Namee digite o nome da fonte, que funciona muito melhor.
Jesse
6

Aqui está uma maneira de descobrir, para cada página individual, qual conjunto de fontes é usado nela. (Desculpe, eu não conheço uma maneira de tornar o reconhecimento de local para o uso da fonte mais específico do que a página, sem recorrer a softwares comerciais expansivos, como o pdfToolbox4 da callassoftware.com ou o PitStop da Enfocus ' .)

Este método usa o pdffonts.exeutilitário XPDF , um Software Livre licenciado pela GPL:

  1. Acesse: http://www.foolabs.com/xpdf/download.html e faça o download: ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl4-win32.zip .
  2. Extraia o arquivo * .zip para algum diretório e localize os vários utilitários * .exe nele contidos.
  3. Agora, para mostrar todas as fontes usadas na página 22 de um documento, execute:

    pdffonts.exe -f 22 -l 22 c:\path\to\some\pdf.pdf
    
  4. Para ver todas as fontes usadas no documento completo, basta executar:

    pdffonts.exe c:\path\to\some\pdf.pdf
    
  5. Para obter uma lista de fontes usadas em cada página de um PDF de 22 páginas, use:

    for /l %i in (1,1,22) do ^
          (echo.PAGE %i & pdffonts -f %i -l %i c:\path\to\some\pdf.pdf)
    
Kurt Pfeifle
fonte
4
Esse método também funciona no Linux / Mac, exceto, é claro, que o binário é chamado pdffontse não pdffonts.exee o caminho usaria barras.
ShreevatsaR
1

No relatório criado pela Acrobax X Preflight, clique no botão "Mostrar no snap" no canto inferior esquerdo da janela do relatório e, na lista de janelas, clique em + Visão geral e + Páginas, cada página do pdf é listada , clique em + Página: 1, por exemplo, clique em + Fontes, as fontes da página são listadas, clique em uma fonte e o texto em que é usado será exibido na janela Visualização de snap de comprovação. Se você precisar, use o find in acrobat para localizar o texto. Descobri que ela nem sempre está na página relatada, mas a visualização de snap mostra com precisão em que texto uma fonte específica é usada, daí a necessidade de usar uma localização regular de texto.

Greg
fonte
0

Talvez não seja relevante para você se o PDF não foi originalmente criado no Word, mas, se for, você pode encontrar as fontes no Word usando a Pesquisa avançada, conforme descrito aqui .

Em resumo:

  1. Encontrar
  2. Avançado ...
  3. Formatar -> Fonte

etc. Você pode trabalhar o resto.

Shaul diz que eu apoio Monica
fonte
0

A seguir, um script que realiza isso no Linux ou em sistemas operacionais similares, usando apenas software de código aberto (qpdf e pdffonts).

#!/usr/bin/ruby

# usage:
#  find_page_where_font_is_used.rb file.pdf Nimbus
# Finds the first page in file.pdf where a font with a name containing Nimbus is used.
# Font names are matched in a case-insensitive way.
# Requires pdffonts, qpdf.

def die(message)
  $stderr.print "error in find_page_where_font_is_used.rb: #{message}\n"
  exit(-1)
end

def shell_out(command)
  output = `#{command}`
  result = $?
  if !(result.success?) then
    die("error in command #{command}")
  end
  return output.strip
end

def is_used_in_page_range(font,pdf,from,to)
  table = shell_out("pdffonts -f #{from} -l #{to} #{pdf}")
  if table=~/^[a-zA-Z0-9\+\-]*#{font}/i then
    return true
  else
    return false
  end
end

def search_for_font(font,pdf,from,to)
  print "Searching pages #{from}-#{to}.\n"
  if from==to then
    return from
  else
    mid = (from+to)/2
    if mid==to then mid=to-1 end
    if is_used_in_page_range(font,pdf,from,mid) then
      return search_for_font(font,pdf,from,mid)
    else
      return search_for_font(font,pdf,mid+1,to)
    end
  end
end

def main

  pdf = ARGV[0]
  font = ARGV[1] # can be a substring, e.g., Deja or Nimbus
  n = shell_out("qpdf --show-npages #{pdf}").to_i
  print "total pages = #{n}\n"
  if !is_used_in_page_range(font,pdf,1,n) then
    print "No font in #{pdf} has a name containing the string #{font} (case-insensitive).\n"
    exit(0)
  end
  p = search_for_font(font,pdf,1,n)
  print "The font first occurs on page #{p}.\nOutput of pdffonts for this page:\n"
  print shell_out("pdffonts -f #{p} -l #{p} #{pdf}")+"\n"
end

main
Ben Crowell
fonte
-1

Em algum lugar da internet, encontrei esse outro método que funciona, se você tiver o Adobe Acrobat (acho que isso funciona depois das 7).

Encontre Ferramentas> Editar texto do documento (estou lendo no meu Acrobat 10X, pode ser diferente na sua versão, mas você deve encontrar o que estou falando)

Depois que uma caixa de texto for selecionada, clique com o botão direito do mouse e observe as propriedades. Lá, ele dirá a fonte usada.

editado: encontrei o link para minha referência: http://www.deepbluesky.com/blog/-/extracting-font-information-from-pdf-files_35/

newyuppie
fonte
Como especificamente indicado na minha pergunta, o problema que você está resolvendo não é minha pergunta.
Rabarberski