mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-13 23:17:40 +00:00
* M2: pages with /UserUnit are shown at their size in points, as in Acrobat /UserUnit gives the size of a page's user-space unit in points; PdfCraft ignored it everywhere except the measuring tools, so a /UserUnit 2 page was shown, extracted, printed and edited at half its size, and the measuring tools disagreed with the rest of the app. The value is now read as Acrobat reads it (the page's own entry, a number from 1 up, at most 75,000; anything else counts as 1) in two places: - vendored hayro-syntax Page (patch 13): render_dimensions and initial_transform give the page in points, so rendering, tiles, PageInfo and the text layer follow; a page without it keeps exactly the transform it had. - pdfcraft-model Page: user_unit(), and display_size/view_matrix in points, so print, header/footer, watermark, background, added content and measuring agree with the screen. The measure crate drops its own arithmetic. Added items record the /UserUnit they were written for; items without the record (written before) read back converted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * M2: an added item's recorded /UserUnit is clamped like the page's An infinite or huge recorded /UserUnit made the scale factor 0 and collapsed the item. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
pdfcraft-model
Layer L2: typed views over the pdfcraft-cos object graph. It starts small, with what several
L3/L4 crates need:
pages(doc): leaf pages in order, each with its inherited attributes (Resources,MediaBox,CropBox,Rotate, §7.7.3.4) resolved;Page::crop,Page::rotation,Page::user_unitandPage::view_matrix: the displayed page's geometry, and the matrix from "display space" (points, origin at the bottom-left of the page as shown, after/UserUnitand/Rotate) to user space, so content can be placed the way the reader sees the page./UserUnitis read as Acrobat reads it: the page's own entry, a number from 1 up, at most 75,000; anything else counts as 1.view_matrix_for(rotation, rect)is the same matrix for any rectangle, e.g. to draw a comment's picture upright inside its user-space/Recton a turned page.
organize, annot and forms still carry their own small walkers; they move here as the model
grows (ADR-0004).