Goal
Ship the first useful Edit PDF workflow: add new content without rasterizing the original document.
Depends on
- Reusable visual PDF editor canvas issue.
Scope
- Add text boxes with position, size, color and basic alignment.
- Add PNG/JPEG images with move, resize and aspect-ratio lock.
- Add rectangle, line and freehand drawing objects with color, width and opacity.
- Apply edits to one or more chosen pages.
- Generate vector/text/image overlay PDFs locally and merge them with qpdf.
- Embed a Unicode-capable bundled font and document its license.
- Show a faithful preview before saving.
Out of scope
- Reflowing or replacing existing PDF text.
- Editing embedded source images.
- Digital certificate signatures.
Acceptance criteria
- Existing text and vectors remain selectable and are not rasterized.
- Turkish characters render correctly in saved output.
- Placement matches preview on portrait, landscape, cropped and rotated pages.
- Transparency works for supported objects.
- Original files are never overwritten.
- Output opens without repair warnings in qpdf check and at least two common PDF viewers.
- Rust unit/integration tests cover escaping, page geometry and malformed input; frontend tests cover edit serialization.
Security/performance
Treat PDFs and images as untrusted input, enforce size limits, use bounded decoding, and avoid shell interpolation.
Goal
Ship the first useful Edit PDF workflow: add new content without rasterizing the original document.
Depends on
Scope
Out of scope
Acceptance criteria
Security/performance
Treat PDFs and images as untrusted input, enforce size limits, use bounded decoding, and avoid shell interpolation.