Files
admin e442a9f678 Phase 3 (Organize + robust save) + Phase 4 (Edit content); update docs
Engine:
- organize.rs: build_document(plan) core — insert/delete/rotate/crop/extract/merge/split
- watermark.rs: watermark + header/footer via PdfPages::watermark, CID Unicode fonts
- qpdf.rs: QPDF CLI wrapper — repair corrupt files, re-encrypt after edits, ensure_openable
- edit.rs: MOAT — list_objects + apply_edits (SetText VN, Transform, Delete, Add/ReplaceImage)
- Tests: organize/watermark/qpdf_safety/edit roundtrip — 43/43 engine tests green

UI (Tauri): "Tổ chức trang" mode (grid + drag-reorder + multi-select), "Sửa nội dung"
mode (WYSIWYG object overlay, edit-in-place), global undo/redo, robust file open.

Corpus: add encrypted.pdf + corrupt-truncated.pdf fixtures.

Docs: mark Phase 1-4 done in roadmap; document QPDF setup + engine module layout in
05-dev-setup; add 10-13 phase summaries & user-test checklists; README status.
2026-07-14 22:07:38 +07:00
..

Corpus PDF mẫu

Bộ file PDF dùng để test & hồi quy. Sẽ mở rộng dần theo roadmap.

File Mô tả Dùng cho
hello.pdf PDF tối giản 1 trang, text Helvetica, xref hợp lệ Smoke test render (Phase 1)
sample-multipage.pdf 3 trang Letter, nội dung biết trước + outline (Chapter 1/2/3 → trang 0/1/2) Test page_dims, extract_text, search, outline; demo viewer
big-1000.pdf 1000 trang ("Trang N"); trang index 500 có "ZZMARKER" Stress-test hiệu năng/lazy-load (mở 55ms, render 110ms, search 79ms)
encrypted.pdf sample-multipage.pdf mã hoá AES-256 qua qpdf, user password fofreexit, owner password owner-fofreexit Test QPDF encrypted-safe-save (Phase 3), bảo mật (Phase 5)
corrupt-truncated.pdf sample-multipage.pdf bị cắt cụt 200 byte cuối (mất trailer/startxref) — PDFium đọc thẳng bị FormatError, qpdf tự dựng lại xref và đọc lại được đủ 3 trang Test QPDF repair-trước-khi-mở (Phase 3)

Cần bổ sung (các phase sau)

  • File nhiều trang (100+, 1000+) — hiệu năng & lazy load.
  • File scan (ảnh) — OCR (Phase 7).
  • File tiếng Việt (font nhúng, tổ hợp dấu), CJK, RTL — edit text (Phase 4).
  • File có AcroForm — form (Phase 6).

Lưu ý bản quyền: chỉ thêm file tự tạo hoặc có giấy phép cho phép phân phối.