locally hosted web application that allows you to perform various operations on PDF files
Go to file
Omar Ahmed Hassan 22af79a279
Feature: Support manual redaction (#2433)
# Description

## Manual Redaction:

- ### Text Selection-based redaction:
-
![image](https://github.com/user-attachments/assets/e59c5e6c-ef52-4f54-a98e-fc26e3226c8e)
- Users can now redact currently selected text by selecting the text
then clicking `ctrl + s` shortcut or by pressing on **apply/save/disk
icon** in the toolbar.
- Users can delete/cancel the redacted area by clicking on the box
containing the text, then clicking on `delete/trash` icon or by using
the shortcut `delete`.
- Users can customize the color of the redacted area/text (after the
redaction was applied) by simply clicking on the box containing the
text/area then clicking on the `color palette` icon and choosing the
color they want.
- Users can choose to select the color of redaction before redacting
text or applying changes (this only affects newly created redaction
areas, to change the color of an existing one; check the previous bullet
point).


- ### Draw/Area-based redaction:
-
![image](https://github.com/user-attachments/assets/e2968ae3-ebaf-497e-b3bd-0c8c8f4ee157)
- Users can now redact an area in the page by selecting the then
clicking `ctrl + s` shortcut or by pressing on **apply/save/disk icon**
in the toolbar.
- Users can delete/cancel the redacted area by clicking on the drawn
box, then clicking on `delete/trash` icon or by using the shortcut
`delete` (requires temporarily turning off drawing mode).
- Users can customize the color of the redacted area (after the
redaction was applied) by simply clicking on the box containing the area
then clicking on the `color palette` icon and choosing the color they
want.
- Users can choose to select the color of redaction before drawing the
box or applying changes (this only affects newly created redaction
areas, to change the color of an existing one; check the previous bullet
point).

 - ### Page-based redaction:
-
![image](https://github.com/user-attachments/assets/aba59432-23e7-4fe6-aa28-872c23a91242)
- Users can now redact **ENTIRE** pages by specifying the page
number(s), range(s) or functions.
- Users can customize the color of page-based redaction (doesn't affect
text-based nor draw-based redactions).

### Redaction modes:
There are three modes of redaction/operation currently supported
  - Text Selection-based redaction (TEXT)
  - Draw/Area-based redaction (DRAWING)
  - None - by simply not choosing any of the above modes (NONE).

## How to use:

- **Text Selection-based redaction:** click on this icon in the toolbar
![image](https://github.com/user-attachments/assets/52cc31ef-6946-482c-84a2-1ddb79646dd8)
to enable `text-selection redaction mode` then select the text you want
to redact then press `ctrl + s` or click on the disk/save icon
![image](https://github.com/user-attachments/assets/f2bdf2f2-ee07-4682-bb9a-95e13a1004cf).
- **Draw/Area-based redaction:** click on this icon in the toolbar
![image](https://github.com/user-attachments/assets/fe00dca9-761e-47a0-a748-2041830dc73e)
to enable `draw/area-based redaction` then `left mouse click (LMB)` on
the starting point of the rectangle, then once you are satisfied with
the rectangle's placement/dimensions then `left mouse click (LMB)` again
to apply the redaction.
- **Example:** `Left mouse click (LMB)` then move mouse to the right
then bottom then `Left mouse click (LMB)`.
- Note: Red box/rectangle borders indicate that you have not yet saved
(you need to left click on the page to save)
![image](https://github.com/user-attachments/assets/5ce5f789-9d6f-4984-8555-e8fef2a3e3cc)
once saved the borders will become green
![image](https://github.com/user-attachments/assets/85cabb9f-e7ee-4268-90cd-80493b625466)
(they also become clickable/hover-able when drawing mode is off).
- **Page-based redactions:**: Insert the page number(s), range(s) and/or
functions (separated by `,`) then select your preferred color and click
on `Redact` to submit.

![image](https://github.com/user-attachments/assets/ed8a0a98-32b2-4ae1-a3c7-c54bfe0fea66)

- **Color Customizations:**
- You can change the redaction color for new redactions by clicking on
this icon in the toolbar
![image](https://github.com/user-attachments/assets/bad573ee-0545-4329-b131-2022f970f134).
- You can change the redaction color for existing redactions by hovering
over the redaction box then clicking on it (`Left mouse click LMB`) then
clicking on color palette (highlighted in red in the picture)
![image](https://github.com/user-attachments/assets/22281a81-2cd9-4771-9a93-a75b6dd93433)
then select your preferred color.

- **Deletions:**
- You can delete a redacted area by hovering over the redaction box then
clicking on it (`Left mouse click LMB`) then clicking on the trash icon
(highlighted in red in the picture)
![image](https://github.com/user-attachments/assets/f0347279-8211-4b1c-a91d-c1fcb929cc5d).

## Card in the home page:

![image](https://github.com/user-attachments/assets/b3fb16eb-5ff0-4548-9f22-b1b8fe162c8b)

Closes #465

## Checklist

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have performed a self-review of my own code
- [x] I have attached images of the change if it is UI based
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] If my code has heavily changed functionality I have updated
relevant docs on [Stirling-PDFs doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
- [ ] My changes generate no new warnings
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

---------

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-01-06 11:38:44 +00:00
.github Bump docker-compose from v2.29.1 to v2.32.1 (#2600) 2025-01-04 18:06:51 +00:00
.vscode Bump googleJavaFormat from 1.22.0 to 1.25.2 2024-12-17 11:01:17 +01:00
cucumber Enhancement: Enhance NFunction evaluation and support advanced NFunctions (#2577) 2025-01-02 14:48:20 +00:00
docs [ImgBot] Optimize images (#1455) 2024-06-14 19:38:54 +01:00
exampleYmlFiles X-API-key to X-API-KEY 2024-12-10 20:39:24 +00:00
gradle/wrapper Update gradle-wrapper.properties 2024-12-21 12:52:14 +00:00
images [ImgBot] Optimize images (#1455) 2024-06-14 19:38:54 +01:00
pipeline/defaultWebUIConfigs Pipeline fixes for json lists + delete func (#1425) 2024-06-09 13:56:55 +01:00
scripts Rename LANGS variable in init.sh to avoid overriding font LANGS 2024-12-16 23:55:03 +02:00
src Feature: Support manual redaction (#2433) 2025-01-06 11:38:44 +00:00
.git-blame-ignore-revs misc: update .git-blame-ignore-revs to ignore normalize files commit in blame 2024-02-11 11:54:03 -05:00
.gitattributes change to Pdf.js-Legacy Version 4.3.136 (#1444) 2024-06-12 20:33:25 +01:00
.gitignore extends the .gitignore for cert and ssh (#2572) 2024-12-30 23:20:10 +00:00
.pre-commit-config.yaml Update .pre-commit-config.yaml no. 2 2024-12-21 15:34:07 +01:00
build.gradle Revert "removes unused implementation com.unboundid.product.scim2" (#2607) 2025-01-04 00:27:43 +00:00
CONTRIBUTING.md Move docs to website (#2571) 2024-12-30 15:49:28 +00:00
DATABASE.md Adds manual backup creation 2024-12-17 23:23:16 +01:00
DeveloperGuide.md Merge remote-tracking branch 'origin/main' into docker-rename 2024-12-22 11:20:19 +00:00
Dockerfile 3.21.0 py3-opencv requires python 4.10 which means broken 2024-12-22 13:37:41 +00:00
Dockerfile.fat Bump gradle from 8.11-jdk17 to 8.12-jdk17 (#2556) 2025-01-02 14:55:42 +00:00
Dockerfile.ultra-lite rename 2024-12-22 11:17:22 +00:00
gradlew Make ./gradlew executable; accept .java files improvements after running ./gradlew build 2024-01-03 03:21:11 +03:00
gradlew.bat refactor: normalize files 2024-02-11 11:47:00 -05:00
HowToAddNewLanguage.md fixed minor bugs in Markdown (#2152) 2024-11-03 07:20:10 +00:00
HowToUseOCR.md Improve Markdown documentation a bit 2024-12-22 17:37:58 +08:00
lauch4jConfig.xml Upload jar and .exe to release 2023-06-10 15:05:38 +01:00
LICENSE Update LICENSE to MIT 2024-09-02 11:01:17 +01:00
README.md 📝 Update README: Translation Progress Table (#2608) 2025-01-04 18:07:06 +00:00
SECURITY.md Improve Markdown documentation a bit 2024-12-22 17:37:58 +08:00
settings.gradle Rename app to Stirling-PDF not S-pdf 2023-06-10 18:04:06 +01:00
test2.sh rename 2024-12-22 11:17:22 +00:00
test.sh rename 2024-12-22 11:17:22 +00:00

Stirling-PDF

Docker Pulls Discord Docker Image Version (tag latest semver) 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.

All information 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 38 languages!

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

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: