zip download of single pdfs

This commit is contained in:
2026-05-17 02:57:39 +02:00
parent 13097b73fc
commit 4b0046a943
11 changed files with 272 additions and 27 deletions

14
README
View File

@@ -4,7 +4,7 @@
Current hosted version: <https://pdftools.add-ideas.de>
Current release: **v0.3.0 — Selection workspace and maintenance release**. See [`CHANGELOG.md`](CHANGELOG.md) for release notes and milestone history.
Current release: **v0.3.1 — Split ZIP export release**. See [`CHANGELOG.md`](CHANGELOG.md) for release notes and milestone history.
The app is a static React/Vite single-page application. There is no backend service, no server-side queue, and no server-side document storage. When hosted correctly, the server only delivers HTML, JavaScript, CSS, and static assets; PDF processing happens in the user's browser.
@@ -14,7 +14,7 @@ Many everyday PDF tasks are not full document-authoring tasks. They are page-wor
- remove pages before sending a document;
- rotate scanned pages;
- split a PDF into single-page files;
- split a PDF into single-page files and download them individually or as one ZIP archive;
- merge another PDF into the current document;
- extract a subset of pages;
- reorder pages visually;
@@ -72,6 +72,7 @@ This makes the project especially useful for self-hosted environments, public-se
- Extract selected pages into a new PDF.
- Open selected pages as a new active workspace for continued editing.
- Split the source PDF into single-page PDFs.
- Download all split results as one ZIP archive.
- Merge another PDF by replacing, appending, or inserting it into the current workspace.
### Keyboard shortcuts
@@ -227,10 +228,10 @@ The application version shown in the header is defined in `src/version.ts`. The
The current development baseline is:
```text
v0.3.0 — Selection workspace and maintenance release
v0.3.1 — Split ZIP export release
```
This release preserves the browser-only workspace baseline and adds the first post-refactor feature: opening selected pages as a new active workspace. Workspace state, thumbnail handling, generated download URLs, page-grid components, tests, type-checking, linting, and formatting are separated enough to support additional feature work without turning `App.tsx` back into a monolith.
This release preserves the browser-only workspace baseline and adds split-result ZIP downloads on top of the selection-workspace feature. Workspace state, thumbnail handling, generated download URLs, page-grid components, tests, type-checking, linting, and formatting are separated enough to support additional feature work without turning `App.tsx` back into a monolith.
## Project structure
@@ -239,7 +240,7 @@ src/
App.tsx Main application orchestration and UI wiring
components/
ActionDialog.tsx Reusable confirmation/action dialog
ActionsPanel.tsx Export, extract, and split actions
ActionsPanel.tsx Export, extract, split, and ZIP download actions
FileLoader.tsx PDF file loading
HelpDialog.tsx In-app tutorial and shortcut reference
Layout.tsx Application shell/header
@@ -249,6 +250,7 @@ src/
pdf/
pdfService.ts pdf-lib operations: load, merge, split, export
pdfThumbnailService.ts pdf.js thumbnail rendering
pdfZipService.ts Browser-side ZIP packaging for split results
pdfTypes.ts PDF-related types
workspace/
workspaceCommands.ts Command model for undo/redo
@@ -306,7 +308,7 @@ src/
### Milestone 5: Export and power tools
- [ ] Basic text extraction.
- [ ] ZIP export for split results.
- [x] ZIP export for split results.
- [ ] Optimize/compress MVP.
- [ ] Carefully scoped encrypted PDF handling.