Как less отображает PDF-файлы?

Как less отображает PDF-файлы?

Я пробовал несколько программ: pdftotext, pdf2txt.py, ... Все они могут извлекать текст из PDF-файлов, но та, которая делает это лучше, — это good ol' less: текст из PDF имеет правильную разметку. Как less делает это? Использует ли она какую-либо библиотеку или встроена в обработку PDF?

Я спрашиваю, потому что хотел бы использовать эту функциональность программно, без необходимости запускать less как внешнюю программу (я работаю на Python).

Моя система такова:

» 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

решение1

Ваш дистрибутив, вероятно, использует популярный lesspipe.shскрипт. Проверьте LESSOPENпеременную окружения.

Этот скрипт существует во многих вариациях. Я рассматриваю версию Gentoo. В ней вы найдете следующую строку:

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

Это означает, что он попробует выполнить эти команды в указанном порядке. $1— это имя файла.

Другая версияиспользует следующую команду:

pdftohtml -stdout "$t" | parsehtml -

Связанный контент