pdftotext exe параметры командной строки
Как преобразовать PDF файл в текстовый
Решение вопроса вынесенного в заголовок достигается утилитой pdftotext. pdftotext — это утилита командной строки, которая преобразует PDF-файлы в обычный текст. Она имеет много опций, включая возможность указать диапазон страниц для преобразования, сохранить или нет исходную разметку текста, возможость задать окончания строк (unix, dos или mac) и даже умеет работать с PDF-файлами, защищенными паролем.
pdftotext является частью пакета poppler / poppler-utils / poppler-tools (в зависимости от используемого дистрибутива Linux). так что для получения утилиты вам потребуется установить весь пакет.
Установка
Debian, Ubuntu, Linux Mint и другие дистрибутивы Linux на основе Debian / Ubuntu:
В других дистрибутивах Linux используйте менеджер пакетов для установки пакета poppler / poppler-utils.
Использование
Где: M — номер страницы начала конвертирования, N — номер страницы окончания конвертирования, input.pdf — имя файла для преобразования в текст.
Хотите указать какие символы конца строки Mac, DOS или Unix использовать в получаемом тексте? Вы можете указать это, используя функцию -eol, затем mac, dos или unix. Например. для получения файла с символами конца строки Unix:
Если вы не хотите вставлять разрывы страниц между страницами, добавьте опцию -nopgbrk:
Для получения дополнительных опций запустите man pdftotext и pdftotext —help.
pdftotext
pdftotext − Portable Document Format (PDF) to text converter (version 4.03)
SYNOPSIS
pdftotext [options] [PDF-file [text-file]]
DESCRIPTION
Pdftotext converts Portable Document Format (PDF) files to plain text.
Pdftotext reads the PDF file, PDF-file, and writes a text file, text-file. If text-file is not specified, pdftotext converts file.pdf to file.txt. If text-file is ´-’, the text is sent to stdout.
CONFIGURATION FILE
Pdftotext reads a configuration file at startup. It first tries to find the user’s private config file,
/.xpdfrc. If that doesn’t exist, it looks for a system-wide config file, typically /usr/local/etc/xpdfrc (but this location can be changed when pdftotext is built). See the xpdfrc(5) man page for details.
OPTIONS
Many of the following options can be set with configuration file commands. These are listed in square brackets with the description of the corresponding command line option.
−f number
Specifies the first page to convert.
Specifies the last page to convert.
Maintain (as best as possible) the original physical layout of the text. The default is to ´undo’ physical layout (columns, hyphenation, etc.) and output the text in reading order. If the −fixed option is given, character spacing within each line will be determined by the specified character pitch.
Similar to −layout, but optimized for simple one-column pages. This mode will do a better job of maintaining horizontal spacing, but it will only work properly with a single column of text.
Similar to −simple, but handles slightly rotated text (e.g., OCR output) better. Only works for pages with a single column of text.
Table mode is similar to physical layout mode, but optimized for tabular data, with the goal of keeping rows and columns aligned (at the expense of inserting extra whitespace). If the −fixed option is given, character spacing within each line will be determined by the specified character pitch.
Keep the text in content stream order. Depending on how the PDF file was generated, this may or may not be useful.
Specify the character pitch (character width), in points, for physical layout, table, or line printer mode. This is ignored in all other modes.
Specify the line spacing, in points, for line printer mode. This is ignored in all other modes.
Text which is hidden because of clipping is removed before doing layout, and then added back in. This can be helpful for tables where clipped (invisible) text would overlap the next column.
Diagonal text, i.e., text that is not close to one of the 0, 90, 180, or 270 degree axes, is discarded. This is useful to skip watermarks drawn on top of body text, etc.
Sets the encoding to use for text output. The encoding−name must be defined with the unicodeMap command (see xpdfrc(5)). The encoding name is case-sensitive. This defaults to «Latin1» (which is a built-in encoding). [config file: textEncoding]
Sets the end-of-line convention to use for text output. [config file: textEOL]
Don’t insert page breaks (form feed characters) between pages. [config file: textPageBreaks]
Insert a Unicode byte order marker (BOM) at the start of the text output.
Specifies the left margin, in points. Text in the left margin (i.e., within that many points of the left edge of the page) is discarded. The default value is zero.
Specifies the right margin, in points. Text in the right margin (i.e., within that many points of the right edge of the page) is discarded. The default value is zero.
Specifies the top margin, in points. Text in the top margin (i.e., within that many points of the top edge of the page) is discarded. The default value is zero.
Specifies the bottom margin, in points. Text in the bottom margin (i.e., within that many points of the bottom edge of the page) is discarded. The default value is zero.
Specify the owner password for the PDF file. Providing this will bypass all security restrictions.
Specify the user password for the PDF file.
Don’t print any messages or errors. [config file: errQuiet]
Read config-file in place of
/.xpdfrc or the system-wide config file.
List all available text output encodings, then exit.
Print copyright and version information, then exit.
Print usage information, then exit. (−help and −−help are equivalent.)
Some PDF files contain fonts whose encodings have been mangled beyond recognition. There is no way (short of OCR) to extract text from these files.
EXIT CODES
The Xpdf tools use the following exit codes:
Error opening a PDF file.
Error opening an output file.
Error related to PDF permissions.
AUTHOR
The pdftotext software and documentation are copyright 1996-2021 Glyph & Cog, LLC.
Cага о пакетном конвертировании pdf в text
В прошлом году была заказана, как казалось на первый взгляд, простая работа: создать систему пакетной обработки файлов — содержащих 12-ти колоночную таблицу, данные из которой экспортировать в БД. Все бы ничего — да вот файлы оказались документами в pdf, а заказчик утверждал что другого формата для обработки предоставить никак не может.
Образец того самого pdf-а — в файле сохранена структура, но подчищены все данные.
Чтож, несмотря на предупреждения знающих людей, а предупреждали они ой как не зря — я за работу взялся и пережил вот такое приключение:
Начался поиск софта для пакетной обработки pdf файлов. Работа производилась на linux — потому первым претендентом оказалась программа из пакета poppler — pdftotext, которую чаще всего в этих целях и используют.
pdftotext
функция легко вызывается из командной строки, и имеет следующий вид:
$ pdftotext ваш.pdf ваш.txt
Но вот результат конвертирования оказался весьма странным:
Выписка из реестра
сделок
по итогам торгов
ЗАО «Санкт — Петербургская
Международная
Товарно — сырьевая Биржа»
Дата торгов: 01/01/1900
Секция: Секция «Нефтепродукты» ЗАО «СПбМТСБ»
Участник: ООО
Код участника:000000000000
Наименование и код клиента: ОАО / 000000000000
Код инструмента: 0000000001
Описание инструмента: Бензин Премиум Евро-95 вид II класс B,
Hомер
сделки
Покупка/ Цена сделки(за Количество
продажа¹
одну тонну)
лотов
Итого по 0000000001
и так далее…
Мало того: вывод еще менялся от файла к файлу — конечно в таком виде невозможно было написать парсер для выдергивания данных из таблиц.
Потому на горизонте возник второй, на сей раз проприетарный кандидат: Adobe Acrobat Reader for linux.
Acrobat Reader
В данном случае решил, для начала, испытать его возможность «File — Save as Text» в графическом режиме, не сильно углубляясь в командную строку. Как потом выяснилось, правильно сделал — результаты конвертирования моих pdf и в данной программе, не внушали оптимизма:
Код участника:
Секция:
Код инструмента:
Код инструмента:
000000000000
ООО
0000000001
0000000002
00,000,000.11 00,000.12
0,000,000.21 0,000.22
01-12
02-12
03-12
04-12
ЗАО «Санкт — Петербургская
Международная
Товарно — сырьевая Биржа»
Выписка из реестра
сделок
по итогам торгов
Дата торгов: 01/01/1900
Форма СЭТ-ВРС
Наименование и код клиента: ОАО / 000000000000
Участник:
Секция «Нефтепродукты» ЗАО «СПбМТСБ»
Описание инструмента: Бензин Премиум Евро-95 вид II класс B,
Код
трейдера
Время
сделки Объем сделки
Hомер
сделки
Hомер заявки
Итого по 0000000001
Описание инструмента: Дизельно топливо зимнее З-0.2-35.
Код
трейдера
Время
сделки Объем сделки
Hомер
сделки
Hомер заявки
Итого по 0000000002
и так далее…
Парсить такой вывод, тоже не очень хотелось.
Третьим и, как выяснилось, последним кандидатом оказался pdfedit.
pdfedit
Во всех репозиториях он представлен графической программой с возможностью выполнения скриптов из командной строки. Так же как у Acrobat Reader — первый запуск конвертирования pdf в text произвел из графического окружения «файл — сохранить как текст», результат сильно порадовал:
Получился очень корректный вывод — парсить который легко и приятно. Но не тут то было, путь к завершению эпопеи оказался тернист. Вызвать функцию «сохранить как текст» из командной строки, в стандартно собранном pdfedit, было невозможно:
вывод консольного хелпа давал две утилиты, никак не связанные с конвертированием в текст. Дальнейшее изучение документации на wiki привело к готовому скрипту конвертирования savealltext.qs, но беда в том, что он должен был исполнятся из графического меню. В результате пришлось подробно изучать матчасть:
«Курение» уже этого материала + поэтапный разбор представленного в стандартной сборке консольного скрипта /usr/share/pdfedit/delinearize.qs — привело меня к созданию своего savealltext.qs:
будучи помещенным в каталог /usr/share/pdfedit/, скрипт вызывается из командной строки и производит требуемое конвертирование:
static const int DEFAULT_PAGE_RX = 612; /**
Заменил оба значения на 1584 точек (что соответствует половине ватмана в том же разрешении) и прересобрал проект.
На этом, можно сказать, мучения закончились — pdf-ки обрабатывались из терминала, во всю свою А4-ую дущу альбомной ориентации.
По результатам своих мучений сделал правила для сборки пакетов pdfedit с savealltext для ArchLinux и выложил в AUR:
pdfedit релиз
pdfedit версия из csv
Скоро сказка сказывается, да не скоро дело делается — мне сильно не нравилось что pdfedit для запуска, даже в консольном режиме, требовал наличия в системе qt3:
С другой стороны — не со всеми pdf-ами это правило срабатывает:
«Сегодня экспериментировал с различными pdf файлами, получилась что между pdfedit и pdftotext — все равно нет абсолютного чемпиона, скажем:
Pdftotext — лучше сконвертировал ряд вытянутых в горизонтальном направлении таблиц и одноколоночных журналов.
Pdfedit — лучше работал с многоколоночными журналами(например:linuxformat) и вертикально ориентированными таблицами.
Гдето обе программы показали одинаковый результат (например: журнал Цейнгауз).»
kornerz предложил конвертировать pdf в svg, при помощи inkscape — предварительно разделив pdf-файл на листы (как вариант при помощи pdftk)
Конвертируем PDF документы в текстовый файл (txt).
/test_pdf_text$ sudo aptitude search poppler-utils
i poppler-utils — PDF utilitites (based on libpoppler)
Версия пакета в репозитариях:
/test_pdf_text$ sudo aptitude show poppler-utils
Автоматически установлен: нет
Версия: 0.14.3-0ubuntu1.2
/test_pdf_text$ sudo aptitude install poppler-utils
Я рассмотрю примеры использования данного пакета со следующем Pdf документом:
Информация о PDF документе:
/test_pdf_text$ pdfinfo kiosaki_2.pdf
Creator: PageMaker 7.0
Producer: Acrobat Distiller 5.0 (Windows)
CreationDate: Sun Dec 7 01:01:01 2003
ModDate: Sun Dec 7 01:01:01 2003
Pages: 257
Page size: 420 x 595 pts
File size: 1207159 bytes
/test_pdf_text$ file kiosaki_2.pdf
kiosaki_2.pdf: PDF document, version 1.3
-rw-r—r— 1 keiz keiz 1,2M 2012-07-01 16:59 kiosaki_2.pdf — его размер
Преобразуем pdf документ в текстовый файл:
/test_pdf_text$ pdftotext kiosaki_2.pdf kiosaki.txt
/test_pdf_text$ file kiosaki.txt
kiosaki.txt: UTF-8 Unicode text
-rw-r—r— 1 keiz keiz 809K 2012-07-01 17:31 kiosaki.txt — его размер
, как видим размер уменьшился — это очень полезное действие.
Сконвертируем последние 10 страниц нашего pdf документа:
Сконвертируем первые 10 страниц нашего pdf документа:
Откроем полученный текстовый файл в текстовом редакторе — gedit
данные не читаемы. Исправим кодировку для правильного прочтения. В консоли наберем:
Преобразование прошло успешно. Текст читаем. Результат достигнут.
Команда pdftotext: опции, ключи и примеры использования
Convert PDF files to plain text format.
pdftocairo
Converts PDF files to PNG/JPEG/TIFF/PDF/PS/EPS/SVG using cairo. More information: https://poppler.freedesktop.org.…
pdfunite
PDF merging utility. More information: https://github.com/mtgrosser/pdfunite. Merge 2 PDFs into…
Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable
Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.
Базовые примеры использования cURL
cURL – слишком хороший инструмент разработчика HTTP-сервисов, чтобы его игнорировать. Многие проблемы можно диагностировать и продемонстрировать с помощью его.
Как удалить все Docker образы и контейнеры
Не всегда нужно удалять всё, но объяснение данного «рецепта» объяснит как в целом удалять образы и контейнеры.
Bash вывода && управляющие конструкции || коротко о главном
Небольшая заметка о конструкциях Bash, в которых путается большинство новичков. А именно: >,
Microsoft открывает исходники, а её IDE супер-популярна
Решил сложить пару фактов и немного над этим поразмыслить. Реально ли Microsoft «переобулись»?
Пример своей консольной команды в Django проекте
Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.
Как на Bash посчитать число строк в проекте (директории)
Ниже будет представлен однострочник, решающий данную задачу на Bash + пошаговое описание его работы.
И снова sudo, и снова «решето»
В утилите sudo была исправлена очередная уязвимость.
Как установить часовой пояс в Linux
В рамках первичной настройки Операционной Системы важно установить и по какому времени вы живёте, ведь при следующем обновлении времени через Интернет ваше время слетит.
Как найти самые большие папки и файлы в Linux
Когда кончается место на жестком диске, возникает закономерный вопрос: на что же оно было потрачено, какие файлы разрослись больше положенного?
Команда grep – полезные ключи и примеры использования
Как создать неизменяемый файл в Linux / MacOS / FreeBSD
Само собой, root может всё (если введёт пару команд), однако, это вполне легальный способ запретить изменение файла.