Skip to content

Printer marks and production furniture (SheetFurniture engine) #601

Description

@mberrys

Scope

A reusable SheetFurniture engine shared by ordinary PDFs and the imposition engine. Marks are generated as dedicated Form XObjects/OCGs so they stay individually identifiable, removable and reproducible — never appended as raw lines into existing page content.

Model

FurnitureSet: crop_marks, bleed_marks, registration_marks, color_control_bar, slug, page_label, job_metadata, placement_rules.

Rules

  • Crop marks derive from the TrimBox, bleed marks from the BleedBox; the engine calculates the required additional MediaBox space and expands it rather than letting marks collide with production artwork.
  • Registration targets use a deliberate all-separation strategy, not ordinary rich black.
  • Slug fields are tokenized: {filename} {page} {job_id} {date} {output_intent} {sheet} {side}.
  • Colour bars support CMYK patches, selected spot inks, tint ramps, and user-defined presets.
  • Do not couple generation to source-page coordinates: the same furniture must work on an imposed press sheet later.

UI

Live preview with measurable offsets: mark length, offset from trim, stroke width, slug height, sides enabled, preset.

Deliverables

  • Furniture engine + FurnitureSet schema with fixtures per mark class.
  • Box arithmetic proven: MediaBox/BleedBox/TrimBox expansion, no artwork overlap, idempotent reapplication.
  • Marks removable and reproducible from the set alone; tokens resolved from confirmed job context.
  • Regression: existing page content and page boxes untouched apart from the declared expansion.
  • Preview parity: displayed offsets equal the generated geometry.

Prerequisites / related

Consumed by Imposition: n-up, gang-up, booklets, creep (sheet furniture) and by packaging layers; needs the shared mutation foundation.

Batch context (2026-09-15 architecture review). These items are epics sharing five foundations, not isolated UI features: a production PDF object/mutation engine (parse page content/resources into an editable object model, mutate transactionally, regenerate a valid PDF, preserve untouched objects, run render/preflight/separation regression after every mutation), a separation/color engine, a sheet/layout engine, a production semantic/job model, and a revision/provenance model. Every edit is expected to produce a change record (changed_object_ids, operation, before, after, warnings, reversible). Recommended sequencing: Ink Manager + mutation foundation + printer furniture + basic hairline normalization first; then imposition and direct-object editing foundations; then ISO 19593 packaging; then PDF/VT and XJDF; customer portals and cloud collaboration much later.

Parked: no milestone, labeled future planned. Promote by assigning a milestone and removing the label when a release train picks this up.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    future plannedParked future work: no milestone; promote by assigning a milestone

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions