locally hosted web application that allows you to perform various operations on PDF files
Go to file
Reece 2f9c88b000 Optimize PageEditor performance and fix view switching issues
Major performance improvements and UX enhancements:

  PERFORMANCE FIXES:
  - Add merged document caching in FileContext to prevent re-processing on view switches
  - Implement hash-based cache fallback for File object identity preservation
  - Add pagination for large documents (>200 pages) to prevent DOM overload
  - Convert synchronous operations to async chunked processing
  - Optimize effect dependencies to prevent unnecessary re-renders
  - Remove aggressive cleanup on view switches that destroyed caches

  UI/UX IMPROVEMENTS:
  - Add immediate visual feedback with loading spinners in view switching buttons
  - Implement skeleton loaders for smooth transitions during processing
  - Add progress indicators with real-time percentages
  - Defer heavy operations using requestAnimationFrame to allow UI updates
  - Create reusable SkeletonLoader component for consistent loading states

  CACHE SYSTEM:
  - Move processed file cache management to FileContext for persistence
  - Add stable cache key generation based on file combinations
  - Implement smart cache invalidation only when files are actually removed
  - Preserve thumbnails and page data across view switches

  BUG FIXES:
  - Fix infinite loop errors caused by circular hook dependencies
  - Resolve File object recreation breaking Map lookups
  - Fix thumbnail loading issues in PageEditor
  - Prevent UI thread blocking during PDF merging operations

  TECHNICAL DEBT:
  - Centralize memory management in FileContext
  - Add proper cleanup for removed files while preserving active caches
  - Implement async/await patterns for better error handling
  - Add performance debugging with console timing

  Result: PageEditor now loads instantly when returning to cached files,
  large documents render smoothly with pagination, and view switching
  provides immediate feedback even during heavy operations.
2025-07-04 11:17:10 +01:00
.devcontainer Update Google Java Format to v1.26.0 across devcontainer, VSCode, and Gradle configuration (#3375) 2025-04-17 22:11:30 +01:00
.github Add Email Sending Service with Attachment Support (#3455) 2025-05-07 09:20:21 +01:00
.vscode Update Google Java Format to v1.26.0 across devcontainer, VSCode, and Gradle configuration (#3375) 2025-04-17 22:11:30 +01:00
docs pipeline bug, doc bugs, auto split new URL and doc (#2906) 2025-02-07 13:17:35 +00:00
exampleYmlFiles Add SHOW_SURVEY Environment variable to Docker (#3378) 2025-04-20 11:49:34 +01:00
frontend Optimize PageEditor performance and fix view switching issues 2025-07-04 11:17:10 +01:00
gradle/wrapper Upgrade Gradle to 8.14 in CI Workflows and Gradle Wrapper (#3425) 2025-04-27 16:17:07 +01:00
images Update screenshots (#2875) 2025-02-04 11:24:35 +00:00
pipeline/defaultWebUIConfigs
scripts React translations 2025-05-29 17:26:32 +01:00
src IndexxedDb refactored 2025-06-04 19:04:56 +01:00
testing Upgrade Gradle to 8.14 in CI Workflows and Gradle Wrapper (#3425) 2025-04-27 16:17:07 +01:00
.editorconfig chore: migrate vscode settings to editorconfig when possible (#3088) 2025-03-01 19:41:13 +00:00
.git-blame-ignore-revs
.gitattributes
.gitignore Remove Claude.md from gitignore 2025-06-09 10:53:32 +01:00
.pre-commit-config.yaml Bump ruff to v0.11.6 and gitleaks to v8.24.3 in pre-commit config (#3376) 2025-04-17 22:10:39 +01:00
allowed-licenses.json checks the compatibility of the licenses (#2844) 2025-02-03 10:13:02 +00:00
build.gradle pixel changes, redact color fix, version bump, aggressive compression (#3502) 2025-05-09 16:42:20 +01:00
CLAUDE.md Developer guide updates and claude.md 2025-06-14 22:03:46 +01:00
CONTRIBUTING.md Move docs to website (#2571) 2024-12-30 15:49:28 +00:00
DATABASE.md
DeveloperGuide.md Update Page editor styling 2025-06-16 15:11:00 +01:00
Dockerfile [bug] unoserver ip change to fix potention unoserver startup issues (#3305) 2025-04-09 09:54:02 +01:00
Dockerfile.dev Bump gradle from 8.13-jdk21 to 8.14-jdk21 (#3439) 2025-04-29 11:39:38 +01:00
Dockerfile.fat Bump gradle from 8.13-jdk21 to 8.14-jdk21 (#3439) 2025-04-29 11:39:38 +01:00
Dockerfile.ultra-lite Security fixes, enterprise stuff and more (#3241) 2025-03-25 17:57:17 +00:00
gradle.properties update gradle-wrapper binaries (#2671) 2025-01-12 13:46:40 +00:00
gradlew Upgrade Gradle to 8.14 in CI Workflows and Gradle Wrapper (#3425) 2025-04-27 16:17:07 +01:00
gradlew.bat Upgrade Gradle to 8.14 in CI Workflows and Gradle Wrapper (#3425) 2025-04-27 16:17:07 +01:00
HowToAddNewLanguage.md 2299 feature request language selection overhaul (#3017) 2025-02-22 01:36:55 +00:00
HowToUseOCR.md Improve Markdown documentation a bit 2024-12-22 17:37:58 +08:00
lauch4jConfig.xml
README.md updated the languages list (#3510) 2025-05-12 10:36:33 +01:00
SECURITY.md Improve Markdown documentation a bit 2024-12-22 17:37:58 +08:00
settings.gradle Upgrade Gradle to 8.14 in CI Workflows and Gradle Wrapper (#3425) 2025-04-27 16:17:07 +01:00
USERS.md Create USERS.md (#2700) 2025-01-14 15:32:15 +00:00

Stirling-PDF

Docker Pulls Discord OpenSSF Scorecard GitHub Repo stars

Stirling PDF - Open source locally hosted web PDF editor | Product Hunt Deploy to DO

Stirling-PDF is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements.

All files and PDFs exist either exclusively on the client side, reside in server memory only during task execution, or temporarily reside in a file solely for the execution of the task. Any file downloaded by the user will have been deleted from the server by that point.

Homepage: https://stirlingpdf.com

All documentation available at https://docs.stirlingpdf.com/

stirling-home

Features

  • 50+ PDF Operations
  • Parallel file processing and downloads
  • Dark mode support
  • Custom download options
  • Custom 'Pipelines' to run multiple features in a automated queue
  • API for integration with external scripts
  • Optional Login and Authentication support (see here for documentation)
  • Database Backup and Import (see here for documentation)
  • Enterprise features like SSO see here

PDF Features

Page Operations

  • View and modify PDFs - View multi-page PDFs with custom viewing, sorting, and searching. Plus, on-page edit features like annotating, drawing, and adding text and images. (Using PDF.js with Joxit and Liberation fonts)
  • Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages
  • Merge multiple PDFs 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 percentage
  • Adjust contrast
  • Crop PDF
  • Auto-split PDF (with physically scanned page dividers)
  • Extract page(s)
  • Convert PDF to a single page
  • Overlay PDFs on top of each other
  • PDF to a single page
  • Split PDF by sections

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
  • Convert PDF to XML
  • Convert PDF to CSV
  • 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
  • Split by Size or PDF
  • Repair PDFs
  • Detect and remove blank pages
  • Compare two PDFs and show differences in text
  • Add images to PDFs
  • Compress PDFs to decrease their filesize (using qpdf)
  • Extract images from PDF
  • Remove images from PDF
  • Extract images from scans
  • Remove annotations
  • Add page numbers
  • Auto-rename files by detecting PDF header text
  • OCR on PDF (using Tesseract OCR)
  • PDF/A conversion (using LibreOffice)
  • Edit metadata
  • Flatten PDFs
  • Get all information on a PDF to view or export as JSON
  • Show/detect embedded JavaScript

📖 Get Started

Visit our comprehensive documentation at docs.stirlingpdf.com for:

  • Installation guides for all platforms
  • Configuration options
  • Feature documentation
  • API reference
  • Security setup
  • Enterprise features

Supported Languages

Stirling-PDF currently supports 40 languages!

Language Progress
Arabic (العربية) (ar_AR) 83%
Azerbaijani (Azərbaycan Dili) (az_AZ) 82%
Basque (Euskara) (eu_ES) 48%
Bulgarian (Български) (bg_BG) 92%
Catalan (Català) (ca_CA) 89%
Croatian (Hrvatski) (hr_HR) 81%
Czech (Česky) (cs_CZ) 91%
Danish (Dansk) (da_DK) 80%
Dutch (Nederlands) (nl_NL) 79%
English (English) (en_GB) 100%
English (US) (en_US) 100%
French (Français) (fr_FR) 92%
German (Deutsch) (de_DE) 99%
Greek (Ελληνικά) (el_GR) 91%
Hindi (हिंदी) (hi_IN) 91%
Hungarian (Magyar) (hu_HU) 99%
Indonesian (Bahasa Indonesia) (id_ID) 80%
Irish (Gaeilge) (ga_IE) 91%
Italian (Italiano) (it_IT) 99%
Japanese (日本語) (ja_JP) 93%
Korean (한국어) (ko_KR) 92%
Norwegian (Norsk) (no_NB) 86%
Persian (فارسی) (fa_IR) 87%
Polish (Polski) (pl_PL) 95%
Portuguese (Português) (pt_PT) 91%
Portuguese Brazilian (Português) (pt_BR) 97%
Romanian (Română) (ro_RO) 75%
Russian (Русский) (ru_RU) 93%
Serbian Latin alphabet (Srpski) (sr_LATN_RS) 60%
Simplified Chinese (简体中文) (zh_CN) 93%
Slovakian (Slovensky) (sk_SK) 69%
Slovenian (Slovenščina) (sl_SI) 94%
Spanish (Español) (es_ES) 98%
Swedish (Svenska) (sv_SE) 87%
Thai (ไทย) (th_TH) 80%
Tibetan (བོད་ཡིག་) (zh_BO) 88%
Traditional Chinese (繁體中文) (zh_TW) 99%
Turkish (Türkçe) (tr_TR) 97%
Ukrainian (Українська) (uk_UA) 96%
Vietnamese (Tiếng Việt) (vi_VN) 73%
Malayalam (മലയാളം) (ml_ML) 99%

Stirling PDF Enterprise

Stirling PDF offers an Enterprise edition of its software. This is the same great software but with added features, support and comforts. Check out our Enterprise docs

🤝 Looking to contribute?

Join our community: