pdfrx_web
    Preparing search index...

    Module @pdfrx/viewer-core

    @pdfrx/viewer-core — the platform-independent core logic of the pdfrx_web viewer.

    This package contains no DOM access: it is pure geometry, layout, viewport math, text-flow analysis, and text-selection logic. All public types are plain, JSON-serializable objects so the exact same test vectors can be shared across implementations.

    Modules:

    • geometry — rect/point math, rotation, and PDF page space <-> document space conversions.
    • transform — the ViewTransform (uniform scale + translation), fit calculations, page anchors, and boundary/overscroll clamping.
    • layout — vertical/horizontal page layout.
    • text / text-formatter — the structured page text model and its flow analysis (reading order, line splitting, word/space/newline fragments).
    • selection — nearest-character hit testing, A/B anchors, word selection, and per-page range expansion.
    • page-arrangement — stable page-placement identity and pure operations for application-owned editing and synchronization models.

    Coordinate spaces: PDF page space is points (1/72"), origin bottom-left, y-up, top >= bottom; document space is y-down over the whole laid-out document; view space is document space transformed by a ViewTransform.

    @pdfrx/viewer-core

    Platform-independent core logic of a PDF viewer, in pure TypeScript. No DOM access — every type is a plain JSON-serializable object. This is the logic layer underneath @pdfrx/viewer; use it directly to build a custom viewer shell (different rendering stack, custom gestures).

    Derived from the pdfrx project.

    npm package · API reference

    npm install @pdfrx/viewer-core
    
    Module Contents
    geometry Rect/point math, page rotation, PDF page space (y-up) ↔ document space (y-down) conversions
    transform ViewTransform {zoom, xZoomed, yZoomed}, visible-rect/fit calculations, 14 page anchors, boundary clamping, underflow alignment
    layout Vertical/horizontal page layout and hit testing
    text / text-formatter Structured page text: reading-order analysis, line splitting, word/space/newline fragments, text direction (LTR/RTL/vertical), search
    selection Nearest-character hit testing, A/B selection anchors (same-page and cross-page), word selection, per-page range expansion for highlighting

    These primitives are DOM-free and JSON-serializable. They support vertical, horizontal, and custom viewer shells without coupling layout, coordinates, text analysis, or selection behavior to canvas rendering or a UI framework.

    import {
    formatText,
    findTextAndIndexForPoint,
    getSelectedRanges,
    composeSelectedText,
    layoutPagesVertical,
    } from '@pdfrx/viewer-core';

    // Build structured text from an engine's raw page text
    const pageText = formatText({ fullText, charRects }, /* pageNumber */ 1);

    // Lay out pages and hit-test a pointer position against the text
    const layout = layoutPagesVertical(pages, { margin: 8 });
    const hit = findTextAndIndexForPoint(docPoint, selectablePages);

    // Expand a selection into per-page ranges and compose the clipboard text
    const ranges = getSelectedRanges(selA, selB, getLoadedText);
    const clipboard = composeSelectedText(ranges);

    Coordinate conventions: PDF page space is points (1/72"), origin bottom-left, y-up; document space is y-down. See the architecture notes for details.

    See the complete API reference for exported geometry, layout, text, and selection symbols. The architecture notes define coordinate conventions and package boundaries.

    MIT

    PageArrangementError
    ApplyPagePlacementOptions
    EdgeInsets
    LayoutPagesOptions
    Offset
    PageConversionOptions
    PageGeometry
    PageLayout
    PagePlacement
    PagePlacementSource
    PdfPageText
    PdfPageTextFragment
    PdfPageTextRange
    PdfPoint
    PdfRect
    PdfTextFragmentBoundingRect
    PdfTextLineBoundingRect
    RawPageText
    Rect
    SelectablePage
    SelectionAnchor
    SelectionAnchors
    SelectionPoint
    Size
    ViewTransform
    WordSelection
    PageArrangementErrorCode
    PageGeometryResolver
    PagePlacementOperation
    PagePlacementRotation
    PdfPageAnchor
    PdfTextDirection
    SelectionAnchorType
    SpreadMode
    TextOrientationBehavior
    TextQuarterTurn
    edgeInsetsZero
    adjustBoundaryMargins
    allMatches
    anchorPoint
    applyPagePlacementOperation
    applyPagePlacementOperations
    calcOverscroll
    calcPosition
    calcRectForArea
    calcTransformFor
    calcTransformForRect
    calcVisibleRect
    clampToBoundary
    composeSelectedText
    composeTextRotation
    computeSelectionAnchors
    documentRectToView
    documentToView
    edgeInsetsAdd
    edgeInsetsContainsInfinite
    edgeInsetsInflateRect
    edgeInsetsInflateRectIfFinite
    edgeInsetsInflateSize
    enumerateFragmentBoundingRects
    enumerateLineBoundingRects
    findPageIndexAt
    findTextAndIndexForPoint
    formatText
    fragmentCharRects
    fragmentEnd
    fragmentText
    getFragmentForTextIndex
    getFragmentIndexForTextIndex
    getRangeFromAB
    getSelectedRanges
    layoutPagesHorizontal
    layoutPagesSpread
    layoutPagesVertical
    offsetDeltaToPdfDelta
    offsetToPdfPoint
    offsetToPdfPointInDocument
    pdfPointRotate
    pdfPointRotateReverse
    pdfPointToOffset
    pdfPointToOffsetInDocument
    pdfRectBoundingRect
    pdfRectCenter
    pdfRectContainsPoint
    pdfRectContainsXy
    pdfRectDistanceSquaredTo
    pdfRectHeight
    pdfRectInflate
    pdfRectIsEmpty
    pdfRectMerge
    pdfRectOverlaps
    pdfRectRotate
    pdfRectRotateReverse
    pdfRectToRect
    pdfRectToRectInDocument
    pdfRectTranslate
    pdfRectWidth
    rangeBounds
    rangeFirstFragment
    rangeFirstFragmentIndex
    rangeLastFragment
    rangeLastFragmentIndex
    rangeText
    rectCenter
    rectContains
    rectContainsRect
    rectFromCenter
    rectFromLTWH
    rectHeight
    rectInflate
    rectIntersect
    rectIsEmpty
    rectOverlaps
    rectSize
    rectToPdfRect
    rectTranslate
    rectWidth
    removeVirtualNewLines
    selectionPointIsValid
    selectionPointLE
    selectionPointLT
    selectWordAt
    toCanvasTransform
    transformX
    transformY
    validatePagePlacements
    viewToDocument