Commit Graph
93 Commits
Author SHA1 Message Date
azeeee05 99f87eb7cf feat: implement PDF page parsing, text extraction, and document modeling logic 2026-07-07 19:03:11 +05:30
azeeee05 5b034c97b8 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into azeem 2026-07-01 15:06:08 +05:30
azeeee05 bc3ed20a8b done the signature module 2026-07-01 15:05:37 +05:30
Furqan-14 17023abf27 feat: updated text handling bugs 2026-06-30 21:18:46 +05:30
azeeee05 afa8c0a702 feat: implement PDF toolbar, viewer components, and redaction support layer 2026-06-30 11:32:15 +05:30
Furqan-14 3b1c36d645 fix: code refactor 2026-06-29 10:51:04 +05:30
Furqan-14 e795eed63e feat: updated font handling in older pdfs, along with tables 2026-06-26 11:33:28 +05:30
Furqan-14 52b45d82ea Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-24 10:42:26 +05:30
Furqan-14 e6e1e0ba7c fix: font handling in revista 2026-06-24 10:42:05 +05:30
saqib mir 23b162f3c2 create the api for the display list 2026-06-22 16:23:59 +05:30
Furqan-14 e8620947a5 fix: code cleanup 2026-06-22 15:18:47 +05:30
saqib mir ac5a1cc516 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-22 10:48:57 +05:30
Furqan-14 c0bcfe47a2 fix: additional font handling, with operators font issues 2026-06-22 10:48:00 +05:30
saqib mir e1e1c91736 fix the issue 2026-06-22 10:17:51 +05:30
saqib mir 7e6e7ef32d Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-18 17:31:53 +05:30
Furqan-14 a124a43877 feat: implemented multi page reflow 2026-06-18 16:48:29 +05:30
saqib mir b3d3ac4469 Image XObject handler (Do operator) 2026-06-18 16:14:29 +05:30
Furqan-14andClaude Opus 4.8 63369d4259 fix(reflow): wrapped bullet continuation got bullet-gap spacing instead of wrap spacing
buildBulletItem computed `leading` as the median over ALL paragraph line gaps. In a bullet list
the bullet-to-bullet gap (~14.2pt) is larger than the within-bullet wrap gap (~12.2pt) and dominates
the median, so a newly-wrapped continuation line was placed ~2pt too low (visible extra spacing
between e.g. the Architecture line and its "Design Patterns…" continuation).

Use the WRAP spacing instead: prefer the edited item's own internal line gap (if it already wraps),
then any hanging-continuation gap in the block, then the all-lines median, then font*1.2. Only
affects multi-line (wrapped) bullet items; single-line edits emit no continuation so are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 21:40:59 +05:30
Furqan-14andClaude Opus 4.8 6edec0cf22 fix(reflow): inserted bullet text picked up the bold label font
Typing at a run boundary (e.g. near "Async" in a bullet) often lands the new text in a
browser-created wrapper element whose only child is that text. resolveStyleEl's sibling-only
search then found no data-fid run and fell back to dominantFid — which for a bullet is the bold
LABEL run (its first run) — so the inserted text rendered bold.

Make resolveStyleEl CLIMB toward the editor root and scan siblings at each level (nearest
preceding run first, then following), so it reaches the real run spans alongside the wrapper and
the inserted text continues the adjacent run's font. data-advances is still read only from the
exact wrapping span, so inherited fonts correctly re-measure. Text typed inside an existing run
is unaffected (step 1 returns its span immediately).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:49:30 +05:30
Furqan-14andClaude Opus 4.8 839add269a fix(reflow): center/right edits 422'd and silently reverted
Two bugs made centered/right-aligned heading edits vanish on commit:

1. Gateway: ReflowParagraphData.align was Literal["left","justify"], so a center/right reflow
   commit failed Pydantic validation -> 422 Unprocessable Entity. Widened to include
   "center","right" (matches the frontend + engine, which already handle them).

2. Frontend: gatewayService.applyEdits caught ALL errors (incl. HTTP 422/403/500) and returned
   fake success with a phantom `${documentId}_edited` id. The app then adopted that id and 404'd
   on every fetch, so the edit silently reverted instead of showing an error. Now only genuine
   network failures use the offline fallback; real HTTP errors throw the gateway's detail so the
   caller toasts a clear message and stays on the current document.

Gateway runs with --reload (auto-picks up the model change); frontend needs a refresh.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:37:18 +05:30
Furqan-14andClaude Opus 4.8 aff19ac027 build(wasm): deploy the REAL pdfium-engine.wasm with reflow fixes (caret x0, center/right)
The live-preview engine the frontend loads is pdfium-engine.wasm, built by the
`wasm-pdfium` CMake preset (PDFENGINE_WITH_PDFIUM=ON). The reflow code is inside
`#ifdef PDFENGINE_WITH_PDFIUM`, so the `wasm` stub preset (PDFium OFF) — which
scripts/build_wasm.ps1 builds and copies to the UNUSED pdfengine.wasm — never
contained reflow at all. Result: every prior "WASM rebuilt" step updated the wrong,
reflow-less artifact, so the caret x0 fix (and center/right) never reached the browser.

Rebuilt the wasm-pdfium preset and deployed bin/pdfengine.{mjs,wasm} ->
public/pdfium-engine.{mjs,wasm} (md5 now 53d1ec9f, reflow object 631KB vs the 18KB
stub). Bumped the cache-buster so browsers fetch the new engine.

Engine .pyd + overlay-diff gate unchanged (1.70%/1.69%, render identical); the x0
change is caret-only metadata.

Follow-up: build_wasm.ps1 builds the wrong (stub) preset and deploys the wrong file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:12:44 +05:30
Furqan-14andClaude Opus 4.8 62c4aed48c fix(reflow): caret lands on wrong char in centered/right headings
The reflow caret layout hardcoded x0 = columnLeft. That matched only left-aligned
lines; for the new center/right headings the line renders at a shifted x (e.g. a
centered title starts ~215pt while columnLeft is the page margin ~54pt), so the
frontend mapped clicks and drew the caret ~160pt off the actual glyphs.

Record the line's true starting x (after lineX/center/right) as x0 instead. x0 is
caret-only metadata read by the live editor — it does not affect glyph emission or
the rendered page, so output is unchanged (overlay-diff gate identical: 1.70%/1.69%,
STRESS PASS). Rebuilt .pyd + WASM; cache version bumped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 18:10:19 +05:30
Furqan-14andClaude Opus 4.8 660649a562 fix(reflow): kill bulge/merge + font-change on edit; add center/right, IME; harden Raw Text
Reflow (primary editor):
- Geometric backstop in reflow_paragraph: adopt any text object fully inside the paragraph
  bbox that the model's objectIndices omitted (PDFium glyph->object map can return -1), so it's
  deleted + its original font is resolved. Fixes both the leftover-glyph "bulge/merge" and the
  font-substitution-on-edit (same root cause). No-op on correctly-indexed paragraphs (gate-proven
  byte-identical: overlay diff unchanged at 1.69%/1.70%).
- Preserve data-fid on edited contentEditable nodes (extractFlatRuns climbs to nearest styled
  ancestor / inherits from adjacent run) so edits keep their real font instead of the dominant.
- Converge preview & commit through one buildReflowData (no preview-OK/commit-wrong drift).
- Center/right alignment: additive emission branch (greedy path only) + heading-align inference.
- IME composition handling (suppress render mid-composition; don't commit on composing Enter).
- Fix WASM document-handle leak (free superseded versions on documentId change/unmount).
- Quiet the backstop instrumentation (warn -> debug) now the root cause is confirmed.

Raw Text / StreamEditor (beta companion):
- Permission-gate both text_objects endpoints behind canModify; label tool "(beta)".
- P1a: preserve TJ kerning numbers for same-length edits (redistribute into original slots),
  fall back to single-string collapse otherwise (never worse than before).
- P1b: reject edits with characters unencodable in the run's font (clear 400 instead of corruption).
- P2a: commit Raw Text edits as a new document version (add_document) and adopt the id via
  pushHistory, so they join undo/redo instead of mutating in place.
- P2b: exact hit-boxes from real font metrics (re-measured once @font-face loads).

WASM preview rebuilt with the reflow changes; cache version bumped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:12:53 +05:30
Furqan-14 21f0bfab9a Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-17 11:39:58 +05:30
Furqan-14 8f881dfbd5 feat: implemented reflow for bullets and single lines along with the fix for save on delay 2026-06-17 11:39:01 +05:30
saqib mir 69d7346803 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-17 11:26:18 +05:30
saqib mir a39c15d0be content completed 2026-06-17 11:03:47 +05:30
saqib mir 20ee7fbe20 content ad the frontend 2026-06-16 19:27:32 +05:30
Furqan-14 c449cf01b9 feat: updated the text reflow engine 2026-06-16 16:45:04 +05:30
Furqan-14 d53f059952 fix: reflow for bullets 2026-06-16 14:13:14 +05:30
saqib mir 32d6f1379b Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-16 10:58:17 +05:30
azeeee05 0d095cf14b Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into azeem 2026-06-16 10:57:01 +05:30
Furqan-14 ec509400e7 feat: implemented real flow text editor for paragraphs 2026-06-16 10:56:08 +05:30
azeeee05 42b4224bb3 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into azeem 2026-06-16 10:54:14 +05:30
azeeee05 f8fb4feaff done undo functions 2026-06-16 10:53:37 +05:30
saqib mir 3ad646fe6a Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-12 19:17:21 +05:30
Furqan-14 44f64a0d99 feat: implemented caret based selection at any click position 2026-06-12 19:13:29 +05:30
saqib mir 23ceda6848 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-12 15:39:27 +05:30
saqib mir 1ff5bcfd25 fix 2026-06-12 15:39:14 +05:30
Furqan-14 d47895c990 feat: implemented base editing, underline and striking 2026-06-12 15:04:09 +05:30
Furqan-14 f11bac7419 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-12 11:31:40 +05:30
Furqan-14 03cabc05a3 feat: implemented unicode and update base fonts, and sub fonts 2026-06-12 11:31:10 +05:30
saqib mir 74a2ba7b8d merge conflict solve 2026-06-11 19:36:38 +05:30
saqib mir 4d900c3d0c Underline + decoration renderer (DecorationBuilder) 2026-06-11 19:30:27 +05:30
Furqan-14 98c63f91fc Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-11 19:22:07 +05:30
Furqan-14 377a9044af feat: implemented hit testing, form field, content stream and base security hardening 2026-06-11 19:19:01 +05:30
saqib mir b52890818b update the pipiline 2026-06-11 18:19:26 +05:30
saqib mir 9159426037 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-11 12:02:40 +05:30
azeeee05 c410f787f7 done anotations update 2026-06-11 11:46:15 +05:30
saqib mir 33667f8985 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-11 11:27:27 +05:30