Como menos exibe PDFs?

52

Eu tentei vários programas: pdftotext, pdf2txt.py, ... Todos eles podem extrair texto de PDFs, mas aquele que está fazendo o melhor trabalho é bom less: o texto do PDF tem um layout adequado. Como está menos fazendo isso? Está usando alguma biblioteca ou o processamento de PDF está embutido?

Estou perguntando porque gostaria de usar essa funcionalidade programaticamente, sem necessariamente ter que executar menos como um programa externo (estou fazendo python).

Meu sistema é:

» less --version
less 458 (GNU regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less

» uname -a
Linux polyphemus 3.13.0-53-generic #89-Ubuntu SMP Wed May 20 10:34:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
dangonfast
fonte

Respostas:

63

Sua distribuição provavelmente está usando o lesspipe.shscript popular . Verifique a LESSOPENvariável de ambiente.

Este script existe em muitas variações. Eu estou olhando para a versão do Gentoo. Nele, você encontrará a seguinte linha:

*.ps|*.pdf) ps2ascii "$1" || pstotext "$1" || pdftotext "$1" ;;

Isso significa que ele tentará esses comandos na ordem exibida. $1é o nome do arquivo

Outra versão usa o seguinte comando:

pdftohtml -stdout "$t" | parsehtml -
Daniel B
fonte
15
Graças, verifica-se que está usandopdftotext -layout $1 -
dangonfast
@ jeckyll2hide Você encontrou a explicação para obter melhores resultados com menos?
vvy
@vvy Provavelmente o -layoutinterruptor. ;)
Daniel B