Шрифт
Создание приложения для разделения PDF файла используя appJar
Play

Создание приложения для разделения PDF файла используя appJar

Недавно мне нужно было взять несколько страниц из PDF файла и сохранить их в новом PDF файле. Это простая задача, но делая её каждый раз, у меня уходит время на определение нужных параметров командной строки, что бы процесс пошел. Кроме этого, моим коллегам нужна была аналогичная функциональность. Так как им не очень удобно работать в командной строке, я решил создать небольшой графический интерфейс, чтобы решить эту проблему.

Одно из решений – использовать Gooey. Это действительно хороший вариант. Однако, я хочу попробовать воспользоваться другой библиотекой. Мой выбор пал на appJar. В этой статье мы пройдемся по примерам использования appJar для создания графического интерфейса, который позволяет пользователю:

  1. Выбирать PDF файл;
  2. Выделять одну или несколько страниц;
  3. Сохранять их в новом файле.

Такой подход простой, эффективный и показывает, как можно интегрировать графический интерфейс в то или иное приложение Python, над которым вы работаете.

Выбор графического интерфейса в Python

Один из базовых вопросов, возникающих в сабреддите Pyhton, это что-то в духе: «Какой графический интерфейс лучше всего использовать?». На самом деле, вариантов очень много, но для освоения большей части интерфейсов нужно много времени усилий. Кроме этого, одни из них работают только на определенных платформах, другие временно не работают. Так что не так уж и просто ответить на этот вопрос.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Доступны следующие категории графических интерфейсов для высокого уровня:

    ;
  • wxPython; ; ;
  • Пользовательские библиотеки (Kivy, Toga, и т.д.);
  • Варианты на базе веб-технологий (HTML, Chrome).

В довесок к этой экосистеме, существует несколько типов оболочек и вспомогательных приложений, упрощающих проведение разработки. Например: Gooey — отличный способ использовать argparse для создания пользовательского интерфейса wxPython совершенно бесплатно. Лично у меня было много хороших примеров использования данного подхода, позволяющего конечному пользователю взаимодействовать с моими скриптами Python. Настоятельно рекомендую. Особенно с тех пор, как wxPython стал работать только на Python 3.

Недостаток Gooey в том, что возможность создавать приложение вне «полномочий» Goeey ограничена. Мне хотелось найти что-то, что отвечает следующим требованиям:

  • Легко использовать для создания быстрого и грязного скрипта;
  • Предоставляет больше возможностей для взаимодействий, чем это делает командная строка;
  • Работает и подходит для Windows;
  • Простая установка;
  • Активно поддерживается;
  • Быстро запускается;
  • Возможность также работать и на Linux – определенно плюс;

В конечном счете, я пришел к выводу, что appJar соответствует всем моим требованиям.

Что такое appJar?

appJar был разработан преподавателем, которому нужно было упростить процесс разработки пользовательского интерфейса для его студентов. Приложение предоставляет оболочку вокруг Tkinter (стоит по умолчанию в Python), и заметно упрощает шаблон при разработке приложения.

Это приложение находится в активной разработке. Фактически, новое издание появилось незадолго до того, как я написал эту статью. Документация весьма обширная, в нее входит большое количество отличных примеров. У меня ушло всего несколько часов на то, чтобы разобраться, что к чему, в результате я создал отличное, рабочее приложение. Более того, я использую финальную версию приложения на постоянной основе, когда нужно изъять выбранные страницы из PDF файла. Также я могу расширить его, добавив возможность объединения нескольких документов в один.

Перед тем как дальше углубимся в вопрос, я хочу уделить немного времени Tkinter. Я знаю, что у Tkinter немного подорванная репутация, во многом из-за его несовременности. Однако, с обновленными темами ttk он стал выглядеть лучше. Кроме этого, я думаю, что итоговое приложение хорошо работает на Windows.

В контексте Linux все не так гладко, но приложение действительно работает. В конце концов, данная статья должна помочь вам создать быстрые и эффективные решения для выполнения работы. Если вы ищете безукоризненный пользовательский интерфейс, идеально работающий с вашей ОС, вам могут понадобиться более функциональные варианты. Если вы ищете что-то, что работает быстро – стоит задуматься о appJar.

Чтобы понять, как это выглядит, вот пример рабочего приложения под Windows:

Выглядит вполне ничего себе, на мой взгляд.

Решение Проблемы

Суть данной программы – создать быстрый и простой способ взять подмножество страниц из PDF файла и сохранить его в новый файл. Существует множество программ для Windows, в которых можно проводить данную операцию. Но я обнаружил, что эти «бесплатные» программы включают в себя кучу рекламы, и прочие «полезные» компоненты. Командная строка также работает, но пользовательский интерфейс намного проще, особенно при навигации в куче путей к файлам, или, пытаясь объяснить принцип работы неопытному пользователю.

Чтобы проводить манипуляции с PDF файлом, я использую библиотеку pypdf2. Этот набор инструментов для работы в PDF разработан уже давно и на первый взгляд выглядит немного сложным, но популярность этой библиотеки резко подпрыгнула на github. Еще один приятный аспект — PyPDF2 завернут в Automate The Boring Stuff, так что существует множество дополнительных примеров работы в данной библиотеке.

Начнем с простого скрипта, в который входят сложный ввод, вывод и ранжирование страниц.

📎📎📎📎📎📎📎📎📎📎