SkillAgentSearch skills...

StirlingPDF

No description available

Install / Use

/learn @magheralex/StirlingPDF
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<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>

Docker Pulls Discord Docker Image Version (tag latest semver) GitHub Repo stars Paypal Donate Github Sponser

Deploy to DO

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.

Stirling PDF makes no outbound calls for any record keeping or tracking.

All files and PDFs are either purely client side, in server memory only during the execution of the task or within a temporay file only for execution of the task. Any file which has been downloaded by the user will have already been deleted from the server by that time.

Deploy to DO

Feel free to request any features or bug fixes either in github issues or our Discord

stirling-home

Features

  • Dark mode support.
  • Custom download options (see here for example)
  • Parallel file processing and downloads
  • API for integration with external scripts
  • Optional Login and Authentication support (see here for documentation)

PDF Features

Page Operations

  • View and modify PDFs - View multi page PDFs with custom viewing sorting and searching. Plus on page edit features like annotate, draw and adding text and images. (Using PDF.js with Joxit and Liberation.Liberation fonts)
  • Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
  • Merge multiple PDFs together into a single resultant file.
  • Split PDFs into multiple files at specified page numbers or extract all pages as individual files.
  • Reorganize PDF pages into different orders.
  • Rotate PDFs in 90-degree increments.
  • Remove pages.
  • Multi-page layout (Format PDFs into a multi-paged page).
  • Scale page contents size by set %.
  • Adjust Contrast.
  • Crop PDF.
  • Auto Split PDF (With physically scanned page dividers).
  • Extract page(s).
  • Convert PDF to a single page.

Conversion Operations

  • Convert PDFs to and from images.
  • Convert any common file to PDF (using LibreOffice).
  • Convert PDF to Word/Powerpoint/Others (using LibreOffice).
  • Convert HTML to PDF.
  • URL to PDF.
  • Markdown to PDF.

Security & Permissions

  • Add and remove passwords.
  • Change/set PDF Permissions.
  • Add watermark(s).
  • Certify/sign PDFs.
  • Sanitize PDFs.
  • Auto-redact text.

Other Operations

  • Add/Generate/Write signatures.
  • Repair PDFs.
  • Detect and remove blank pages.
  • Compare 2 PDFs and show differences in text.
  • Add images to PDFs.
  • Compress PDFs to decrease their filesize (Using OCRMyPDF).
  • Extract images from PDF.
  • Extract images from Scans.
  • Add page numbers.
  • Auto rename file by detecting PDF header text.
  • OCR on PDF (Using OCRMyPDF).
  • PDF/A conversion (Using OCRMyPDF).
  • Edit metadata.
  • Flatten PDFs.
  • Get all information on a PDF to view or export as JSON.

For a overview of the tasks and the technology each uses please view Endpoint-groups.md Hosted instance/demo of the app can be seen here hosted by the team at adminforge.de

Technologies used

  • Spring Boot + Thymeleaf
  • PDFBox
  • LibreOffice for advanced conversions
  • OcrMyPdf
  • HTML, CSS, JavaScript
  • Docker
  • PDF.js
  • PDF-LIB.js

How to use

Locally

Please view https://github.com/Frooodle/Stirling-PDF/blob/main/LocalRunGuide.md

Docker / Podman

https://hub.docker.com/r/frooodle/s-pdf

Stirling PDF has 3 different versions, a Full version, Lite, and ultra-Lite. Depending on the types of features you use you may want a smaller image to save on space. To see what the different versions offer please look at our version mapping For people that don't mind about space optimization just use the latest tag. Docker Image Size (tag) Docker Image Size (tag) Docker Image Size (tag)

Docker Run

docker run -d \
  -p 8080:8080 \
  -v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata \
  -v /location/of/extraConfigs:/configs \
  -v /location/of/logs:/logs \
  -e DOCKER_ENABLE_SECURITY=false \
  --name stirling-pdf \
  frooodle/s-pdf:latest
  
  
  Can also add these for customisation but are not required
  
  -v /location/of/customFiles:/customFiles \

Docker Compose

version: '3.3'
services:
  stirling-pdf:
    image: frooodle/s-pdf:latest
    ports:
      - '8080:8080'
    volumes:
      - /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata #Required for extra OCR languages
      - /location/of/extraConfigs:/configs
#      - /location/of/customFiles:/customFiles/
#      - /location/of/logs:/logs/
    environment:
      - DOCKER_ENABLE_SECURITY=false

Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman".

Enable OCR/Compression feature

Please view https://github.com/Frooodle/Stirling-PDF/blob/main/HowToUseOCR.md

Want to add your own language?

Stirling PDF currently supports 20!

  • English (English) (en_GB)
  • English (US) (en_US)
  • Arabic (العربية) (ar_AR)
  • German (Deutsch) (de_DE)
  • French (Français) (fr_FR)
  • Spanish (Español) (es_ES)
  • Chinese (简体中文) (zh_CN)
  • Catalan (Català) (ca_CA)
  • Italian (Italiano) (it_IT)
  • Swedish (Svenska) (sv_SE)
  • Polish (Polski) (pl_PL)
  • Romanian (Română) (ro_RO)
  • Korean (한국어) (ko_KR)
  • Portuguese Brazilian (Português) (pt_BR)
  • Russian (Русский) (ru_RU)
  • Basque (Euskara) (eu_ES)
  • Japanese (日本語) (ja_JP)
  • Dutch (Nederlands) (nl_NL)
  • Greek (el_GR)
  • Turkish (Türkçe) (tr_TR)

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!

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.

Customisation

Stirling PDF allows easy customization of the app. Includes things like

  • Custom application name
  • Custom slogans, icons, images, and even custom HTML (via file overrides)

There are two options for this, either using the generated settings file settings.yml This file is located in the /configs directory and follows standard YAML formatting

Environment variables are also supported and would override the settings file For example in the settings.yml you have

system:
  defaultLocale: 'en-US'

To have this via an environment variable you would have SYSTEM_DEFAULTLOCALE

The Current list of settings is

security:
  enableLogin: false # set to 'true' to enable login
  csrfDisabled: true

system:
  defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
  googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
  customStaticFilePath: '/customFiles/static/' # Directory path for custom static files

#ui:
#  appName: exampleAppName # Application's visible name
#  homeDescription: I am a description # Short description or tagline shown on homepage.
#  appNameNavbar: navbarName # Name displayed on the navigation bar

endpoints:
  toRemove: [] # List endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
  groupsToRemove: [] # List groups to disable (e.g. ['LibreOffice'])

metrics:
  enabled: true # 'true' to enable Info APIs endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable

Extra notes

  • Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups here
  • customStaticFilePath. Customise static files such as the app logo by placing f
View on GitHub
GitHub Stars68
CategoryDevelopment
Updated1d ago
Forks7

Languages

JavaScript

Security Score

90/100

Audited on Apr 6, 2026

No findings