Stirling-PDF/README.md

140 lines
6 KiB
Markdown
Raw Normal View History

<p align="center"><img src="https://raw.githubusercontent.com/Frooodle/Stirling-PDF/main/docs/stirling.png" width="80" ><br><h1 align="center">Stirling-PDF</h1>
</p>
2023-02-04 16:06:27 +01:00
[![Docker Pulls](https://img.shields.io/docker/pulls/frooodle/s-pdf)](https://hub.docker.com/r/frooodle/s-pdf)
2023-02-12 19:24:13 +01:00
[![Discord](https://img.shields.io/discord/1068636748814483718?label=Discord)](https://discord.gg/Cn8pWhQRxZ)
[![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/frooodle/s-pdf/latest)](https://github.com/Frooodle/Stirling-PDF/)
[![GitHub Repo stars](https://img.shields.io/github/stars/frooodle/stirling-pdf?style=social)](https://github.com/Frooodle/stirling-pdf)
[![Paypal Donate](https://img.shields.io/badge/Paypal%20Donate-yellow?style=flat&logo=paypal)](https://www.paypal.com/paypalme/froodleplex)
2023-04-19 16:35:58 +02:00
[![Github Sponser](https://img.shields.io/badge/Github%20Sponsor-yellow?style=flat&logo=github)](https://github.com/sponsors/Frooodle)
2023-01-27 19:23:40 +01:00
This is a powerful locally hosted web based PDF manipulation tool using docker that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application started as a 100% ChatGPT-made application and has evolved to include a wide range of features to handle all your PDF needs.
2023-01-30 22:46:38 +01:00
2023-04-26 23:17:47 +02:00
Feel free to request any features or bug fixes either in github issues or our [Discord](https://discord.gg/Cn8pWhQRxZ)
2023-01-27 19:23:40 +01:00
2023-01-30 21:50:47 +01:00
![stirling-home](images/stirling-home.png)
2023-01-27 19:23:40 +01:00
## Features
2023-04-22 01:18:32 +02:00
- Full intractable GUI for merging/splitting/rotating/moving PDFs and their pages.
2023-01-27 19:23:40 +01:00
- Split PDFs into multiple files at specified page numbers or extract all pages as individual files.
- Merge multiple PDFs together into a single resultant file
- Convert PDFs to and from images
- Reorganize PDF pages into different orders.
2023-05-06 17:10:06 +02:00
- Add/Generate signatures
- Flatten PDFs
- Repair PDFs
2023-05-08 23:55:01 +02:00
- Detect and remove blank pages
- Compare 2 PDFs and show differences in text
2023-05-06 17:10:06 +02:00
- Add images to PDFs
2023-01-30 22:39:17 +01:00
- Rotating PDFs in 90 degree increments.
2023-03-20 23:24:07 +01:00
- Compressing PDFs to decrease their filesize. (Using OCRMyPDF)
- Add and remove passwords
- Set PDF Permissions
- Add watermark(s)
2023-03-20 23:24:07 +01:00
- Convert Any common file to PDF (using LibreOffice)
- Convert PDF to Word/Powerpoint/Others (using LibreOffice)
2023-03-20 23:24:07 +01:00
- Extract images from PDF
- OCR on PDF (Using OCRMyPDF)
- Edit metadata
2023-01-27 19:23:40 +01:00
- Dark mode support.
2023-03-28 15:59:40 +02:00
- Custom download options (see [here](https://github.com/Frooodle/Stirling-PDF/blob/main/images/settings.png) for example)
2023-03-20 23:33:24 +01:00
- Parallel file processing and downloads
2023-05-06 17:10:06 +02:00
- API for integration with external scripts
2023-01-27 19:23:40 +01:00
2023-05-06 18:21:02 +02:00
Hosted instance/demo of the app can be seen [here](https://pdf.adminforge.de/) hosted by the team at adminforge.de
2023-01-27 19:23:40 +01:00
## Technologies used
- Spring Boot + Thymeleaf
- PDFBox
2023-03-28 15:59:40 +02:00
- [LibreOffice](https://www.libreoffice.org/discover/libreoffice/) for advanced conversions
- [OcrMyPdf](https://github.com/ocrmypdf/OCRmyPDF)
2023-01-27 19:23:40 +01:00
- HTML, CSS, JavaScript
- Docker
2023-04-19 16:38:18 +02:00
- PDF.js
- PDF-LIB.js
2023-01-27 19:23:40 +01:00
## How to use
### Locally
2023-01-27 19:23:40 +01:00
Prerequisites
- Java 17 or later
- Gradle 7.0 or later
2023-01-27 19:23:40 +01:00
1. Clone or download the repository.
2. Build the project using Gradle by running `./gradlew build`
3. Start the application by running `./gradlew bootRun` or by calling the build jar in build/libs with java -jar jarName.jar
2023-01-27 19:23:40 +01:00
### Docker
2023-01-27 20:10:24 +01:00
https://hub.docker.com/r/frooodle/s-pdf
Docker Run
```
2023-05-06 17:10:06 +02:00
docker run -d \
-p 8080:8080 \
-v /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata \
--name stirling-pdf \
frooodle/s-pdf
2023-05-08 23:55:01 +02:00
Can also add these for customisation but are not required
2023-05-06 17:10:06 +02:00
-e APP_HOME_NAME="Stirling PDF" \
-e APP_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs." \
-e APP_NAVBAR_NAME="Stirling PDF" \
2023-05-08 23:55:01 +02:00
-e ALLOW_GOOGLE_VISABILITY="true" \
2023-05-11 00:26:31 +02:00
-e APP_ROOT_PATH="/" \
2023-05-08 23:55:01 +02:00
-e APP_LOCALE="en_GB" \
```
Docker Compose
```
version: '3.3'
services:
2023-05-06 17:10:06 +02:00
stirling-pdf:
image: frooodle/s-pdf
ports:
- '8080:8080'
volumes:
- /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata #Required for extra OCR languages
# - /location/of/extraConfigs:/configs
# environment:
2023-05-08 23:55:01 +02:00
# APP_LOCALE: en_GB
2023-05-06 17:10:06 +02:00
# APP_HOME_NAME: Stirling PDF
# APP_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.
# APP_NAVBAR_NAME: Stirling PDF
2023-05-11 00:26:31 +02:00
# APP_ROOT_PATH: /
2023-05-08 23:55:01 +02:00
# ALLOW_GOOGLE_VISABILITY: true
2023-05-06 17:10:06 +02:00
```
2023-01-27 19:23:40 +01:00
2023-04-02 12:51:07 +02:00
2023-03-28 15:59:40 +02:00
## Enable OCR/Compression feature
Please view https://github.com/Frooodle/Stirling-PDF/blob/main/HowToUseOCR.md
## Want to add your own language?
If you want to add your own language to Stirling-PDF please refer
https://github.com/Frooodle/Stirling-PDF/blob/main/HowToAddNewLanguage.md
And please create a PR to merge it back in so others can use it!
Also please note as i add new features i will google translate existing languages so that they dont lose support. This could mean that new features need grammer corrections as added.
2023-01-27 19:23:40 +01:00
## How to View
1. Open a web browser and navigate to `http://localhost:8080/`
2. Use the application by following the instructions on the website.
2023-03-28 15:59:40 +02:00
2023-04-03 00:59:22 +02:00
## Customize App
2023-04-02 12:51:07 +02:00
Stirling PDF allows easy customization of the visible application name.
Simply use environment variables APP_HOME_NAME, APP_HOME_DESCRIPTION and APP_NAVBAR_NAME with Docker or Java.
2023-04-03 00:59:22 +02:00
If running Java directly, you can also pass these as properties using -D arguments.
2023-05-08 23:55:01 +02:00
Using the same method you can also change
- The default language by providing APP_LOCALE with values like de-DE fr-FR or ar-AR to select your default language (Will always default to English on invalid locale)
- Enable/Disable search engine visablility with ALLOW_GOOGLE_VISABILITY with true / false values. Default disable visability.
2023-05-11 00:26:31 +02:00
- Change root URI for Stirling-PDF ie change server.com/ to server.com/pdf-app by running APP_ROOT_PATH as pdf-app
2023-04-29 00:54:53 +02:00
## API
For those wanting to use Stirling-PDFs backend API to link with their own custom scripting to edit PDFs you can view all existing API documentation
[here](https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/1.0.0) or navigate to /swagger-ui/index.html of your stirling-pdf instance for your versions documentation