@laminapdf/sdk 0.2.0-alpha.3 → 0.2.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/dist/api.d.ts +5 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -0
- package/dist/api.js.map +1 -1
- package/dist/builder.d.ts +8 -3
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +8 -3
- package/dist/builder.js.map +1 -1
- package/dist/document.d.ts +78 -1
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +112 -0
- package/dist/document.js.map +1 -1
- package/dist/extract-job.d.ts +100 -0
- package/dist/extract-job.d.ts.map +1 -0
- package/dist/extract-job.js +177 -0
- package/dist/extract-job.js.map +1 -0
- package/dist/extract.d.ts +1 -1
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js.map +1 -1
- package/dist/generated/builder-enums.d.ts +3 -3
- package/dist/generated/builder-enums.d.ts.map +1 -1
- package/dist/generated/builder-enums.js +10 -0
- package/dist/generated/builder-enums.js.map +1 -1
- package/dist/generated/codes.d.ts +2 -2
- package/dist/generated/codes.d.ts.map +1 -1
- package/dist/generated/codes.js +55 -1
- package/dist/generated/codes.js.map +1 -1
- package/dist/generated/explain.d.ts.map +1 -1
- package/dist/generated/explain.js +19 -2
- package/dist/generated/explain.js.map +1 -1
- package/dist/generated/extract.d.ts +50 -3
- package/dist/generated/extract.d.ts.map +1 -1
- package/dist/reflow.d.ts +88 -0
- package/dist/reflow.d.ts.map +1 -0
- package/dist/reflow.js +4 -0
- package/dist/reflow.js.map +1 -0
- package/dist/source/http.d.ts +1 -1
- package/dist/source/http.js +1 -1
- package/dist/types.d.ts +35 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/support.d.ts +10 -1
- package/dist/worker/support.d.ts.map +1 -1
- package/dist/worker/support.js +7 -0
- package/dist/worker/support.js.map +1 -1
- package/docs/AGENTS.md +1 -1
- package/docs/api/README.md +29 -1
- package/docs/api/classes/Builder.md +1 -1
- package/docs/api/classes/Document.md +186 -1
- package/docs/api/classes/ExtractJob.md +236 -0
- package/docs/api/classes/Font.md +1 -1
- package/docs/api/classes/Image.md +1 -1
- package/docs/api/classes/LaminaPdfError.md +1 -1
- package/docs/api/classes/Page.md +1 -1
- package/docs/api/classes/PageRef.md +1 -1
- package/docs/api/classes/PageText.md +1 -1
- package/docs/api/classes/PageTextRun.md +1 -1
- package/docs/api/classes/PendingPath.md +1 -1
- package/docs/api/classes/SaveJob.md +1 -1
- package/docs/api/classes/Surface.md +10 -5
- package/docs/api/classes/Transaction.md +1 -1
- package/docs/api/functions/callbackSource.md +1 -1
- package/docs/api/functions/extractWithModels.md +70 -0
- package/docs/api/functions/httpRangeSource.md +2 -2
- package/docs/api/functions/init.md +1 -1
- package/docs/api/functions/isExtractLoaded.md +1 -1
- package/docs/api/functions/isInitialized.md +1 -1
- package/docs/api/functions/isLaminaPdfError.md +1 -1
- package/docs/api/functions/isTextLoaded.md +1 -1
- package/docs/api/functions/loadExtract.md +1 -1
- package/docs/api/functions/loadText.md +1 -1
- package/docs/api/functions/onLeak.md +1 -1
- package/docs/api/functions/reset.md +1 -1
- package/docs/api/functions/wasmMemory.md +1 -1
- package/docs/api/interfaces/BuilderOptions.md +1 -1
- package/docs/api/interfaces/ByteRange.md +1 -1
- package/docs/api/interfaces/ChunkOptions.md +1 -1
- package/docs/api/interfaces/Diagnostic.md +1 -1
- package/docs/api/interfaces/ExtractOptions.md +1 -1
- package/docs/api/interfaces/ExtractResult.md +1 -1
- package/docs/api/interfaces/FontInfo.md +1 -1
- package/docs/api/interfaces/HostModels.md +57 -0
- package/docs/api/interfaces/HttpRangeOptions.md +1 -1
- package/docs/api/interfaces/InitOptions.md +1 -1
- package/docs/api/interfaces/LayoutRegion.md +38 -0
- package/docs/api/interfaces/Leak.md +1 -1
- package/docs/api/interfaces/Location.md +1 -1
- package/docs/api/interfaces/ModelInfo.md +45 -0
- package/docs/api/interfaces/ModelRequest.md +45 -0
- package/docs/api/interfaces/Models.md +45 -0
- package/docs/api/interfaces/OcrWord.md +37 -0
- package/docs/api/interfaces/OpLog.md +1 -1
- package/docs/api/interfaces/OpenOptions.md +1 -1
- package/docs/api/interfaces/PageTextOptions.md +1 -1
- package/docs/api/interfaces/PathBuilder.md +1 -1
- package/docs/api/interfaces/QuadPoint.md +1 -1
- package/docs/api/interfaces/RangeOptions.md +1 -1
- package/docs/api/interfaces/RangeSource.md +1 -1
- package/docs/api/interfaces/Reflow.md +61 -0
- package/docs/api/interfaces/ReflowChecks.md +69 -0
- package/docs/api/interfaces/StrokeStyle.md +1 -1
- package/docs/api/interfaces/TagSpec.md +3 -3
- package/docs/api/interfaces/TextBoxOptions.md +1 -1
- package/docs/api/interfaces/TextGlyph.md +1 -1
- package/docs/api/interfaces/TextOptions.md +1 -1
- package/docs/api/interfaces/WasmMemory.md +1 -1
- package/docs/api/type-aliases/AfRelationship.md +1 -1
- package/docs/api/type-aliases/Align.md +1 -1
- package/docs/api/type-aliases/ArtifactKind.md +2 -2
- package/docs/api/type-aliases/AttachmentOptions.md +1 -1
- package/docs/api/type-aliases/BlendMode.md +1 -1
- package/docs/api/type-aliases/BoxRect.md +1 -1
- package/docs/api/type-aliases/BuildOptions.md +1 -1
- package/docs/api/type-aliases/Cell.md +1 -1
- package/docs/api/type-aliases/Chunk.md +1 -1
- package/docs/api/type-aliases/Color.md +1 -1
- package/docs/api/type-aliases/Coordinates.md +1 -1
- package/docs/api/type-aliases/Direction.md +1 -1
- package/docs/api/type-aliases/DocumentInfo.md +1 -1
- package/docs/api/type-aliases/DocumentProperties.md +18 -0
- package/docs/api/type-aliases/DropReason.md +2 -2
- package/docs/api/type-aliases/Dropped.md +1 -1
- package/docs/api/type-aliases/Edited.md +1 -1
- package/docs/api/type-aliases/ErrorCode.md +2 -2
- package/docs/api/type-aliases/ErrorKind.md +1 -1
- package/docs/api/type-aliases/ExtractFormat.md +1 -1
- package/docs/api/type-aliases/ExtractJobOptions.md +31 -0
- package/docs/api/type-aliases/ExtractStep.md +61 -0
- package/docs/api/type-aliases/ExtractedBlock.md +13 -1
- package/docs/api/type-aliases/ExtractedPage.md +9 -1
- package/docs/api/type-aliases/ExtractedSource.md +1 -1
- package/docs/api/type-aliases/Extraction.md +1 -1
- package/docs/api/type-aliases/FillRule.md +1 -1
- package/docs/api/type-aliases/Fit.md +1 -1
- package/docs/api/type-aliases/Flags.md +1 -1
- package/docs/api/type-aliases/Generator.md +5 -3
- package/docs/api/type-aliases/GlyphQuad.md +1 -1
- package/docs/api/type-aliases/InfoPatch.md +1 -1
- package/docs/api/type-aliases/LaminaPdfWarning.md +1 -1
- package/docs/api/type-aliases/LimitName.md +1 -1
- package/docs/api/type-aliases/Limits.md +1 -1
- package/docs/api/type-aliases/LineBox.md +1 -1
- package/docs/api/type-aliases/LineCap.md +1 -1
- package/docs/api/type-aliases/LineJoin.md +1 -1
- package/docs/api/type-aliases/LinkTarget.md +1 -1
- package/docs/api/type-aliases/Metadata.md +1 -1
- package/docs/api/type-aliases/ModelResult.md +15 -0
- package/docs/api/type-aliases/Op.md +1 -1
- package/docs/api/type-aliases/OutlineEntry.md +1 -1
- package/docs/api/type-aliases/OutlineNode.md +15 -0
- package/docs/api/type-aliases/Overflow.md +1 -1
- package/docs/api/type-aliases/PageImageReason.md +15 -0
- package/docs/api/type-aliases/PageInfo.md +1 -1
- package/docs/api/type-aliases/PageLabel.md +1 -1
- package/docs/api/type-aliases/PageLink.md +20 -0
- package/docs/api/type-aliases/PageSizeName.md +1 -1
- package/docs/api/type-aliases/Point.md +1 -1
- package/docs/api/type-aliases/Profile.md +1 -1
- package/docs/api/type-aliases/Progress.md +1 -1
- package/docs/api/type-aliases/ReadingOrder.md +1 -1
- package/docs/api/type-aliases/Rect.md +1 -1
- package/docs/api/type-aliases/ReflowBlock.md +44 -0
- package/docs/api/type-aliases/ReflowKind.md +15 -0
- package/docs/api/type-aliases/ReflowRefusal.md +16 -0
- package/docs/api/type-aliases/ReflowSource.md +15 -0
- package/docs/api/type-aliases/Region.md +1 -1
- package/docs/api/type-aliases/RegionLabel.md +15 -0
- package/docs/api/type-aliases/RenderMode.md +1 -1
- package/docs/api/type-aliases/Rotation.md +1 -1
- package/docs/api/type-aliases/SaveOptions.md +1 -1
- package/docs/api/type-aliases/SaveReport.md +1 -1
- package/docs/api/type-aliases/Span.md +12 -1
- package/docs/api/type-aliases/SplitOn.md +1 -1
- package/docs/api/type-aliases/Standard14.md +1 -1
- package/docs/api/type-aliases/StructRef.md +1 -1
- package/docs/api/type-aliases/StructSource.md +1 -1
- package/docs/api/type-aliases/StructureKid.md +15 -0
- package/docs/api/type-aliases/StructureNode.md +16 -0
- package/docs/api/type-aliases/TableDetector.md +1 -1
- package/docs/api/type-aliases/TableMode.md +1 -1
- package/docs/api/type-aliases/TableScope.md +1 -1
- package/docs/api/type-aliases/Tag.md +1 -1
- package/docs/api/type-aliases/TagName.md +1 -1
- package/docs/api/type-aliases/Target.md +15 -0
- package/docs/api/type-aliases/TargetView.md +18 -0
- package/docs/api/type-aliases/TextLayer.md +72 -0
- package/docs/api/type-aliases/TextLayerStatus.md +15 -0
- package/docs/api/type-aliases/TextLayout.md +1 -1
- package/docs/api/type-aliases/TextRange.md +1 -1
- package/docs/api/type-aliases/TextRunInfo.md +1 -1
- package/docs/api/type-aliases/Transform.md +1 -1
- package/docs/api/type-aliases/UndoOutcome.md +1 -1
- package/docs/api/type-aliases/ViewerPreferences.md +1 -1
- package/docs/api/type-aliases/WarningCode.md +2 -2
- package/docs/api/type-aliases/WasmSource.md +1 -1
- package/docs/api/variables/Matrix.md +1 -1
- package/docs/api/variables/PAGE_SIZES.md +1 -1
- package/docs/api/variables/TAG_NAMES.md +2 -2
- package/docs/errors/README.md +18 -1
- package/docs/errors/aes-padding-invalid.md +1 -1
- package/docs/errors/already-initialized.md +1 -1
- package/docs/errors/binary-output-to-terminal.md +1 -1
- package/docs/errors/builder-finished.md +1 -1
- package/docs/errors/cancelled.md +1 -1
- package/docs/errors/cmap-invalid.md +1 -1
- package/docs/errors/collection-index.md +1 -1
- package/docs/errors/color-components.md +1 -1
- package/docs/errors/content-bad-operands.md +1 -1
- package/docs/errors/content-path-unpainted.md +1 -1
- package/docs/errors/content-resource-missing.md +1 -1
- package/docs/errors/content-syntax.md +1 -1
- package/docs/errors/content-unbalanced-bt.md +1 -1
- package/docs/errors/content-unbalanced-marked.md +1 -1
- package/docs/errors/content-unbalanced-q.md +1 -1
- package/docs/errors/content-unknown-operator.md +1 -1
- package/docs/errors/covered-text.md +33 -0
- package/docs/errors/data-pending.md +1 -1
- package/docs/errors/decompress.md +1 -1
- package/docs/errors/device-color-without-output-intent.md +1 -1
- package/docs/errors/direct-page.md +1 -1
- package/docs/errors/disposed.md +1 -1
- package/docs/errors/document-changed.md +1 -1
- package/docs/errors/embedded-file-forbidden.md +1 -1
- package/docs/errors/embedded-file-without-mime-type.md +1 -1
- package/docs/errors/encoding-full.md +1 -1
- package/docs/errors/encrypted-base.md +1 -1
- package/docs/errors/extract-column-order-uncertain.md +38 -0
- package/docs/errors/extract-limit-blocks.md +1 -1
- package/docs/errors/extract-module-not-loaded.md +1 -1
- package/docs/errors/extract-needs-ocr.md +37 -0
- package/docs/errors/extract-reading-order-ambiguous.md +1 -1
- package/docs/errors/extract-struct-tree-ignored.md +1 -1
- package/docs/errors/extract-table-ambiguous.md +1 -1
- package/docs/errors/extract-table-limit.md +1 -1
- package/docs/errors/extract-untagged-content.md +1 -1
- package/docs/errors/fetch-failed.md +3 -3
- package/docs/errors/flate-truncated.md +1 -1
- package/docs/errors/flow-content-too-large.md +34 -0
- package/docs/errors/flow-keep-broken.md +34 -0
- package/docs/errors/flow-layout-unstable.md +38 -0
- package/docs/errors/font-invalid.md +1 -1
- package/docs/errors/font-mismatch.md +1 -1
- package/docs/errors/font-not-embeddable.md +1 -1
- package/docs/errors/font-not-embedded.md +1 -1
- package/docs/errors/font-not-shapable.md +1 -1
- package/docs/errors/glyph-out-of-range.md +1 -1
- package/docs/errors/glyph-without-unicode.md +7 -5
- package/docs/errors/heading-level-skipped.md +1 -1
- package/docs/errors/image-data-length.md +1 -1
- package/docs/errors/image-too-large.md +1 -1
- package/docs/errors/inline-image-unterminated.md +1 -1
- package/docs/errors/input-unreadable.md +1 -1
- package/docs/errors/instance-reset.md +1 -1
- package/docs/errors/invalid-argument.md +1 -1
- package/docs/errors/invalid-axis-value.md +1 -1
- package/docs/errors/invalid-box.md +1 -1
- package/docs/errors/invalid-color.md +1 -1
- package/docs/errors/invalid-command-line.md +1 -1
- package/docs/errors/invalid-date.md +1 -1
- package/docs/errors/invalid-entry.md +1 -1
- package/docs/errors/invalid-feature.md +1 -1
- package/docs/errors/invalid-font.md +1 -1
- package/docs/errors/invalid-geometry.md +1 -1
- package/docs/errors/invalid-icc-profile.md +1 -1
- package/docs/errors/invalid-image.md +1 -1
- package/docs/errors/invalid-op-log.md +1 -1
- package/docs/errors/invalid-page-label.md +1 -1
- package/docs/errors/invalid-page-labels.md +1 -1
- package/docs/errors/invalid-page-range.md +1 -1
- package/docs/errors/invalid-rotate.md +1 -1
- package/docs/errors/invalid-spans.md +39 -0
- package/docs/errors/invalid-structure-nesting.md +1 -1
- package/docs/errors/invalid-structure.md +1 -1
- package/docs/errors/invalid-text-range.md +1 -1
- package/docs/errors/job-finished.md +1 -1
- package/docs/errors/limit-exceeded.md +1 -1
- package/docs/errors/link-without-contents.md +1 -1
- package/docs/errors/link-without-structure.md +1 -1
- package/docs/errors/markdown-html-ignored.md +33 -0
- package/docs/errors/markdown-image-missing.md +34 -0
- package/docs/errors/missing-alt-text.md +1 -1
- package/docs/errors/missing-glyph.md +1 -1
- package/docs/errors/missing-header.md +1 -1
- package/docs/errors/missing-lang.md +1 -1
- package/docs/errors/missing-root.md +1 -1
- package/docs/errors/missing-title.md +1 -1
- package/docs/errors/model-failed.md +33 -0
- package/docs/errors/model-needs-host.md +40 -0
- package/docs/errors/model-result-unexpected.md +36 -0
- package/docs/errors/name-tree-node-skipped.md +1 -1
- package/docs/errors/nested-transaction.md +1 -1
- package/docs/errors/no-pending-save.md +1 -1
- package/docs/errors/no-transaction.md +1 -1
- package/docs/errors/not-initialized.md +1 -1
- package/docs/errors/not-pdf.md +1 -1
- package/docs/errors/not-rebased.md +1 -1
- package/docs/errors/object-number-out-of-range.md +1 -1
- package/docs/errors/objstm-index-mismatch.md +1 -1
- package/docs/errors/out-of-memory.md +1 -1
- package/docs/errors/outline-cycle.md +1 -1
- package/docs/errors/outline-item-skipped.md +1 -1
- package/docs/errors/output-unwritable.md +1 -1
- package/docs/errors/overwrite-refused.md +1 -1
- package/docs/errors/page-count-mismatch.md +1 -1
- package/docs/errors/page-index-out-of-range.md +1 -1
- package/docs/errors/page-tree-node-skipped.md +1 -1
- package/docs/errors/password-required.md +1 -1
- package/docs/errors/path-outside-roots.md +1 -1
- package/docs/errors/perms-mismatch.md +1 -1
- package/docs/errors/profile-version-conflict.md +1 -1
- package/docs/errors/redaction-not-applied.md +32 -0
- package/docs/errors/reference-cycle.md +1 -1
- package/docs/errors/render-backend-unavailable.md +1 -1
- package/docs/errors/render-failed.md +1 -1
- package/docs/errors/render-too-large.md +1 -1
- package/docs/errors/repaired-base.md +1 -1
- package/docs/errors/requires-rewrite.md +1 -1
- package/docs/errors/revision-index-out-of-range.md +34 -0
- package/docs/errors/saved-not-rebased.md +1 -1
- package/docs/errors/sink-not-empty.md +1 -1
- package/docs/errors/sink.md +1 -1
- package/docs/errors/source-budget-exceeded.md +1 -1
- package/docs/errors/source-changed.md +1 -1
- package/docs/errors/source.md +1 -1
- package/docs/errors/stale-generation.md +1 -1
- package/docs/errors/stream-length-recovered.md +1 -1
- package/docs/errors/strict.md +1 -1
- package/docs/errors/subset-failed.md +1 -1
- package/docs/errors/syntax.md +1 -1
- package/docs/errors/tag-element-not-open.md +41 -0
- package/docs/errors/tag-element-unclosed.md +34 -0
- package/docs/errors/text-in-earlier-revision.md +36 -0
- package/docs/errors/text-module-not-loaded.md +1 -1
- package/docs/errors/text-overflow.md +1 -1
- package/docs/errors/tounicode-conflict.md +1 -1
- package/docs/errors/type.md +1 -1
- package/docs/errors/unexpected-eof.md +1 -1
- package/docs/errors/unknown-axis.md +1 -1
- package/docs/errors/unknown-code.md +1 -1
- package/docs/errors/unknown-destination.md +1 -1
- package/docs/errors/unknown-font.md +1 -1
- package/docs/errors/unknown-option.md +1 -1
- package/docs/errors/unknown-page.md +1 -1
- package/docs/errors/unmapped-glyph.md +1 -1
- package/docs/errors/unnumbered-heading-misused.md +1 -1
- package/docs/errors/unset-object.md +1 -1
- package/docs/errors/unsupported-filter.md +1 -1
- package/docs/errors/unsupported-image.md +1 -1
- package/docs/errors/unsupported-layout-option.md +1 -1
- package/docs/errors/unsupported-security-handler.md +1 -1
- package/docs/errors/unsupported-version.md +1 -1
- package/docs/errors/untagged-content.md +1 -1
- package/docs/errors/warnings-truncated.md +1 -1
- package/docs/errors/wasm-trap.md +1 -1
- package/docs/errors/whole-font-rebuilt.md +1 -1
- package/docs/errors/worker-crashed.md +1 -1
- package/docs/errors/worker-failed.md +1 -1
- package/docs/errors/worker-version-mismatch.md +1 -1
- package/docs/errors/would-invalidate-signatures.md +1 -1
- package/docs/errors/wrong-document.md +1 -1
- package/docs/errors/wrong-password.md +1 -1
- package/docs/errors/xobject-cycle.md +1 -1
- package/docs/errors/xref-repaired.md +1 -1
- package/docs/errors/xrefstm-ignored.md +1 -1
- package/docs/llms.txt +7 -1
- package/docs/pages/concepts/dependencies.md +2 -2
- package/docs/pages/concepts/drawing-pages.md +76 -0
- package/docs/pages/concepts/errors-and-warnings.md +6 -2
- package/docs/pages/concepts/how-lamina-thinks.md +13 -1
- package/docs/pages/concepts/pages-and-coordinates.md +9 -1
- package/docs/pages/guides/accessible-pdfs.md +3 -1
- package/docs/pages/guides/archival-pdfs.md +5 -1
- package/docs/pages/guides/edit-a-pdf.md +8 -2
- package/docs/pages/guides/flowing-pages.md +379 -0
- package/docs/pages/guides/fonts-and-text.md +3 -1
- package/docs/pages/guides/images-and-vectors.md +3 -1
- package/docs/pages/guides/keep-the-page-responsive.md +8 -4
- package/docs/pages/guides/links-outlines-and-metadata.md +3 -1
- package/docs/pages/guides/open-large-files.md +69 -0
- package/docs/pages/guides/password-protected-files.md +1 -1
- package/docs/pages/guides/save-a-pdf.md +12 -2
- package/docs/pages/guides/test-generated-pdfs.md +324 -0
- package/docs/pages/guides/untrusted-files.md +3 -1
- package/docs/pages/index.md +2 -2
- package/docs/pages/install.md +9 -5
- package/docs/pages/quick-start/browser.md +5 -1
- package/docs/pages/quick-start/bun.md +5 -1
- package/docs/pages/quick-start/deno.md +5 -1
- package/docs/pages/quick-start/node.md +5 -1
- package/docs/pages/quick-start/rust.md +6 -2
- package/docs/pages/quick-start/workers.md +2 -2
- package/docs/pages/recipes/cloudflare-worker.md +1 -1
- package/docs/pages/recipes/element-flow.md +248 -0
- package/docs/pages/recipes/extract-markdown.md +44 -6
- package/docs/pages/recipes/generate-then-edit.md +13 -6
- package/docs/pages/recipes/hello.md +13 -6
- package/docs/pages/recipes/images-and-vectors.md +13 -6
- package/docs/pages/recipes/invoice.md +13 -6
- package/docs/pages/recipes/links-and-outlines.md +13 -6
- package/docs/pages/recipes/multilingual.md +13 -6
- package/docs/pages/recipes/open-untrusted.md +1 -1
- package/docs/pages/recipes/pdf-a-archive.md +13 -6
- package/docs/pages/recipes/pdf-a3-invoice-with-xml.md +13 -6
- package/docs/pages/recipes/pdf-ua-report.md +13 -6
- package/docs/pages/recipes/report.md +2 -2
- package/docs/pages/recipes/web-worker-client.md +1 -1
- package/docs/pages/recipes.md +3 -2
- package/docs/pages/reference/benchmarks.md +93 -0
- package/docs/pages/reference/changelog.md +77 -1
- package/docs/pages/reference/codes.md +1 -1
- package/docs/pages/reference/glossary.md +1 -1
- package/docs/pages/reference/rust.md +11 -11
- package/docs/pages/reference/stability.md +3 -3
- package/docs/pages/start/coding-agents.md +1 -1
- package/docs/pages/start/first-pdf.md +6 -2
- package/docs/pages/troubleshooting.md +1 -1
- package/docs/schemas/error.schema.json +18 -1
- package/package.json +5 -3
- package/schemas/error.schema.json +18 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "invalid-spans"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/invalid-spans/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# invalid-spans
|
|
8
|
+
|
|
9
|
+
- Type: error
|
|
10
|
+
- Kind: `usage` (the caller passed something invalid)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
The styled spans passed to `break_spans` don't cover the paragraph's text exactly once, in order, or name fonts it can't use. One of these is true:
|
|
15
|
+
|
|
16
|
+
- two spans leave a gap, overlap, or come out of order;
|
|
17
|
+
- the last span stops before the end of the text, or runs past it;
|
|
18
|
+
- a span starts or ends inside a character, or between a letter and its accent;
|
|
19
|
+
- a span lists no fonts, or a font index past the end of the list.
|
|
20
|
+
|
|
21
|
+
## Why
|
|
22
|
+
|
|
23
|
+
Each character's font, size and language come from the span that holds it. A character in no span, or in two, would have no style or two styles, so Lamina PDF refuses the spans rather than guess. A letter and its accent are drawn as one glyph cluster, so they can't take two styles. An index past the end of the font list names no font.
|
|
24
|
+
|
|
25
|
+
## How to fix
|
|
26
|
+
|
|
27
|
+
List the spans in the order of the text. Start the first at byte 0, start each span where the one before it ends, and end the last at the text's length. Take span ends from `grapheme_boundaries` or `str::len`, so that they fall between clusters. List at least one font per span, each an index into the font list. An empty text needs no spans.
|
|
28
|
+
|
|
29
|
+
## Example
|
|
30
|
+
|
|
31
|
+
```rust
|
|
32
|
+
let text = "Hello, world";
|
|
33
|
+
let spans = [StyledSpan::new(0..5), StyledSpan::new(6..12)]; // byte 5 is in no span
|
|
34
|
+
break_spans(&shaper, &fonts, text, &spans, &options)?; // invalid-spans
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Data fields
|
|
38
|
+
|
|
39
|
+
- `at`: the byte offset where the spans stop covering the text, or where the span with a bad font list starts.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "markdown-html-ignored"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/markdown-html-ignored/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# markdown-html-ignored
|
|
8
|
+
|
|
9
|
+
- Type: warning
|
|
10
|
+
- Kind: `unsupported` (valid input that Lamina PDF can't handle yet)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
`Builder::markdown` found raw HTML in the Markdown, such as a `<div>` block or an inline `<span>`, left it out of the PDF and laid out the rest as usual. The builder raises one warning for each HTML block and each inline HTML tag.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
Markdown lets authors mix in HTML, and a browser would draw it. Laying out HTML needs a web page's layout rules, which a PDF builder doesn't have. Rather than print the tags as text, the builder leaves the HTML out and says where it was.
|
|
19
|
+
|
|
20
|
+
## How to fix
|
|
21
|
+
|
|
22
|
+
Write the content in Markdown instead: `**bold**` for `<b>`, a table for `<table>`, an image for `<img>`. If the HTML is only a comment, such as `<!-- draft -->`, remove it or ignore the warning.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```rust
|
|
27
|
+
let report = builder.markdown("Hello <span>there</span>\n", &MarkdownBuildOptions::new())?;
|
|
28
|
+
assert_eq!(report.warnings[0].code(), "markdown-html-ignored");
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Data fields
|
|
32
|
+
|
|
33
|
+
- `offset`: where the HTML starts, as a byte offset into the Markdown.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "markdown-image-missing"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/markdown-image-missing/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# markdown-image-missing
|
|
8
|
+
|
|
9
|
+
- Type: warning
|
|
10
|
+
- Kind: `usage` (the caller misused the API)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
`Builder::markdown` met an image, such as ``, whose bytes weren't passed in. It left the image out of the PDF and laid out the rest of the document as usual.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
The builder reads no files and fetches nothing from the network, so it can only draw images the caller supplies. An image path the options don't list, or a web address, has nothing behind it.
|
|
19
|
+
|
|
20
|
+
## How to fix
|
|
21
|
+
|
|
22
|
+
Read the image yourself and pass it with `MarkdownBuildOptions::with_image`, under the same path the Markdown uses.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```rust
|
|
27
|
+
let chart = Image::png(&std::fs::read("chart.png")?)?;
|
|
28
|
+
let options = MarkdownBuildOptions::new().with_image("chart.png", chart);
|
|
29
|
+
builder.markdown("\n", &options)?;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Data fields
|
|
33
|
+
|
|
34
|
+
- `offset`: where the image starts, as a byte offset into the Markdown.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "model-failed"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/model-failed/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# model-failed
|
|
8
|
+
|
|
9
|
+
- Type: error
|
|
10
|
+
- Kind: `internal` (something failed outside the caller's control)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
A layout model, an OCR engine or the page renderer that feeds them failed while an extraction was using it. The extraction stopped and returned no partial result.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
Models are plug-ins: the extraction calls the model and the renderer it was given, and stops when either reports an error. The error's message is the plug-in's own, and never holds text from the document.
|
|
19
|
+
|
|
20
|
+
## How to fix
|
|
21
|
+
|
|
22
|
+
Check the plug-in's own logs or setup: a missing weights file, a runtime that failed to load, a page too large to render. To get a result meanwhile, extract without the model; the rules alone still give every page's blocks.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```rust
|
|
27
|
+
let options = laminapdf::extract::ExtractOptions::new(); // no models: rules only
|
|
28
|
+
let extraction = doc.extract(&options)?;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Data fields
|
|
32
|
+
|
|
33
|
+
None.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "model-needs-host"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/model-needs-host/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# model-needs-host
|
|
8
|
+
|
|
9
|
+
- Type: error
|
|
10
|
+
- Kind: `usage` (the call itself is wrong)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
An extraction in one call (`extract`) was given a model whose results only the host can give: a model named as the host's (`ModelSlot::Host`), or a plug-in model with no page renderer to draw the pages it reads.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
A one-call extraction runs to the end without stopping, so it can only use models it can call itself, on pages its renderer draws. A host's model answers through the extraction job, which stops at each page that needs a result.
|
|
19
|
+
|
|
20
|
+
## How to fix
|
|
21
|
+
|
|
22
|
+
Step an extraction job and hand it each result: `request()` says which page and resolution it needs, `provide(result)` gives it back. Or give the plug-in model a page renderer, so the extraction calls it between pages.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```rust
|
|
27
|
+
let mut job = doc.extract_job(&options)?;
|
|
28
|
+
loop {
|
|
29
|
+
if let laminapdf::Step::Done(extraction) = job.step(&doc, laminapdf::Budget::UNLIMITED)? {
|
|
30
|
+
break extraction;
|
|
31
|
+
}
|
|
32
|
+
if let Some(request) = job.request().cloned() {
|
|
33
|
+
job.provide(run_my_model(&request))?;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Data fields
|
|
39
|
+
|
|
40
|
+
None.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "model-result-unexpected"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/model-result-unexpected/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# model-result-unexpected
|
|
8
|
+
|
|
9
|
+
- Type: error
|
|
10
|
+
- Kind: `usage` (the call itself is wrong)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
A model result was handed to an extraction job (`provide`) that wasn't waiting for one, or that was waiting for the other model's result: layout regions when it asked for OCR words, or the reverse.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
A job whose models the host runs stops at each page that needs a result and says which one (`request()`). It takes exactly that result and nothing else, so results can't land on the wrong page.
|
|
19
|
+
|
|
20
|
+
## How to fix
|
|
21
|
+
|
|
22
|
+
Call `provide` only while `request()` returns a request, with the result its kind asks for: layout regions for a layout request, OCR words for an OCR request.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```rust
|
|
27
|
+
while let laminapdf::Step::Progress { .. } = job.step(&doc, laminapdf::Budget::UNLIMITED)? {
|
|
28
|
+
if let Some(request) = job.request().cloned() {
|
|
29
|
+
job.provide(run_my_model(&request))?;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Data fields
|
|
35
|
+
|
|
36
|
+
None.
|
package/docs/errors/not-pdf.md
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "redaction-not-applied"
|
|
3
|
+
version: "0.2.0-alpha.5"
|
|
4
|
+
url: "https://docs.laminapdf.com/reference/codes/redaction-not-applied/"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# redaction-not-applied
|
|
8
|
+
|
|
9
|
+
- Type: warning
|
|
10
|
+
- Kind: `security` (encryption, permissions or signatures block the call, or look tampered with)
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
A page has redaction marks (`Redact` annotations, ISO 32000-2 §12.5.6.23) that were never applied. A mark only records what someone meant to remove; until a tool applies it, the text, images and drawings under it are all still in the file.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
Editors such as Acrobat redact in two steps: you mark what to remove, then you apply the marks. A file saved between the two steps looks redacted in some viewers, which draw the mark's overlay, but nothing has been taken out.
|
|
19
|
+
|
|
20
|
+
## How to fix
|
|
21
|
+
|
|
22
|
+
Apply the redactions in a tool that removes what they cover, then save the file as a full rewrite.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
A page with two redaction marks over a name and an account number, saved before "Apply redactions" was chosen. `laminapdf check` reports `redaction-not-applied` for that page with `annotations` 2.
|
|
27
|
+
|
|
28
|
+
## Data fields
|
|
29
|
+
|
|
30
|
+
- `annotations`: how many redaction marks the page has.
|
|
31
|
+
|
|
32
|
+
The `location` has the page's `pageIndex`.
|