Skip to content

A PDF manipulation and access application developed in Python using the PyMuPDF and CustomTkinter modules.

License

Notifications You must be signed in to change notification settings

lefkovitzj/PyPdfApp

Repository files navigation


PyPdfApp

A free and open-source PDF manipulation and access application.

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. License
  6. Contact
  7. Acknowledgments

About The Project

application demo using demo.pdf file

This is an example of app.py being used to open the demo.pdf file.

Built With

  • Python
  • CustomTinter
  • PyMuPdf
  • Pillow
  • Requests

(back to top)

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

Begin by downloading the Python programming language from python.org, and make sure to include PIP in the installation process.

  • CustomTkinter
    pip install customtkinter
  • Pillow
    pip install pillow
  • PyMuPDF
    pip install pymupdf
  • Requests
    pip install requests

Installation

  1. Download all .py files in this repository as well as the settings.json file.

  2. Configure application settings in settings.json to your liking:

    • app_max_zoom_scale (Default 2 = 200% maximum zoom)
    • ask_save_before_exit (Default True = pop-up on exit if unsaved changes have been made)
    • allow_keyboard_events (Default True = enable keyboard shortcuts within the application)

(back to top)

Usage

Start the app as follows:

  • Run the app.py file from the command line, your IDE of choice, or simply by opening the file with Python.
  • The app will launch File Explorer, use it to select a PDF file to open.

Once a PDF file is selected, you will see the following user interface sections (visible in demo above):

  • Menu:
    • Select submenu.
    • Save the file
    • Navigate through the file
    • Adjust the page zoom
    • View the page number
  • Submenu:
    • Button #1
    • Button #2
    • Button #3
    • Button #4
  • PDF viewer:
    • Page render
    • Scrollbars

The following submenus are available, with different actions for each of the four (4) buttons:

  1. Pages:
    • Move page up
    • Move page down
    • Delete page
    • Add blank page
  2. Encrypt & Compress:
    • Set PDF encryption
    • Remove PDF encryption
    • Compress PDF (basic)
    • Compress PDF (maximum)
  3. Insert & Extract:
    • Insert PDF
    • Extract text
    • Extract images
    • Screenshot page

(back to top)

Roadmap

  • Add license agreement screen on first use. (Completed v1.1)
  • Create update-checker on startup. (Completed v1.1)
  • Allow user-created metadata. (Completed v1.2)
    • Add metadata configuration submenu.
    • Add optional metadata to save_pdf() in save.py.
  • Add md5 or SHA hash of source code to settings.json. (Completed v1.3)
  • Add file tampering checker utility application. (Completed v1.3)
  • Add page rotation feature. (Completed v1.4)
  • Add watermark feature. (Completed v1.4)
  • Create configure.py file with a simple application for modifying data values in settings.json.

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Make suggestions.
  2. Report bugs.
  3. Fork the Project.
  4. Open a Pull Request.

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Joseph Lefkovitz - GitHub - LinkedIn

Project Link: https://github.com/lefkovitzj/PyPdfApp

(back to top)

Acknowledgments

  • PyMuPDF, which was used in all the under-the-hood PDF manipulation and access functions.
  • CustomTkinter, which was used to create most of the modern user interface elements.
  • Pillow, which was used in the PDF page rendering process.
  • Requests, which was used in the update launcher process.
  • othneildrew's Best-README-Template, which was used in a modified form for this project's README.md file.

(back to top)

About

A PDF manipulation and access application developed in Python using the PyMuPDF and CustomTkinter modules.

Topics

Resources

License

Stars

Watchers

Forks

Languages