@laminapdf/sdk 0.0.0-stage → 0.2.0-alpha.3

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.
Files changed (478) hide show
  1. package/README.md +243 -2
  2. package/dist/api.d.ts +26 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +12 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/builder.d.ts +335 -0
  7. package/dist/builder.d.ts.map +1 -0
  8. package/dist/builder.js +574 -0
  9. package/dist/builder.js.map +1 -0
  10. package/dist/defined.d.ts +5 -0
  11. package/dist/defined.d.ts.map +1 -0
  12. package/dist/defined.js +7 -0
  13. package/dist/defined.js.map +1 -0
  14. package/dist/document.d.ts +267 -0
  15. package/dist/document.d.ts.map +1 -0
  16. package/dist/document.js +472 -0
  17. package/dist/document.js.map +1 -0
  18. package/dist/entry/node.d.ts +30 -0
  19. package/dist/entry/node.d.ts.map +1 -0
  20. package/dist/entry/node.js +37 -0
  21. package/dist/entry/node.js.map +1 -0
  22. package/dist/entry/workerd.d.ts +30 -0
  23. package/dist/entry/workerd.d.ts.map +1 -0
  24. package/dist/entry/workerd.js +37 -0
  25. package/dist/entry/workerd.js.map +1 -0
  26. package/dist/errors.d.ts +102 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +131 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/explain.d.ts +20 -0
  31. package/dist/explain.d.ts.map +1 -0
  32. package/dist/explain.js +14 -0
  33. package/dist/explain.js.map +1 -0
  34. package/dist/extract.d.ts +57 -0
  35. package/dist/extract.d.ts.map +1 -0
  36. package/dist/extract.js +5 -0
  37. package/dist/extract.js.map +1 -0
  38. package/dist/font.d.ts +73 -0
  39. package/dist/font.d.ts.map +1 -0
  40. package/dist/font.js +133 -0
  41. package/dist/font.js.map +1 -0
  42. package/dist/generated/builder-enums.d.ts +29 -0
  43. package/dist/generated/builder-enums.d.ts.map +1 -0
  44. package/dist/generated/builder-enums.js +80 -0
  45. package/dist/generated/builder-enums.js.map +1 -0
  46. package/dist/generated/codes.d.ts +109 -0
  47. package/dist/generated/codes.d.ts.map +1 -0
  48. package/dist/generated/codes.js +508 -0
  49. package/dist/generated/codes.js.map +1 -0
  50. package/dist/generated/explain.d.ts +6 -0
  51. package/dist/generated/explain.d.ts.map +1 -0
  52. package/dist/generated/explain.js +155 -0
  53. package/dist/generated/explain.js.map +1 -0
  54. package/dist/generated/extract.d.ts +235 -0
  55. package/dist/generated/extract.d.ts.map +1 -0
  56. package/dist/generated/extract.js +4 -0
  57. package/dist/generated/extract.js.map +1 -0
  58. package/dist/index.d.ts +30 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +37 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/init.d.ts +88 -0
  63. package/dist/init.d.ts.map +1 -0
  64. package/dist/init.js +139 -0
  65. package/dist/init.js.map +1 -0
  66. package/dist/internal/handle.d.ts +58 -0
  67. package/dist/internal/handle.d.ts.map +1 -0
  68. package/dist/internal/handle.js +113 -0
  69. package/dist/internal/handle.js.map +1 -0
  70. package/dist/internal/instance.d.ts +56 -0
  71. package/dist/internal/instance.d.ts.map +1 -0
  72. package/dist/internal/instance.js +125 -0
  73. package/dist/internal/instance.js.map +1 -0
  74. package/dist/loader/fetch.d.ts +3 -0
  75. package/dist/loader/fetch.d.ts.map +1 -0
  76. package/dist/loader/fetch.js +2 -0
  77. package/dist/loader/fetch.js.map +1 -0
  78. package/dist/loader/node.d.ts +3 -0
  79. package/dist/loader/node.d.ts.map +1 -0
  80. package/dist/loader/node.js +9 -0
  81. package/dist/loader/node.js.map +1 -0
  82. package/dist/loader/workerd.d.ts +3 -0
  83. package/dist/loader/workerd.d.ts.map +1 -0
  84. package/dist/loader/workerd.js +15 -0
  85. package/dist/loader/workerd.js.map +1 -0
  86. package/dist/matrix.d.ts +16 -0
  87. package/dist/matrix.d.ts.map +1 -0
  88. package/dist/matrix.js +36 -0
  89. package/dist/matrix.js.map +1 -0
  90. package/dist/path.d.ts +34 -0
  91. package/dist/path.d.ts.map +1 -0
  92. package/dist/path.js +49 -0
  93. package/dist/path.js.map +1 -0
  94. package/dist/source/http.d.ts +36 -0
  95. package/dist/source/http.d.ts.map +1 -0
  96. package/dist/source/http.js +211 -0
  97. package/dist/source/http.js.map +1 -0
  98. package/dist/source/range.d.ts +75 -0
  99. package/dist/source/range.d.ts.map +1 -0
  100. package/dist/source/range.js +100 -0
  101. package/dist/source/range.js.map +1 -0
  102. package/dist/text.d.ts +90 -0
  103. package/dist/text.d.ts.map +1 -0
  104. package/dist/text.js +127 -0
  105. package/dist/text.js.map +1 -0
  106. package/dist/transaction.d.ts +36 -0
  107. package/dist/transaction.d.ts.map +1 -0
  108. package/dist/transaction.js +47 -0
  109. package/dist/transaction.js.map +1 -0
  110. package/dist/types.d.ts +79 -0
  111. package/dist/types.d.ts.map +1 -0
  112. package/dist/types.js +2 -0
  113. package/dist/types.js.map +1 -0
  114. package/dist/version.d.ts +3 -0
  115. package/dist/version.d.ts.map +1 -0
  116. package/dist/version.js +6 -0
  117. package/dist/version.js.map +1 -0
  118. package/dist/worker/client.d.ts +88 -0
  119. package/dist/worker/client.d.ts.map +1 -0
  120. package/dist/worker/client.js +407 -0
  121. package/dist/worker/client.js.map +1 -0
  122. package/dist/worker/emitter.d.ts +12 -0
  123. package/dist/worker/emitter.d.ts.map +1 -0
  124. package/dist/worker/emitter.js +34 -0
  125. package/dist/worker/emitter.js.map +1 -0
  126. package/dist/worker/entry.d.ts +2 -0
  127. package/dist/worker/entry.d.ts.map +1 -0
  128. package/dist/worker/entry.js +4 -0
  129. package/dist/worker/entry.js.map +1 -0
  130. package/dist/worker/index.d.ts +7 -0
  131. package/dist/worker/index.d.ts.map +1 -0
  132. package/dist/worker/index.js +4 -0
  133. package/dist/worker/index.js.map +1 -0
  134. package/dist/worker/protocol.d.ts +82 -0
  135. package/dist/worker/protocol.d.ts.map +1 -0
  136. package/dist/worker/protocol.js +11 -0
  137. package/dist/worker/protocol.js.map +1 -0
  138. package/dist/worker/server.d.ts +51 -0
  139. package/dist/worker/server.d.ts.map +1 -0
  140. package/dist/worker/server.js +493 -0
  141. package/dist/worker/server.js.map +1 -0
  142. package/dist/worker/support.d.ts +43 -0
  143. package/dist/worker/support.d.ts.map +1 -0
  144. package/dist/worker/support.js +26 -0
  145. package/dist/worker/support.js.map +1 -0
  146. package/dist/worker/transfer.d.ts +3 -0
  147. package/dist/worker/transfer.d.ts.map +1 -0
  148. package/dist/worker/transfer.js +13 -0
  149. package/dist/worker/transfer.js.map +1 -0
  150. package/dist/worker/types.d.ts +50 -0
  151. package/dist/worker/types.d.ts.map +1 -0
  152. package/dist/worker/types.js +2 -0
  153. package/dist/worker/types.js.map +1 -0
  154. package/docs/AGENTS.md +14 -0
  155. package/docs/api/README.md +147 -0
  156. package/docs/api/classes/Builder.md +467 -0
  157. package/docs/api/classes/Document.md +742 -0
  158. package/docs/api/classes/Font.md +74 -0
  159. package/docs/api/classes/Image.md +140 -0
  160. package/docs/api/classes/LaminaPdfError.md +189 -0
  161. package/docs/api/classes/Page.md +178 -0
  162. package/docs/api/classes/PageRef.md +253 -0
  163. package/docs/api/classes/PageText.md +129 -0
  164. package/docs/api/classes/PageTextRun.md +167 -0
  165. package/docs/api/classes/PendingPath.md +97 -0
  166. package/docs/api/classes/SaveJob.md +205 -0
  167. package/docs/api/classes/Surface.md +326 -0
  168. package/docs/api/classes/Transaction.md +111 -0
  169. package/docs/api/functions/callbackSource.md +33 -0
  170. package/docs/api/functions/httpRangeSource.md +48 -0
  171. package/docs/api/functions/init.md +36 -0
  172. package/docs/api/functions/isExtractLoaded.md +21 -0
  173. package/docs/api/functions/isInitialized.md +19 -0
  174. package/docs/api/functions/isLaminaPdfError.md +41 -0
  175. package/docs/api/functions/isTextLoaded.md +19 -0
  176. package/docs/api/functions/loadExtract.md +28 -0
  177. package/docs/api/functions/loadText.md +28 -0
  178. package/docs/api/functions/onLeak.md +29 -0
  179. package/docs/api/functions/reset.md +22 -0
  180. package/docs/api/functions/wasmMemory.md +22 -0
  181. package/docs/api/interfaces/BuilderOptions.md +108 -0
  182. package/docs/api/interfaces/ByteRange.md +29 -0
  183. package/docs/api/interfaces/ChunkOptions.md +37 -0
  184. package/docs/api/interfaces/Diagnostic.md +67 -0
  185. package/docs/api/interfaces/ExtractOptions.md +92 -0
  186. package/docs/api/interfaces/ExtractResult.md +37 -0
  187. package/docs/api/interfaces/FontInfo.md +37 -0
  188. package/docs/api/interfaces/HttpRangeOptions.md +78 -0
  189. package/docs/api/interfaces/InitOptions.md +40 -0
  190. package/docs/api/interfaces/Leak.md +21 -0
  191. package/docs/api/interfaces/Location.md +53 -0
  192. package/docs/api/interfaces/OpLog.md +25 -0
  193. package/docs/api/interfaces/OpenOptions.md +37 -0
  194. package/docs/api/interfaces/PageTextOptions.md +21 -0
  195. package/docs/api/interfaces/PathBuilder.md +195 -0
  196. package/docs/api/interfaces/QuadPoint.md +25 -0
  197. package/docs/api/interfaces/RangeOptions.md +54 -0
  198. package/docs/api/interfaces/RangeSource.md +59 -0
  199. package/docs/api/interfaces/StrokeStyle.md +61 -0
  200. package/docs/api/interfaces/TagSpec.md +69 -0
  201. package/docs/api/interfaces/TextBoxOptions.md +93 -0
  202. package/docs/api/interfaces/TextGlyph.md +29 -0
  203. package/docs/api/interfaces/TextOptions.md +101 -0
  204. package/docs/api/interfaces/WasmMemory.md +37 -0
  205. package/docs/api/type-aliases/AfRelationship.md +15 -0
  206. package/docs/api/type-aliases/Align.md +15 -0
  207. package/docs/api/type-aliases/ArtifactKind.md +15 -0
  208. package/docs/api/type-aliases/AttachmentOptions.md +15 -0
  209. package/docs/api/type-aliases/BlendMode.md +15 -0
  210. package/docs/api/type-aliases/BoxRect.md +15 -0
  211. package/docs/api/type-aliases/BuildOptions.md +15 -0
  212. package/docs/api/type-aliases/Cell.md +71 -0
  213. package/docs/api/type-aliases/Chunk.md +79 -0
  214. package/docs/api/type-aliases/Color.md +16 -0
  215. package/docs/api/type-aliases/Coordinates.md +55 -0
  216. package/docs/api/type-aliases/Direction.md +15 -0
  217. package/docs/api/type-aliases/DocumentInfo.md +15 -0
  218. package/docs/api/type-aliases/DropReason.md +15 -0
  219. package/docs/api/type-aliases/Dropped.md +59 -0
  220. package/docs/api/type-aliases/Edited.md +15 -0
  221. package/docs/api/type-aliases/ErrorCode.md +15 -0
  222. package/docs/api/type-aliases/ErrorKind.md +15 -0
  223. package/docs/api/type-aliases/ExtractFormat.md +15 -0
  224. package/docs/api/type-aliases/ExtractedBlock.md +82 -0
  225. package/docs/api/type-aliases/ExtractedPage.md +65 -0
  226. package/docs/api/type-aliases/ExtractedSource.md +48 -0
  227. package/docs/api/type-aliases/Extraction.md +22 -0
  228. package/docs/api/type-aliases/FillRule.md +15 -0
  229. package/docs/api/type-aliases/Fit.md +15 -0
  230. package/docs/api/type-aliases/Flags.md +15 -0
  231. package/docs/api/type-aliases/Generator.md +41 -0
  232. package/docs/api/type-aliases/GlyphQuad.md +15 -0
  233. package/docs/api/type-aliases/InfoPatch.md +15 -0
  234. package/docs/api/type-aliases/LaminaPdfWarning.md +16 -0
  235. package/docs/api/type-aliases/LimitName.md +15 -0
  236. package/docs/api/type-aliases/Limits.md +15 -0
  237. package/docs/api/type-aliases/LineBox.md +15 -0
  238. package/docs/api/type-aliases/LineCap.md +15 -0
  239. package/docs/api/type-aliases/LineJoin.md +15 -0
  240. package/docs/api/type-aliases/LinkTarget.md +15 -0
  241. package/docs/api/type-aliases/Metadata.md +15 -0
  242. package/docs/api/type-aliases/Op.md +15 -0
  243. package/docs/api/type-aliases/OutlineEntry.md +15 -0
  244. package/docs/api/type-aliases/Overflow.md +15 -0
  245. package/docs/api/type-aliases/PageInfo.md +15 -0
  246. package/docs/api/type-aliases/PageLabel.md +15 -0
  247. package/docs/api/type-aliases/PageSizeName.md +15 -0
  248. package/docs/api/type-aliases/Point.md +15 -0
  249. package/docs/api/type-aliases/Profile.md +15 -0
  250. package/docs/api/type-aliases/Progress.md +15 -0
  251. package/docs/api/type-aliases/ReadingOrder.md +15 -0
  252. package/docs/api/type-aliases/Rect.md +15 -0
  253. package/docs/api/type-aliases/Region.md +31 -0
  254. package/docs/api/type-aliases/RenderMode.md +15 -0
  255. package/docs/api/type-aliases/Rotation.md +15 -0
  256. package/docs/api/type-aliases/SaveOptions.md +15 -0
  257. package/docs/api/type-aliases/SaveReport.md +15 -0
  258. package/docs/api/type-aliases/Span.md +63 -0
  259. package/docs/api/type-aliases/SplitOn.md +15 -0
  260. package/docs/api/type-aliases/Standard14.md +15 -0
  261. package/docs/api/type-aliases/StructRef.md +41 -0
  262. package/docs/api/type-aliases/StructSource.md +17 -0
  263. package/docs/api/type-aliases/TableDetector.md +15 -0
  264. package/docs/api/type-aliases/TableMode.md +15 -0
  265. package/docs/api/type-aliases/TableScope.md +15 -0
  266. package/docs/api/type-aliases/Tag.md +15 -0
  267. package/docs/api/type-aliases/TagName.md +15 -0
  268. package/docs/api/type-aliases/TextLayout.md +15 -0
  269. package/docs/api/type-aliases/TextRange.md +33 -0
  270. package/docs/api/type-aliases/TextRunInfo.md +15 -0
  271. package/docs/api/type-aliases/Transform.md +15 -0
  272. package/docs/api/type-aliases/UndoOutcome.md +15 -0
  273. package/docs/api/type-aliases/ViewerPreferences.md +15 -0
  274. package/docs/api/type-aliases/WarningCode.md +15 -0
  275. package/docs/api/type-aliases/WasmSource.md +16 -0
  276. package/docs/api/variables/Matrix.md +99 -0
  277. package/docs/api/variables/PAGE_SIZES.md +15 -0
  278. package/docs/api/variables/TAG_NAMES.md +15 -0
  279. package/docs/errors/README.md +156 -0
  280. package/docs/errors/aes-padding-invalid.md +34 -0
  281. package/docs/errors/already-initialized.md +34 -0
  282. package/docs/errors/binary-output-to-terminal.md +35 -0
  283. package/docs/errors/builder-finished.md +35 -0
  284. package/docs/errors/cancelled.md +35 -0
  285. package/docs/errors/cmap-invalid.md +42 -0
  286. package/docs/errors/collection-index.md +33 -0
  287. package/docs/errors/color-components.md +33 -0
  288. package/docs/errors/content-bad-operands.md +36 -0
  289. package/docs/errors/content-path-unpainted.md +36 -0
  290. package/docs/errors/content-resource-missing.md +37 -0
  291. package/docs/errors/content-syntax.md +36 -0
  292. package/docs/errors/content-unbalanced-bt.md +36 -0
  293. package/docs/errors/content-unbalanced-marked.md +36 -0
  294. package/docs/errors/content-unbalanced-q.md +36 -0
  295. package/docs/errors/content-unknown-operator.md +37 -0
  296. package/docs/errors/data-pending.md +34 -0
  297. package/docs/errors/decompress.md +34 -0
  298. package/docs/errors/device-color-without-output-intent.md +33 -0
  299. package/docs/errors/direct-page.md +34 -0
  300. package/docs/errors/disposed.md +34 -0
  301. package/docs/errors/document-changed.md +34 -0
  302. package/docs/errors/embedded-file-forbidden.md +35 -0
  303. package/docs/errors/embedded-file-without-mime-type.md +36 -0
  304. package/docs/errors/encoding-full.md +34 -0
  305. package/docs/errors/encrypted-base.md +33 -0
  306. package/docs/errors/extract-limit-blocks.md +35 -0
  307. package/docs/errors/extract-module-not-loaded.md +37 -0
  308. package/docs/errors/extract-reading-order-ambiguous.md +32 -0
  309. package/docs/errors/extract-struct-tree-ignored.md +32 -0
  310. package/docs/errors/extract-table-ambiguous.md +32 -0
  311. package/docs/errors/extract-table-limit.md +35 -0
  312. package/docs/errors/extract-untagged-content.md +32 -0
  313. package/docs/errors/fetch-failed.md +34 -0
  314. package/docs/errors/flate-truncated.md +34 -0
  315. package/docs/errors/font-invalid.md +36 -0
  316. package/docs/errors/font-mismatch.md +34 -0
  317. package/docs/errors/font-not-embeddable.md +34 -0
  318. package/docs/errors/font-not-embedded.md +35 -0
  319. package/docs/errors/font-not-shapable.md +33 -0
  320. package/docs/errors/glyph-out-of-range.md +34 -0
  321. package/docs/errors/glyph-without-unicode.md +35 -0
  322. package/docs/errors/heading-level-skipped.md +36 -0
  323. package/docs/errors/image-data-length.md +33 -0
  324. package/docs/errors/image-too-large.md +32 -0
  325. package/docs/errors/inline-image-unterminated.md +36 -0
  326. package/docs/errors/input-unreadable.md +37 -0
  327. package/docs/errors/instance-reset.md +34 -0
  328. package/docs/errors/invalid-argument.md +33 -0
  329. package/docs/errors/invalid-axis-value.md +32 -0
  330. package/docs/errors/invalid-box.md +34 -0
  331. package/docs/errors/invalid-color.md +32 -0
  332. package/docs/errors/invalid-command-line.md +44 -0
  333. package/docs/errors/invalid-date.md +34 -0
  334. package/docs/errors/invalid-entry.md +34 -0
  335. package/docs/errors/invalid-feature.md +32 -0
  336. package/docs/errors/invalid-font.md +32 -0
  337. package/docs/errors/invalid-geometry.md +32 -0
  338. package/docs/errors/invalid-icc-profile.md +32 -0
  339. package/docs/errors/invalid-image.md +33 -0
  340. package/docs/errors/invalid-op-log.md +33 -0
  341. package/docs/errors/invalid-page-label.md +34 -0
  342. package/docs/errors/invalid-page-labels.md +32 -0
  343. package/docs/errors/invalid-page-range.md +37 -0
  344. package/docs/errors/invalid-rotate.md +34 -0
  345. package/docs/errors/invalid-structure-nesting.md +38 -0
  346. package/docs/errors/invalid-structure.md +34 -0
  347. package/docs/errors/invalid-text-range.md +33 -0
  348. package/docs/errors/job-finished.md +34 -0
  349. package/docs/errors/limit-exceeded.md +38 -0
  350. package/docs/errors/link-without-contents.md +33 -0
  351. package/docs/errors/link-without-structure.md +37 -0
  352. package/docs/errors/missing-alt-text.md +33 -0
  353. package/docs/errors/missing-glyph.md +33 -0
  354. package/docs/errors/missing-header.md +37 -0
  355. package/docs/errors/missing-lang.md +32 -0
  356. package/docs/errors/missing-root.md +34 -0
  357. package/docs/errors/missing-title.md +32 -0
  358. package/docs/errors/name-tree-node-skipped.md +34 -0
  359. package/docs/errors/nested-transaction.md +34 -0
  360. package/docs/errors/no-pending-save.md +32 -0
  361. package/docs/errors/no-transaction.md +33 -0
  362. package/docs/errors/not-initialized.md +35 -0
  363. package/docs/errors/not-pdf.md +33 -0
  364. package/docs/errors/not-rebased.md +35 -0
  365. package/docs/errors/object-number-out-of-range.md +38 -0
  366. package/docs/errors/objstm-index-mismatch.md +36 -0
  367. package/docs/errors/out-of-memory.md +38 -0
  368. package/docs/errors/outline-cycle.md +34 -0
  369. package/docs/errors/outline-item-skipped.md +34 -0
  370. package/docs/errors/output-unwritable.md +37 -0
  371. package/docs/errors/overwrite-refused.md +36 -0
  372. package/docs/errors/page-count-mismatch.md +34 -0
  373. package/docs/errors/page-index-out-of-range.md +34 -0
  374. package/docs/errors/page-tree-node-skipped.md +35 -0
  375. package/docs/errors/password-required.md +36 -0
  376. package/docs/errors/path-outside-roots.md +32 -0
  377. package/docs/errors/perms-mismatch.md +34 -0
  378. package/docs/errors/profile-version-conflict.md +35 -0
  379. package/docs/errors/reference-cycle.md +35 -0
  380. package/docs/errors/render-backend-unavailable.md +32 -0
  381. package/docs/errors/render-failed.md +33 -0
  382. package/docs/errors/render-too-large.md +36 -0
  383. package/docs/errors/repaired-base.md +34 -0
  384. package/docs/errors/requires-rewrite.md +38 -0
  385. package/docs/errors/saved-not-rebased.md +34 -0
  386. package/docs/errors/sink-not-empty.md +33 -0
  387. package/docs/errors/sink.md +31 -0
  388. package/docs/errors/source-budget-exceeded.md +34 -0
  389. package/docs/errors/source-changed.md +33 -0
  390. package/docs/errors/source.md +30 -0
  391. package/docs/errors/stale-generation.md +34 -0
  392. package/docs/errors/stream-length-recovered.md +37 -0
  393. package/docs/errors/strict.md +34 -0
  394. package/docs/errors/subset-failed.md +31 -0
  395. package/docs/errors/syntax.md +34 -0
  396. package/docs/errors/text-module-not-loaded.md +36 -0
  397. package/docs/errors/text-overflow.md +34 -0
  398. package/docs/errors/tounicode-conflict.md +32 -0
  399. package/docs/errors/type.md +34 -0
  400. package/docs/errors/unexpected-eof.md +34 -0
  401. package/docs/errors/unknown-axis.md +33 -0
  402. package/docs/errors/unknown-code.md +36 -0
  403. package/docs/errors/unknown-destination.md +33 -0
  404. package/docs/errors/unknown-font.md +33 -0
  405. package/docs/errors/unknown-option.md +33 -0
  406. package/docs/errors/unknown-page.md +34 -0
  407. package/docs/errors/unmapped-glyph.md +36 -0
  408. package/docs/errors/unnumbered-heading-misused.md +34 -0
  409. package/docs/errors/unset-object.md +30 -0
  410. package/docs/errors/unsupported-filter.md +34 -0
  411. package/docs/errors/unsupported-image.md +33 -0
  412. package/docs/errors/unsupported-layout-option.md +33 -0
  413. package/docs/errors/unsupported-security-handler.md +34 -0
  414. package/docs/errors/unsupported-version.md +32 -0
  415. package/docs/errors/untagged-content.md +35 -0
  416. package/docs/errors/warnings-truncated.md +35 -0
  417. package/docs/errors/wasm-trap.md +37 -0
  418. package/docs/errors/whole-font-rebuilt.md +30 -0
  419. package/docs/errors/worker-crashed.md +33 -0
  420. package/docs/errors/worker-failed.md +32 -0
  421. package/docs/errors/worker-version-mismatch.md +34 -0
  422. package/docs/errors/would-invalidate-signatures.md +38 -0
  423. package/docs/errors/wrong-document.md +33 -0
  424. package/docs/errors/wrong-password.md +34 -0
  425. package/docs/errors/xobject-cycle.md +36 -0
  426. package/docs/errors/xref-repaired.md +36 -0
  427. package/docs/errors/xrefstm-ignored.md +34 -0
  428. package/docs/llms.txt +88 -0
  429. package/docs/pages/concepts/dependencies.md +44 -0
  430. package/docs/pages/concepts/errors-and-warnings.md +64 -0
  431. package/docs/pages/concepts/how-lamina-thinks.md +86 -0
  432. package/docs/pages/concepts/pages-and-coordinates.md +67 -0
  433. package/docs/pages/guides/accessible-pdfs.md +260 -0
  434. package/docs/pages/guides/archival-pdfs.md +429 -0
  435. package/docs/pages/guides/edit-a-pdf.md +137 -0
  436. package/docs/pages/guides/fonts-and-text.md +202 -0
  437. package/docs/pages/guides/images-and-vectors.md +219 -0
  438. package/docs/pages/guides/keep-the-page-responsive.md +81 -0
  439. package/docs/pages/guides/links-outlines-and-metadata.md +222 -0
  440. package/docs/pages/guides/password-protected-files.md +70 -0
  441. package/docs/pages/guides/save-a-pdf.md +144 -0
  442. package/docs/pages/guides/untrusted-files.md +80 -0
  443. package/docs/pages/index.md +33 -0
  444. package/docs/pages/install.md +75 -0
  445. package/docs/pages/quick-start/browser.md +67 -0
  446. package/docs/pages/quick-start/bun.md +60 -0
  447. package/docs/pages/quick-start/deno.md +58 -0
  448. package/docs/pages/quick-start/node.md +61 -0
  449. package/docs/pages/quick-start/rust.md +58 -0
  450. package/docs/pages/quick-start/workers.md +139 -0
  451. package/docs/pages/recipes/cloudflare-worker.md +115 -0
  452. package/docs/pages/recipes/extract-markdown.md +114 -0
  453. package/docs/pages/recipes/generate-then-edit.md +135 -0
  454. package/docs/pages/recipes/hello.md +94 -0
  455. package/docs/pages/recipes/images-and-vectors.md +209 -0
  456. package/docs/pages/recipes/invoice.md +226 -0
  457. package/docs/pages/recipes/links-and-outlines.md +215 -0
  458. package/docs/pages/recipes/multilingual.md +189 -0
  459. package/docs/pages/recipes/open-untrusted.md +65 -0
  460. package/docs/pages/recipes/pdf-a-archive.md +205 -0
  461. package/docs/pages/recipes/pdf-a3-invoice-with-xml.md +222 -0
  462. package/docs/pages/recipes/pdf-ua-report.md +237 -0
  463. package/docs/pages/recipes/report.md +125 -0
  464. package/docs/pages/recipes/web-worker-client.md +64 -0
  465. package/docs/pages/recipes.md +47 -0
  466. package/docs/pages/reference/changelog.md +86 -0
  467. package/docs/pages/reference/codes.md +14 -0
  468. package/docs/pages/reference/glossary.md +108 -0
  469. package/docs/pages/reference/rust.md +36 -0
  470. package/docs/pages/reference/stability.md +59 -0
  471. package/docs/pages/start/coding-agents.md +45 -0
  472. package/docs/pages/start/first-pdf.md +77 -0
  473. package/docs/pages/troubleshooting.md +74 -0
  474. package/docs/renames.json +86 -0
  475. package/docs/schemas/error.schema.json +305 -0
  476. package/docs/schemas/renames.schema.json +29 -0
  477. package/package.json +93 -3
  478. package/schemas/error.schema.json +305 -0
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "job-finished"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/job-finished/"
5
+ ---
6
+
7
+ # job-finished
8
+
9
+ - Type: error
10
+ - Kind: `state` (the call isn't valid in the object's current state)
11
+
12
+ ## What happened
13
+
14
+ `step` was called on a job that had already returned its result, failed or been cancelled.
15
+
16
+ ## Why
17
+
18
+ A job ends with its first `Step::Done`, or with its first error: an error ends the job. A step loop that keeps going after either reaches this.
19
+
20
+ ## How to fix
21
+
22
+ Stop stepping once a step returns `Done` or an error. To run the work again, create a new job.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let mut job = doc.save_job(&laminapdf::SaveOptions::new());
28
+ while let laminapdf::Step::Progress { .. } = job.step(&mut doc, laminapdf::Budget::UNLIMITED)? {}
29
+ assert_eq!(job.step(&mut doc, laminapdf::Budget::UNLIMITED).unwrap_err().code(), "job-finished");
30
+ ```
31
+
32
+ ## Data fields
33
+
34
+ None.
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: "limit-exceeded"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/limit-exceeded/"
5
+ ---
6
+
7
+ # limit-exceeded
8
+
9
+ - Type: error
10
+ - Kind: `limit` (a `Limits` value or another resource bound was hit)
11
+
12
+ ## What happened
13
+
14
+ A hard `Limits` value was exceeded.
15
+
16
+ ## Why
17
+
18
+ Hostile or unusually large input.
19
+
20
+ ## How to fix
21
+
22
+ Raise the named limit only if you trust the input.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let options = OpenOptions::new().with_limits(Limits::new().with_max_nesting_depth(1));
28
+ let doc = Document::open_bytes(bytes, options)?;
29
+ let err = doc.page_count().unwrap_err();
30
+ // { "code": "limit-exceeded", "kind": "limit", "data": { "limit": "max_nesting_depth" },
31
+ // "location": { "object": 9, "streamOffset": 89 }, … }
32
+ ```
33
+
34
+ ## Data fields
35
+
36
+ `limit` (the limit's name).
37
+
38
+ The `location` tells where the limit was hit. The nesting and string-length limits and the read window give `offset`, a file offset; the same limits inside an object stream give `object` with `streamOffset`. A reference chain gives `object` alone, and decoding budgets give no location.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "link-without-contents"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/link-without-contents/"
5
+ ---
6
+
7
+ # link-without-contents
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ Under PDF/UA-1, a link annotation has no description: `Surface::link` or `TextRun::link` was called with `None` (or an empty string) as its contents.
15
+
16
+ ## Why
17
+
18
+ A screen reader announces a link by its `/Contents`, its alternate description. The PDF/UA-1 standard for accessible PDF (ISO 14289-1 §7.18.5) requires one on every link. This is condition 28-012 of the Matterhorn Protocol, the PDF Association's checklist of PDF/UA failures.
19
+
20
+ ## How to fix
21
+
22
+ Pass a short description of where the link goes as the link's contents.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ surface.link(rect, LinkTarget::Uri("https://example.com/pay".into()), None);
28
+ builder.finish()?; // link-without-contents: pass Some("Pay the invoice online".into())
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `page`: the page's index (0-based).
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: "link-without-structure"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/link-without-structure/"
5
+ ---
6
+
7
+ # link-without-structure
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ Under PDF/UA-1, a link annotation has no `Link` structure element. The builder gives every link one automatically, except a link drawn inside an artifact, which stays outside the structure.
15
+
16
+ ## Why
17
+
18
+ A screen reader finds links through the structure tree, so a link inside decoration can't be reached. The PDF/UA-1 standard for accessible PDF (ISO 14289-1 §7.18.5) requires each link annotation to be nested in a `Link` element. This is condition 28-011 of the Matterhorn Protocol, the PDF Association's checklist of PDF/UA failures.
19
+
20
+ ## How to fix
21
+
22
+ Draw the link outside `Surface::artifact`, next to the text it belongs to; the builder then wraps it in a `Link` element.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ surface.artifact(ArtifactKind::Layout, |s| {
28
+ s.link(rect, LinkTarget::Uri("https://example.com".into()), Some("Example".into()));
29
+ Ok(())
30
+ })?;
31
+ builder.finish()?; // link-without-structure
32
+ ```
33
+
34
+ ## Data fields
35
+
36
+ - `page`: the page's index (0-based).
37
+ - `count`: how many links on that page lack a `Link` element.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "missing-alt-text"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/missing-alt-text/"
5
+ ---
6
+
7
+ # missing-alt-text
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ Under PDF/UA-1, a page has a `Figure` or `Formula` element without alternate text: neither `/Alt` (`Tag::with_alt`) nor `/ActualText` (`Tag::with_actual_text`).
15
+
16
+ ## Why
17
+
18
+ A screen reader can't describe a picture or a formula by itself. The PDF/UA-1 standard for accessible PDF (ISO 14289-1 §7.3) requires every `Figure` and every `Formula` to carry a text alternative. These are conditions 13-004 and 17-002 of the Matterhorn Protocol, the PDF Association's checklist of PDF/UA failures. Lamina PDF checks only that a description exists; whether it describes the figure well is for a person to judge.
19
+
20
+ ## How to fix
21
+
22
+ Describe the figure with `Surface::figure(&image, rect, alt)` or `Tag::new(TagKind::Figure).with_alt(…)`. If the picture is decoration that carries no meaning, draw it inside `Surface::artifact` instead.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ surface.tag(TagKind::Figure, |s| { s.image(&chart, rect); Ok(()) })?;
28
+ builder.finish()?; // missing-alt-text: use Tag::new(TagKind::Figure).with_alt("Sales by month")
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `page`: the page's index (0-based).
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "missing-glyph"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/missing-glyph/"
5
+ ---
6
+
7
+ # missing-glyph
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ Text contained a character the font has no glyph for. Lamina PDF never draws `.notdef` (an empty box) silently.
15
+
16
+ ## Why
17
+
18
+ The font's `cmap` does not map the character (for example a CJK character with a Latin font).
19
+
20
+ ## How to fix
21
+
22
+ Use a font that covers the character (check with `Font::glyph_for`), or split the text across fonts.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ registry.encode(latin_font, "東京")?; // missing-glyph: the font has no CJK glyphs
28
+ ```
29
+
30
+ ## Data fields
31
+
32
+ - `ch`: the character (**untrusted**: caller or document text).
33
+ - `font`: the font's PostScript name (**untrusted**: read from the font).
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: "missing-header"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/missing-header/"
5
+ ---
6
+
7
+ # missing-header
8
+
9
+ - Type: warning
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ No `%PDF-x.y` header was found in the first 1,024 bytes; parsing went ahead.
15
+
16
+ ## Why
17
+
18
+ Files are often truncated at the front or prefixed with other data.
19
+
20
+ ## How to fix
21
+
22
+ Nothing, if the document reads correctly. Open in strict mode to refuse such files, or strip whatever precedes `%PDF` before opening.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ offset 0 From: mailer@example.org
28
+ …(1,200 bytes of mail headers and a MIME boundary)…
29
+ offset 1,212 %PDF-1.7
30
+ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
31
+ ```
32
+
33
+ Lamina PDF looks for `%PDF-` in the first 1,024 bytes only. Here it starts at byte 1,212, so `Document::open_bytes` warns `missing-header` and reads the objects anyway. With `OpenOptions::new().with_strict(true)` the same open fails with [`strict`](strict.md).
34
+
35
+ ## Data fields
36
+
37
+ None.
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: "missing-lang"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/missing-lang/"
5
+ ---
6
+
7
+ # missing-lang
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ A PDF/UA-1 document (`Profile::PdfUa1`) reached `Builder::finish` without a natural language: `Builder::lang` was never called, or was given a blank tag.
15
+
16
+ ## Why
17
+
18
+ A screen reader picks its voice and pronunciation from the document's language (`/Lang` in the catalog, ISO 32000-2 §14.9.2). The PDF/UA-1 standard for accessible PDF (ISO 14289-1 §7.2) requires that the language of all text can be determined. These are conditions 11-001 and 11-006 of the Matterhorn Protocol, the PDF Association's checklist of PDF/UA failures.
19
+
20
+ ## How to fix
21
+
22
+ Set the document's language with a BCP 47 tag, the standard language code of the web, such as `en-GB` or `fr`. Text in another language can carry its own tag with `Tag::with_lang`.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ builder.lang("en-GB");
28
+ ```
29
+
30
+ ## Data fields
31
+
32
+ None.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "missing-root"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/missing-root/"
5
+ ---
6
+
7
+ # missing-root
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ No document catalog (`/Root`) was found, even after repair.
15
+
16
+ ## Why
17
+
18
+ The file is damaged beyond repair.
19
+
20
+ ## How to fix
21
+
22
+ Use another copy of the file.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ trailer << /Size 3 >> % no /Root, and no object with /Type /Catalog in the file
28
+ ```
29
+
30
+ Repair found no catalog to use, so `open` fails.
31
+
32
+ ## Data fields
33
+
34
+ None.
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: "missing-title"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/missing-title/"
5
+ ---
6
+
7
+ # missing-title
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ A PDF/UA-1 document (`Profile::PdfUa1`) reached `Builder::finish` without a title: `Builder::metadata` was never called, or its `Metadata` has no title, or the title is blank.
15
+
16
+ ## Why
17
+
18
+ A screen reader announces the title first, so a document without one is hard to tell apart from others. The PDF/UA-1 standard for accessible PDF (ISO 14289-1 §7.1) requires a title in the document's metadata. The title is `dc:title` in the XMP packet, the XML metadata stream that the builder writes from `Metadata`. The standard also asks viewers to show the title in the title bar instead of the file name (`/DisplayDocTitle`, which the builder writes for you). This is condition 06-003 of the Matterhorn Protocol, the PDF Association's checklist of PDF/UA failures.
19
+
20
+ ## How to fix
21
+
22
+ Give the document a title that says what it is.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ builder.metadata(Metadata::default().with_title("Quarterly report, Q3 2026"));
28
+ ```
29
+
30
+ ## Data fields
31
+
32
+ None.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "name-tree-node-skipped"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/name-tree-node-skipped/"
5
+ ---
6
+
7
+ # name-tree-node-skipped
8
+
9
+ - Type: warning
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ A name- or number-tree node was malformed, reached twice or too deep, and was skipped.
15
+
16
+ ## Why
17
+
18
+ Damaged trees: a node that is not a dictionary, a kid reached twice (a cycle), or a tree deeper than `max_tree_depth`.
19
+
20
+ ## How to fix
21
+
22
+ Nothing to do; the entries under the skipped node are missing from the tree.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ << /Kids [20 0 R 21 0 R] >> % 21 0 obj is (oops), not a dictionary
28
+ ```
29
+
30
+ The walk of the `/Dests` name tree skips node 21 and keeps the entries under node 20.
31
+
32
+ ## Data fields
33
+
34
+ None.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "nested-transaction"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/nested-transaction/"
5
+ ---
6
+
7
+ # nested-transaction
8
+
9
+ - Type: error
10
+ - Kind: `state` (the call isn't valid in the object's current state)
11
+
12
+ ## What happened
13
+
14
+ A transaction was started, or undo/redo called, while one is open.
15
+
16
+ ## Why
17
+
18
+ Calling code opened a second transaction.
19
+
20
+ ## How to fix
21
+
22
+ Commit or roll back first, or use a savepoint.
23
+
24
+ ## Example
25
+
26
+ ```ts
27
+ doc.transact((tx) => {
28
+ doc.undo(); // nested-transaction: finish the transaction first
29
+ });
30
+ ```
31
+
32
+ ## Data fields
33
+
34
+ None.
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: "no-pending-save"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/no-pending-save/"
5
+ ---
6
+
7
+ # no-pending-save
8
+
9
+ - Type: error
10
+ - Kind: `state` (the call isn't valid in the current state; it may succeed after a state change)
11
+
12
+ ## What happened
13
+
14
+ `rebase` was called, but no save is waiting for it.
15
+
16
+ ## Why
17
+
18
+ Rebasing onto other bytes would not match the undo history, and unsaved changes would be lost.
19
+
20
+ ## How to fix
21
+
22
+ Call `rebase` only after a save that left the document `SavedNotRebased`.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ doc.rebase(bytes)?; // no-pending-save: no save is waiting
28
+ ```
29
+
30
+ ## Data fields
31
+
32
+ None.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "no-transaction"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/no-transaction/"
5
+ ---
6
+
7
+ # no-transaction
8
+
9
+ - Type: error
10
+ - Kind: `state` (the call isn't valid in the object's current state)
11
+
12
+ ## What happened
13
+
14
+ `apply`, `commit` or `rollback` was called without an open transaction.
15
+
16
+ ## Why
17
+
18
+ Calling code skipped `begin`.
19
+
20
+ ## How to fix
21
+
22
+ Call `begin` first, or use `transact`.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ // laminapdf_ops::Document, without begin():
28
+ ops.commit()?; // no-transaction
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ None.
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: "not-initialized"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/not-initialized/"
5
+ ---
6
+
7
+ # not-initialized
8
+
9
+ - Type: error
10
+ - Kind: `state` (the call isn't valid in the object's current state)
11
+
12
+ ## What happened
13
+
14
+ A function or class of `@laminapdf/sdk` (`Document.open`, `new Builder`, …) was called before `init()` had finished loading and instantiating the WebAssembly module.
15
+
16
+ ## Why
17
+
18
+ `@laminapdf/sdk` is synchronous after `init()`, but fetching and compiling the `.wasm` file is asynchronous, so it happens once, up front, in `init()`. Until that promise resolves there is no module to call.
19
+
20
+ ## How to fix
21
+
22
+ Await `init()` once, before the first call; calling it again is cheap (it is idempotent). In a Cloudflare Worker, pass the imported module: `await init({ module: wasm })`.
23
+
24
+ ## Example
25
+
26
+ ```js
27
+ import { Document, init } from "@laminapdf/sdk";
28
+ Document.open(bytes); // throws { code: "not-initialized", … }
29
+ await init();
30
+ Document.open(bytes); // works
31
+ ```
32
+
33
+ ## Data fields
34
+
35
+ None.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "not-pdf"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/not-pdf/"
5
+ ---
6
+
7
+ # not-pdf
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ The input does not look like a PDF at all.
15
+
16
+ ## Why
17
+
18
+ The bytes are empty, or no `n g obj` header appears anywhere in them: an HTML error page saved as `.pdf`, a different format, or the wrong buffer.
19
+
20
+ ## How to fix
21
+
22
+ Check that you passed the right bytes.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let err = laminapdf::Document::open_bytes(b"<html>…</html>".to_vec(), Default::default()).unwrap_err();
28
+ assert_eq!(err.code(), "not-pdf");
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ None.
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: "not-rebased"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/not-rebased/"
5
+ ---
6
+
7
+ # not-rebased
8
+
9
+ - Type: error
10
+ - Kind: `state` (the call isn't valid in the current state; it may succeed after a state change)
11
+
12
+ ## What happened
13
+
14
+ The save wrote its complete output, but rebasing the document onto it failed. The document is `SavedNotRebased`.
15
+
16
+ ## Why
17
+
18
+ Reading the output back failed (for example a limit, or a source that can't deliver the bytes yet).
19
+
20
+ ## How to fix
21
+
22
+ Retry `rebase` with the output the error carries (`saved.source()`; in the `laminapdf` façade, `Error::saved_output()` and `Document::rebase`).
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ match doc.save_with(&options, &cancel) {
28
+ Err(e) if e.code() == "not-rebased" => doc.rebase(e.saved_output().unwrap())?,
29
+ other => { other?; }
30
+ }
31
+ ```
32
+
33
+ ## Data fields
34
+
35
+ - `error`: the rebase's own error (its code, kind and location).
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: "object-number-out-of-range"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/object-number-out-of-range/"
5
+ ---
6
+
7
+ # object-number-out-of-range
8
+
9
+ - Type: warning
10
+ - Kind: `limit` (a `Limits` value or another resource bound was hit)
11
+
12
+ ## What happened
13
+
14
+ An xref entry above `Limits::max_object_number` was dropped.
15
+
16
+ ## Why
17
+
18
+ Corrupt or hostile xref data.
19
+
20
+ ## How to fix
21
+
22
+ Raise `max_object_number` only for trusted input.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ xref
28
+ 0 1
29
+ 0000000000 65535 f
30
+ 9999999 1
31
+ 0000000015 00000 n
32
+ ```
33
+
34
+ Object 9,999,999 is above `Limits::max_object_number`; its entry is dropped so a hostile xref can't make Lamina PDF allocate for it. References to it resolve to `null`.
35
+
36
+ ## Data fields
37
+
38
+ None.
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: "objstm-index-mismatch"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/objstm-index-mismatch/"
5
+ ---
6
+
7
+ # objstm-index-mismatch
8
+
9
+ - Type: warning
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ An object stream's index was stale; the object was found by searching.
15
+
16
+ ## Why
17
+
18
+ Object streams rewritten by a tool that did not update the index at their start.
19
+
20
+ ## How to fix
21
+
22
+ Nothing.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ 12 0 obj << /Type /ObjStm /N 3 /First 18 >> stream
28
+ 20 0 21 14 22 31
29
+ …
30
+ ```
31
+
32
+ The index says object 21 starts at offset 14 of the stream, but it starts elsewhere. Lamina PDF searches the stream for it, uses what it finds and raises the warning.
33
+
34
+ ## Data fields
35
+
36
+ None.