Skip to content

PDF editing software in large quantities. Designed for teachers, this app keeps recorded previous annotations, and offers features like marking scale, PDF conversion, vectorial drawing...

License

Notifications You must be signed in to change notification settings

ClementGre/PDF4Teachers

Repository files navigation

Java CI with Gradle TotalDownloads LatestDownloads Commit activity Commit since latest Contributors
Star GitHubFolowers TwitterFolowers

Presentation | Features | Dependencies | Code organization
PDF editing software in large quantities designed for teachers.

Logo

Shortcuts :                                                                             Before opening new issue, see :

License Release        GitHub labels GitHub labels GitHub labels

Presentation

PDF4Teachers is specifically designed for teachers. It allows you to annotate assessments returned in PDF with excellent productivity.

PDF4Teachers provides tools for editing PDF files productively while annotating/correcting assessments. It memorizes all previously added annotations and offers quick insertion of them. PDF4Teachers also supports the definition of a grade scale (numerical or competency-based grading). Grades can then be exported as a .csv spreadsheet.

PDF4Teachers can also perform batch conversion of images to PDF to convert multiple documents at the same time. A lot of other PDF tools are also available, including booklet assembler/disassembler, PDF merge and split, move and rotate pages, and more.

PDF4Teachers supports freeform drawing, vector SVG path elements, images, LaTeX and LibreOffice Math equations.

PDF4Teachers saves any edits made to a PDF file as a separate layer, so the original PDF remains intact (except for any changes made with PDF tools). You can export the edited document as a new PDF file within the app.

Preview

Preview

Features

Conversion and PDF Tools

  • Convert a selection of images to a single PDF.
  • Convert a directory containing subdirectories with images to a set of PDFs, with one PDF per subdirectory and one page per image.
  • Rotate, move, and delete PDF pages. Multiple pages can be selected at once in PDF edit mode.
  • Insert pages from another PDF or from images into an existing PDF.
  • Export a PDF page to an image with a custom resolution.
  • Split a PDF into multiple PDFs based on automatically detected pages by color or based on user selection. Users can define names for the resulting PDFs and import names from a file.
  • Create a booklet from a PDF or disassemble a booklet into a PDF with various options and support for two-page copies.

Text elements

  • Memorizes all added text elements in a previous and favorite text list, allowing quick insertion.
  • Writing an element highlights similar elements in the list, which can be selected with the keyboard.
  • Supports LaTeX and LibreOffice Math equations using the $$ or && delimiter or defining them as default writing mode.
  • Favorite and previous texts can be saved and loaded in an element list.
  • Textual elements can be written on multiple lines and wrapped to a maximum width.
  • Supports custom fonts, including system-installed fonts.

Numerical grading

  • Ability to define a custom grade scale and copy it to other documents of the same assessment, with the ability to memorize grades position on document.
  • Ability to define custom grade size, color, font, and showing option for each level of grade.
  • Automatically numerates questions and calculates parent grades.
  • Export of grades to a .csv spreadsheet, including comments, a set of documents in the same spreadsheet, or a set of documents in different csv files.
  • Ability to quickly insert grades, with automatic prompts for the value of the next grade, shortcuts, and mouse grade definition.

Competency-based grading

  • Support for competency-based grading with custom levels of competencies (images, colors, text, etc.).
  • Ability to define different competencies for each assessment, which are evaluated using the different levels of achievement.
  • Competency table generated on the output PDF.
  • Support for importing/exporting competency spreadsheets from the software SACoche.
  • Export of results to a .csv spreadsheet.

Vector elements, freeform drawing and images

  • Support for vector elements, including SVG path elements, with custom colors and thicknesses.
  • Lists for previously added and favorite vector elements.
  • Options for vector elements that make it easier to use highlighters, arrows, underlines, and more.
  • Support for freeform drawing with custom colors and thicknesses.
  • Automatic page switching and element splitting for freeform drawing based on time, length, or mouse movements to prevent elements from being too long.
  • Support for images with custom sizes and positions. Images are not stored in the edit, and a reference to the original image is kept.
  • Image gallery and favorite images list.
  • Predefined vector elements including icons, shapes, arrows and more.

Interface

  • Pretty and intuitive interface, with a dark theme and support for OS theme sync.
  • Full support for undo/redo operations.
  • Support for copy/paste elements between PDFs and between applications.
  • Available languages : English, French, Italian, add your language !

Contribute

Translate the app, website or documentation

All translations can be done on Weblate.

Otherwise, you can also translate the app by yourself, by editing the files in the src/main/resources/translations folder.

See pdf4teachers.org/Contribute for more informations.

Contribute to the code

PDF4Teachers has now achieved all the main goals of the project, but is still maintained and improved. If you want to contribute, you will need a lot of time to deep dive into the code (see Code organization), you can then open a pull request.

As detailed in the Dependencies section, PDF4Teachers uses gradlew and the source code can be run with gradlew run with the JDK 21 in your JAVA_HOME environment variable.

See ClementGre/PDF4Teachers-Website for the PDF4Teachers' website repository.

Dependencies

The application was developed with JavaFX framework, in Java SE 21.

Java dependencies

  • JavaFX 21 : The java API to create windows (GUI), and all the interfaces with the user.
  • Apache PDF BOX 2.0.26 : used for all the interactions with PDFs: it generates images from PDF file, add it add the texts/images of the editing on the PDF document while exporting. Commons Logging, * Font BOX*, JAI ImageIO and jbig2-imageio, are dependencies of PDF Box.
  • JMetro 11.6.15 : JavaFX theme. It offers you a nicer interface, including the dark mode.
  • ControlsFX 11.1.0 : JavaFX new inputs and custom panes
  • Writer2Latex 1.6.1 : Used to convert StarMath (or LibreOffice Math) language in LaTeX for rendering.
  • JLatexMath 1.0.7 : Used to generate images from LaTeX expressions for exportation.
  • SnakeYAML 1.30 : Lets read YAML files easier (edits + user datas) : it converts the YAML into HashMap<String, Object> and vice versa.
  • Opencsv 5.6 : used to read/write CSV files (when importing SACoche assessment)
  • Jackson Streaming API 2.13.3 : lets read the JSON format. Used to parse GitHub responses when checking if updates are available, and used for automatic update of translations.
  • Metadata-Extractor 2.18.0 : Used to read the images EXIF data, so PDF4Teachers can take in account the rotation of images
  • Batik Parser 1.14 : Allow me to parse SVG easily, with custom handlers for SVG importation.
  • PdfBox Graphics2D 0.40 : Used to write SVG to a PDF, using PDFBox.
  • Google Diff-Match-Patch 0.1 : Allow me to perform some actions on strings for undo/redo on text inputs.
  • Unique4J 1.4 : Used to set up a single instance of the app when opening files from system.
  • jSystemThemeDetector 3.8 : Used to synchronize the app theme with the system theme (light or dark).

Gradle plugins

The dependencies of the application are managed by Gradle 7 (rc-2), therefore, you can execute ./gradlew run (bash) or gradlew.bat run (batch) in a command prompt to run the application using only the downloaded code, and the Java JDK 17 (should be in the environment variable JAVA_HOME). Gradle is using some plugins to manage dependencies :

  • Badass JLink Plugin allow me to use JLink and JPackager ( distribution tools) directly with gradle.
  • JavaFX Gradle 7 Plugin fork of the original JavaFX Gradle Plugin, allows to setup the JavaFX libs with Gradle 7 and JDK 16+
  • Extra Java Module Info lets us customize module-info of any jar file, and then, it allows me to use non modular dependencies (Allows me to give a name to any "unnamed module").

Software used

Packaging tool

  • JLink is a distribution tool used to generate an image of the code including the dependencies and the used modules of the JRE, for each platform (exports all the code and the JRE so there is no need to have Java installed to run PDF4Teachers). ( JDK tool)
  • JPackage is used to generate Windows .msi and Linux .deb installers for each platform from the image that was generated by JLink. (JDK tool)
  • DMGCanvas allows me to create a custom OSX DMG file, from the .app created by hand from JLink image. Needs to be installed to use the gradlew autoPackage task on Mac OSX.
  • WiX Toolset is a JPackage dependency, it allows to build .msi file. Needs to be installed to use the gradlew autoPackage task on Windows.

The installer can be build automatically using the custom autoPackage task on any platform.

Fonts for the documentations files

If you have to work on a documentation translation, it is always better to have the right fonts installed to have the correct layout (and if you eventually have to generate the PDF from it). Then you will need these fonts :

  • Arial Rounded MT Bold
  • Calibri
  • Liberation Sans

About

PDF editing software in large quantities. Designed for teachers, this app keeps recorded previous annotations, and offers features like marking scale, PDF conversion, vectorial drawing...

Resources

License

Stars

Watchers

Forks

Languages