Задача достаточно нетипичная. Я не знаю, зачем тебе это нужно, читатель 🙂 Как и многие статьи на сайте — эту пишу в качестве «шпаргалки» для себя на будущее. Мне это пригождается в контексте моих экспериментов с проверкой текстов на уникальность.
Итак задача — взять текстовый файл, и каждую его страницу сделать отдельным изображением в каком-либо графическом формате (растровом).
Давайте для начала сохраним наш текст в формат PDF. Я думаю, с этим у Вас проблем не возникнет — текст из любой программы можно сохранить в PDF, если не напрямую, то отправив его на печать и выбрав в качестве принтера «Microsoft print to PDF» уж точно — хоть из «Блокнота», в Linux это тоже не проблема.
Теперь разберем получившийся PDF на отдельные изображения.
Простой способ
В более простом случае для этого можно использовать специальный «узконаправленный» софт, например PDFMate Free Pdf Converter. Программка для Windows, для Linux аналогов не знаю, поэтому линуксоиды сразу могут переходить к следующему подзаголовку, там, как раз, решение и для них тоже.
Не буду сравнивать эту софтину с другими, т.к. сам в свое время выбрал по принципу «он первый попался». Программа бесплатная, но имеет более функциональную Pro-версию. Скачать можно вот здесь: https://www.pdfmate.com/pdf-converter-free.html
Вот так выглядит главное окно программы после запуска:
Как видите, конвертировать PDF она умеет в целый ряд форматов, нас же, в контексте статьи, интересует раздел «Image». Выбрав его, в нижней части окна можно указать, куда сохранять получившиеся изображения. Качество изображений можно выбрать в настройках между «Normal Resolution» и «High Resolution». Субъективно, их качество можно оценить как «так себе» и «нормальное» соответственно.
Добавляем PDF-файлы. Можно добавить один файл или папку. Или просто перетащить нужные файлы в окно программы:
Нажимаем «Создать».
В результате, в выбранном вами месте, на каждый PDF будет создана папка с таким же именем, где будут лежать отдельные файлы в формате JPEG, постранично:
Вот пример одной странички:
Задача, поставленная в заголовке статьи — решена! Переходим к следующему способу.
Продвинутый способ
Теперь о более продвинутом способе. Я использую именно его.
Нам потребуется GhostScript. Если Вы заглянете в Википедию, то узнаете, что это — набор программного обеспечения, позволяющего интерпретировать язык PostScript и документы PDF.
GhostScript умеет целую кучу всего, в том числе и нашу задачу он решит запросто. Его дополнительный плюс — кроплатформенность. Есть версии и для Windows, и для Linux и для Mac. И все это, к тому же, бесплатно.
Есть и минус — графического интерфейса у GhostScript нет, так что «общаться» с ним придется через командную строку.
Скачать GhostScript можно с официального сайта — https://www.ghostscript.com/download.html. В Linux, в наиболее популярных дистрибутивах, GhostScript можно установить из репозиториев, а затем вызывать командой ghostscript или, например, в случае с Manjaro — gs.
Далее, открыв консоль в папке, содержащей нужный файл, можно выполнить команду:
Для Linux
ghostscript -o output.tiff -sDEVICE=tiffgray -r720x720 -g6120x7920 -sCompression=lzw input.pdf
Для Windows
"C:\Program Files\gs\gs9.50\bin\gswin64.exe" -o output.tiff -sDEVICE=tiffgray -r720x720 -g6120x7920 -sCompression=lzw input.pdf
Обратите внимание, команда для Windows содержит путь к исполняемому файлу программы, который может меняться в зависимости от версии GhostScript.
Здесь мы, помимо указания на исходный (input.pdf) и целевой (output.tiff) файлы, имеем следующее:
-sDEVICE=tiffgray — указание на то, какой формат следует использовать. С полным списком можно ознакомиться здесь — https://www.ghostscript.com/doc/9.50/Devices.htm
-r720x720 — DPI
-g6120x7920 — разрешение
-sCompression=lzw — сжатие
С этими параметрами можно экспериментировать, в зависимости от того, какой результат вам нужен. У GhostScript достаточно простая и толковая документация с примерами — https://www.ghostscript.com/doc/9.50/Readme.htm
Для своих задач, то есть для преобразования текстовых файлов в растровый формат для последующего распознавания, я выбрал такие настройки, как показано выше.
Ну и разумеется, повысить удобство применения GhostScript можно с помощью специально заготовленные Batch (в Windows) или Bash (в Linux) скриптов, но это уже совсем другая история 🙂