Bumps [commons-io:commons-io](https://github.com/apache/commons-io) from 2.20.0 to 2.21.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/apache/commons-io/blob/master/RELEASE-NOTES.txt">commons-io:commons-io's changelog</a>.</em></p> <blockquote> <p>Apache Commons IO 2.21.0 Release Notes</p> <p>The Apache Commons IO team is pleased to announce the release of Apache Commons IO 2.21.0.</p> <h2>Introduction</h2> <p>The Apache Commons IO library contains utility classes, stream implementations, file filters, file comparators, endian transformation classes, and much more.</p> <p>Version 2.21.0: Java 8 or later is required.</p> <h2>New features</h2> <p>o FileUtils#byteCountToDisplaySize() supports Zettabyte, Yottabyte, Ronnabyte and Quettabyte <a href="https://redirect.github.com/apache/commons-io/issues/763">#763</a>. Thanks to strangelookingnerd, Gary Gregory. o Add org.apache.commons.io.FileUtils.ONE_RB <a href="https://redirect.github.com/apache/commons-io/issues/763">#763</a>. Thanks to strangelookingnerd, Gary Gregory. o Add org.apache.commons.io.FileUtils.ONE_QB <a href="https://redirect.github.com/apache/commons-io/issues/763">#763</a>. Thanks to strangelookingnerd, Gary Gregory. o Add org.apache.commons.io.output.ProxyOutputStream.writeRepeat(byte[], int, int, long). Thanks to Gary Gregory. o Add org.apache.commons.io.output.ProxyOutputStream.writeRepeat(byte[], long). Thanks to Gary Gregory. o Add org.apache.commons.io.output.ProxyOutputStream.writeRepeat(int, long). Thanks to Gary Gregory. o Add length unit support in FileSystem limits. Thanks to Piotr P. Karwasz. o Add IOUtils.toByteArray(InputStream, int, int) for safer chunked reading with size validation. Thanks to Piotr P. Karwasz. o Add org.apache.commons.io.file.PathUtils.getPath(String, String). Thanks to Gary Gregory. o Add org.apache.commons.io.channels.ByteArraySeekableByteChannel. Thanks to Gary Gregory. o Add IOIterable.asIterable(). Thanks to Gary Gregory. o Add NIO channel support to <code>AbstractStreamBuilder</code>. Thanks to Piotr P. Karwasz. o Add CloseShieldChannel to close-shielded NIO Channels <a href="https://redirect.github.com/apache/commons-io/issues/786">#786</a>. Thanks to Piotr P. Karwasz. o Added IOUtils.checkFromIndexSize as a Java 8 backport of Objects.checkFromIndexSize <a href="https://redirect.github.com/apache/commons-io/issues/790">#790</a>. Thanks to Piotr P. Karwasz.</p> <h2>Fixed Bugs</h2> <p>o When testing on Java 21 and up, enable -XX:+EnableDynamicAgentLoading. Thanks to Gary Gregory. o When testing on Java 24 and up, don't fail FileUtilsListFilesTest for a different behavior in the JRE. Thanks to Gary Gregory. o ValidatingObjectInputStream does not validate dynamic proxy interfaces. Thanks to Stanislav Fort, Gary Gregory. o BoundedInputStream.getRemaining() now reports Long.MAX_VALUE instead of 0 when no limit is set. Thanks to Piotr P. Karwasz. o BoundedInputStream.available() correctly accounts for the maximum read limit. Thanks to Piotr P. Karwasz. o Deprecate IOUtils.readFully(InputStream, int) in favor of toByteArray(InputStream, int). Thanks to Gary Gregory, Piotr P. Karwasz. o IOUtils.toByteArray(InputStream) now throws IOException on byte array overflow. Thanks to Piotr P. Karwasz. o Javadoc general improvements. Thanks to Gary Gregory, Piotr P. Karwasz. o IOUtils.toByteArray() now throws EOFException when not enough data is available <a href="https://redirect.github.com/apache/commons-io/issues/796">#796</a>. Thanks to Piotr P. Karwasz. o Fix IOUtils.skip() usage in concurrent scenarios. Thanks to Piotr P. Karwasz. o [javadoc] Fix XmlStreamReader Javadoc to indicate the correct class that is built <a href="https://redirect.github.com/apache/commons-io/issues/806">#806</a>. Thanks to J Hawkins.</p> <h2>Changes</h2> <p>o Bump org.apache.commons:commons-parent from 85 to 91 <a href="https://redirect.github.com/apache/commons-io/issues/774">#774</a>, <a href="https://redirect.github.com/apache/commons-io/issues/783">#783</a>, <a href="https://redirect.github.com/apache/commons-io/issues/808">#808</a>. Thanks to Gary Gregory, Dependabot.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|---|---|---|
| .claude | ||
| .devcontainer | ||
| .github | ||
| .vscode | ||
| app | ||
| devGuide | ||
| devTools | ||
| docs | ||
| exampleYmlFiles | ||
| gradle/wrapper | ||
| images | ||
| scripts | ||
| testing | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| build.gradle | ||
| CONTRIBUTING.md | ||
| DATABASE.md | ||
| Dockerfile | ||
| Dockerfile.dev | ||
| Dockerfile.fat | ||
| Dockerfile.ultra-lite | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| HowToUseOCR.md | ||
| launch4jConfig.xml | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| settings.gradle | ||

Stirling-PDF
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/
Features
- Parallel file processing and downloads
- Dark mode support
- Custom download options
- Custom 'Pipelines' to run multiple features in an automated queue
- API for integration with external scripts
- Optional Login and Authentication support (see here for documentation)
- Enterprise features like SSO (see here for documentation)
- Database Backup and Import (see here for documentation)
50+ PDF Operations
Organise
- Merge: Combine multiple PDFs into one
- Split: Divide PDFs into multiple files
- Extract page(s): Extract specific pages from PDF
- Remove: Delete pages from PDF
- Crop PDF: Adjust PDF page boundaries
- Rotate: Rotate pages in 90-degree increments
- Adjust page size/scale: Resize page contents
- Multi-Page Layout: Add multiple pages to PDF
- PDF to Single Large Page: Convert to single continuous page
- Organize: Rearrange PDF pages
Convert to PDF
- Image to PDF: Convert images to PDF format
- Convert file to PDF: Convert various common file types to PDF
- HTML to PDF: Transform HTML documents to PDF
- Markdown to PDF: Convert Markdown files to PDF
- CBZ to PDF: Convert comic book archives
- CBR to PDF: Convert comic book rar archives
- Email to PDF: Convert email files to PDF
- Vector Image to PDF: Convert vector images (PS, EPS, EPSF) to PDF format
Convert from PDF
- PDF to Word: Convert to document (docx, doc, odt) format
- PDF to Image: Extract PDF pages as images
- PDF to RTF (Text): Convert to Rich Text Format
- PDF to Presentation: Convert to presentation (pptx, ppt, odp) format
- PDF to CSV: Extract tables to CSV
- PDF to XML: Convert to XML format
- PDF to HTML: Transform to HTML
- PDF to PDF/A: Convert to archival (PDF/A-1b, PDF/A-2b) format
- PDF to Markdown: Convert PDF to Markdown
- PDF to CBZ: Convert to comic book archive
- PDF to CBR: Convert to comic book rar archive
- PDF to Vector Image: Convert PDF to vector image (EPS, PS, PCL, XPS) format
Sign & Security
- Sign: Add digital signatures
- Remove Password: Remove PDF security
- Add Watermark: Apply watermarks
- Sign with Certificate: Certificate-based signing
- Add Stamp to PDF: Apply digital stamps
- Auto Redact: Automatically redact content
- Change Permissions: Modify access permissions
- Add Password: Apply PDF encryption
- Manual Redaction: Manual content redaction
- Remove Certificate Sign: Remove digital signatures
- Sanitize: Clean PDF of potential security issues
- Validate PDF Signature: Verify digital signatures
View & Edit
- OCR / Cleanup scans: Optical Character Recognition
- Add Image: Insert images into PDF
- Extract Images: Extract embedded images
- Change Metadata: Edit PDF metadata
- Get ALL Info on PDF: Comprehensive PDF analysis
- Advanced Colour options: Colour manipulation (various options for colour inversion, CMYK conversion)
- Compare: Compare PDF documents
- Add Page Numbers: Insert page numbering
- Flatten: Flatten PDF layers, and interactive elements
- Remove Annotations: Delete comments and markups
- Remove Blank pages: Delete empty pages
- Remove Image: Delete embedded images
- View/Edit PDF: Interactive PDF editing
- Unlock PDF Forms: Enable form editing
- Add Attachments: Attach files to PDF
Advanced
- Compress: Reduce file size
- Pipeline: Automated workflow processing (OCR images pipeline, prepare PDFs for emailing pipeline)
- Adjust Colours/Contrast: Colour and contrast adjustment
- Auto Rename PDF File: Automatic file renaming
- Auto Split Pages: Automatic page splitting
- Detect/Split Scanned photos: Photo detection and splitting
- Overlay PDFs: Layer PDFs over each other
- Repair: Fix corrupted PDFs
- Show JavaScript: Display embedded JavaScript
- Auto Split by Size/Count: Split by file size or page count
- Split PDF by Chapters: Chapter-based splitting
- Split PDF by Sections: Section-based splitting
- Scanner Effect: Apply scanner-like effects
- Edit Table of Contents: Modify PDF bookmarks and TOC
📖 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!
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:
