💾 Archived View for tilde.team › ~rami › pdf_odt_converters.gmi captured on 2024-12-17 at 11:35:35. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
רמי
SUBJECT: MC, PDFTOTEXT, ODT2TXT: Просмотр и конвертирование PDF/ODT => TXT в консоли
AUTHOR: Rami Rosenfeld
DATE: 27/11/24
TIME: 01.00
LANG: ru, en
LICENSE: GNU FDL 1.3
TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, rhel, centos, mate, xfce, lxde, spin, de, converter, text, pdf, odt
"Чистая" консоль GNU/Linux не в состоянии напрямую отображать текстовое содержимое двух видов файлов электронных документов - .pdf и .odt. Ниже будут рассмотрены способы их конвертирования в терминале.
Примечание: В качестве тестовых файлов я взял два варианта (.pdf и .odt) собственной книги; в первую очередь - из-за ее объема (815 с. формата А4; кегль 14 пт., одинарный интерлиньяж); во-вторую - из-за уверенности, что оба файла созданы правильно и не содержат никаких скрытых подвохов. В примерах ниже они обозначены как 1.pdf и 2.odt.
Самый простой, невероятно быстрый и малоизвестный способ. Оказывается, старый добрый MC способен практически мгновенно и корректно открыть для просмотра в консоли pdf-файл: достаточно выделить его и нажать на стандартную кнопку F3.
Как правило, специально инсталлировать эту утилиту не надо, т.к. она по умолчанию входит в распространенный пакет poppler-utils:
dnf install pdftotext
poppler-utils-...x86_64" is already installed
pdftotext 1.pdf - | less
Примечание: Это самый простой, но "грязный" способ.
pdftotext -layout -nopgbrk 1.pdf - | less
Примечания:
-layout - форматирование (абзацные отступы, выключка текста) будет имитировано с помощью пробелов;
-nopgbrk - будут исключены спецмаркеры начала новых страниц.
pdftotext -layout -nopgbrk 1.pdf > 1.txt
ВАЖНО: Формат PDF весьма сложен, он может включать в себя формы ввода данных, графику и даже скрипты. Поэтому положительный результат может быть гарантирован, если исходный файл: 1) не содержит в себе всё вышеперечисленное; 2) имеет отдельный текстовый "слой" (мне встречались в практике особо прискорбные случаи, когда сканированный текст сохранялся в PDF напрямую - как PNG/JPG, то есть без распознавания с помощью OCR).
Данная утилита неплохо конвертирует простые таблицы; см. илл.:
Верхнее окно - исходная таблица LibreOffice; нижнее - результат конвертирования в TXT
Утилита ODT2TXT крайне мала; ее размер составляет всего 28 кб:
dnf install odt2txt
odt2txt --width=-1 2.odt --output=2.txt
Примечание 1: Опция --width=-1 наиболее корректно обработает исходные текстовые строки внутри абзаца и будет сохранять их полностью, без разрывов, т.е. без принудительного деления на N-символов (последнее удобно для просмотра в терминалах). Впрочем, консольные текстовые редакторы Micro и Nano позволяют правильно отображать длинные строки - с их переносом (но это поведение настраивается отдельно).
Примечание 2: Просмотреть текст в консоли с помощью команды less не удастся; зато конечный файл получается очень чистым.
Примечание 3: ODT2TXT некорректно конвертирует таблицы.
Существует также онлайн-конвертер с расширенными возможностями:
PDF to TXT
PDF to DOC
DOC to PDF
PDF to JPG
JPG to PDF
PDF to PNG
PNG to PDF
PDF Compressor
Combine PDF
Crop PDF
Дополнительно см.: man pdftotext, man odt2txt
🄯 Rami Rosenfeld, 2024. GNU FDL 1.3.