mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-11-16 01:21:16 +01:00
2.7 KiB
2.7 KiB
PDF JSON Editor Backlog
-
Type3 Font Support (Text Additions)
- Parse Type3 charprocs to extract glyph outlines, build a synthetic TrueType/OpenType font (FontTools, Ghostscript
ps2ttf, etc.), and store it inwebProgram/pdfProgramfor client use. - Preserve the original Type3 resources for round-trip fidelity; use the synthesized font only for edited elements while reusing the original stream elsewhere.
- Extend conversion logic so fallback kicks in only when conversion fails, and track which elements rely on the synthetic font to avoid mixing source glyphs (
PdfJsonConversionService.java:998-1090,1840-2012). - Update the viewer/renderer to surface conversion errors and block editing when no faithful font can be produced.
- Parse Type3 charprocs to extract glyph outlines, build a synthetic TrueType/OpenType font (FontTools, Ghostscript
-
Vector Artwork Preview
- Reuse
contentStreamsalready emitted by the backend to render vector paths alongside text/images in the React workspace (frontend/src/proprietary/components/tools/pdfJsonEditor/PdfJsonEditorView.tsx:1048-1285). - Either render via Canvas/SVG on the client or call back to a server-rendered bitmap for the background. Keep edited text/images layered on top.
- Maintain export fidelity by writing any untouched vector stream back during PDF regeneration (
PdfJsonConversionService.java:1714-1799,520-612).
- Reuse
-
Lazy Fetch Endpoints
- Provide separate endpoints to fetch:
- Raw COS dictionaries/font programs when the user opens advanced panels.
- Page-level raster/vector previews to avoid sending large
imageDataupfront.
- Reuse the existing job cache (
documentCache) to serve these on demand and clean up after timeouts (PdfJsonConversionService.java:3608-3687).
- Provide separate endpoints to fetch:
-
Editor UX Safeguards
- Respect
fallbackFontServiceindicators; mark groups using fallback glyphs so the UI can warn about possible appearance shifts (frontend/src/proprietary/components/tools/pdfJsonEditor/PdfJsonEditorView.tsx:1260-1287). - Surface when Type3 conversion was downgraded (e.g., rasterized glyphs) and limit editing to operations that keep the PDF stable.
- Respect
-
Canonical Font Sharing
- Emit fonts once per unique embedded program. Add a
canonicalFontsarray containing the full payload (program, ToUnicode, metadata) and a compactfontAliasesmapping{pageNumber, fontId, canonicalUid}so text elements can still reference per-page IDs. - Store COS dictionaries only on canonical entries; aliases should keep light fields (e.g., size adjustments) if they differ.
- Update
buildFontMapto resolve aliases when recreating PDFBox fonts, and adjust the front end to load programs via the canonical UID. - Optional: expose a lazy endpoint for the original COS dictionary if the canonical record strips it, so export still reconstructs untouched fonts.
- Emit fonts once per unique embedded program. Add a