@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,33 @@
1
+ ---
2
+ title: "sink-not-empty"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/sink-not-empty/"
5
+ ---
6
+
7
+ # sink-not-empty
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ The `WriteSink` already held bytes when the save started, so the writer refused before writing anything.
15
+
16
+ ## Why
17
+
18
+ Output offsets (the xref table, `startxref`) count from the sink's first byte, and a sink only appends. An `AppendedOnly` incremental save also accepts a sink that holds exactly the base.
19
+
20
+ ## How to fix
21
+
22
+ Pass an empty sink. The document is unchanged.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let mut sink = b"%PDF-".to_vec();
28
+ ops.save(&mut sink, &options)?; // sink-not-empty, data.held = 5
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `held`: the bytes the sink held.
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "sink"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/sink/"
5
+ ---
6
+
7
+ # sink
8
+
9
+ - Type: error
10
+ - Kind: `io` (the host failed to supply or take bytes)
11
+
12
+ ## What happened
13
+
14
+ The `WriteSink` failed to take the bytes, or could not give them back. (A sink that already held bytes is [`sink-not-empty`](sink-not-empty.md).)
15
+
16
+ ## Why
17
+
18
+ The destination failed: a full disk, a closed upload, a refused read-back.
19
+
20
+ ## How to fix
21
+
22
+ Check the destination and retry the save. The document is unchanged; the sink may hold a prefix of the output.
23
+
24
+ ## Example
25
+
26
+ An upload sink whose connection closed halfway through: the save fails with `sink`, the document is unchanged, and `data.kind` is the I/O error kind (`BrokenPipe`).
27
+
28
+ ## Data fields
29
+
30
+ - `kind`: the I/O error kind, for a writer that failed.
31
+ - `message`: the sink's or writer's own text (**untrusted**: it comes from the host and may name a path; never in the message).
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "source-budget-exceeded"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/source-budget-exceeded/"
5
+ ---
6
+
7
+ # source-budget-exceeded
8
+
9
+ - Type: error
10
+ - Kind: `limit` (a `Limits` value or another resource bound was hit)
11
+
12
+ ## What happened
13
+
14
+ A sparse source (`WasmSparseSource` in `@laminapdf/wasm`, or a `@laminapdf/sdk` range document) was handed bytes that would make it hold more than the byte budget it was created with. The bytes were not added.
15
+
16
+ ## Why
17
+
18
+ A range source keeps every byte it has fetched: the document may already have read them, so nothing is evicted. The budget bounds how much of a remote or lazily read file one document may hold in memory.
19
+
20
+ ## How to fix
21
+
22
+ Create the source with a larger budget, or fetch less per round: smaller blocks and no readahead. A file that must be read whole (a full rewrite, or a repaired file with no usable xref) needs a budget of at least its size.
23
+
24
+ ## Example
25
+
26
+ ```js
27
+ const source = new WasmSparseSource(10_000_000, 1_000_000);
28
+ source.supply(0, new Uint8Array(2_000_000)); // throws { code: "source-budget-exceeded", … }
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `argument`: `bytes`.
34
+ - `detail`: how many bytes the source would hold and its budget (Lamina PDF's own numbers).
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "source-changed"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/source-changed/"
5
+ ---
6
+
7
+ # source-changed
8
+
9
+ - Type: error
10
+ - Kind: `io` (the host failed to supply bytes; often transient)
11
+
12
+ ## What happened
13
+
14
+ A remote file changed while `@laminapdf/sdk` was reading it range by range: a response's `ETag` or total length differs from the first one (or the server ignored `If-Range` and sent a different file).
15
+
16
+ ## Why
17
+
18
+ A range document is assembled from many responses. If the file changed between them, the parts no longer belong to one file, and the document would read a mix of two versions. `httpRangeSource` sends `If-Range` with the first `ETag` and compares each response's `ETag` and `Content-Range` length with the first.
19
+
20
+ ## How to fix
21
+
22
+ Open the file again (a new source, a new document). If the file changes often, download it whole with `Document.open(bytes)` instead.
23
+
24
+ ## Example
25
+
26
+ ```js
27
+ const doc = await Document.openRange(httpRangeSource(url));
28
+ await doc.ensure(() => doc.pages); // throws { code: "source-changed", … } if the file was replaced meanwhile
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ None.
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: "source"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/source/"
5
+ ---
6
+
7
+ # source
8
+
9
+ - Type: error
10
+ - Kind: `io` (the host failed to supply bytes; often transient)
11
+
12
+ ## What happened
13
+
14
+ The `ByteSource` failed to read.
15
+
16
+ ## Why
17
+
18
+ A file-system or network error in the host.
19
+
20
+ ## How to fix
21
+
22
+ Retry, or check the source.
23
+
24
+ ## Example
25
+
26
+ A `ByteSource` reading from a network answered with an error for bytes 4096..+65536; the call fails with `source` and the same call can be retried once the connection is back.
27
+
28
+ ## Data fields
29
+
30
+ None.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "stale-generation"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/stale-generation/"
5
+ ---
6
+
7
+ # stale-generation
8
+
9
+ - Type: warning
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ A reference's generation number did not match its xref entry, so it resolved to `null` (ISO 32000-2 §7.3.10).
15
+
16
+ ## Why
17
+
18
+ An editor deleted and reused an object number (bumping its generation) but left a reference with the old generation behind.
19
+
20
+ ## How to fix
21
+
22
+ Nothing; the reference is treated as missing.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ /Contents 7 1 R % but the xref entry for object 7 has generation 0
28
+ ```
29
+
30
+ The reference resolves to `null` (ISO 32000-2 §7.3.10), as if object 7 were missing, and the warning carries `generation` 1.
31
+
32
+ ## Data fields
33
+
34
+ `generation`.
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: "stream-length-recovered"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/stream-length-recovered/"
5
+ ---
6
+
7
+ # stream-length-recovered
8
+
9
+ - Type: warning
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ A stream's `/Length` was wrong or unresolvable; its end was found by scanning for `endstream`.
15
+
16
+ ## Why
17
+
18
+ Writers that edit streams without updating `/Length`.
19
+
20
+ ## How to fix
21
+
22
+ Nothing; re-saving writes the correct length.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ 4 0 obj << /Length 10 >>
28
+ stream
29
+ BT /F1 12 Tf 72 720 Td (Hello) Tj ET
30
+ endstream
31
+ ```
32
+
33
+ `/Length` says 10 bytes but the data is longer. Lamina PDF finds `endstream`, uses the real length and raises the warning with the stream's `object`.
34
+
35
+ ## Data fields
36
+
37
+ None.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "strict"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/strict/"
5
+ ---
6
+
7
+ # strict
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ Strict mode refused something the tolerant reader would have repaired.
15
+
16
+ ## Why
17
+
18
+ The file needs repair; see the warning code in the data.
19
+
20
+ ## How to fix
21
+
22
+ Open without strict mode, or fix the file.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let options = OpenOptions::new().with_strict(true);
28
+ let err = Document::open_bytes(bytes_with_a_broken_xref, options).unwrap_err();
29
+ // { "code": "strict", "data": { "warning": "xref-repaired" }, … }
30
+ ```
31
+
32
+ ## Data fields
33
+
34
+ `warning` (the warning code).
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "subset-failed"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/subset-failed/"
5
+ ---
6
+
7
+ # subset-failed
8
+
9
+ - Type: error
10
+ - Kind: `unsupported` (valid input that Lamina PDF doesn't implement)
11
+
12
+ ## What happened
13
+
14
+ Subsetting a font at `FontRegistry::finish_fonts` failed.
15
+
16
+ ## Why
17
+
18
+ The `subsetter` crate could not rebuild the font program: a font feature it does not support, or a table it could not parse.
19
+
20
+ ## How to fix
21
+
22
+ Try another version or format of the font (for example TrueType instead of CFF), and report the font if it is a common one.
23
+
24
+ ## Example
25
+
26
+ A font whose tables `subsetter` can't rebuild makes `FontRegistry::finish_fonts` (and so `Builder::finish`) fail with `subset-failed`; `data.font` is the font's PostScript name.
27
+
28
+ ## Data fields
29
+
30
+ - `font`: the font's PostScript name (**untrusted**: read from the font).
31
+ - `reason`: the subsetter's failure class (fixed text).
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "syntax"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/syntax/"
5
+ ---
6
+
7
+ # syntax
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ A token or structure did not match the PDF grammar.
15
+
16
+ ## Why
17
+
18
+ Malformed input.
19
+
20
+ ## How to fix
21
+
22
+ Use another copy of the file.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ 1 0 obj << /Type /Catalog /Pages 2 0 R >> >> endobj
28
+ ```
29
+
30
+ A stray `>>` where an object should end: parsing that object fails with `syntax` at its offset.
31
+
32
+ ## Data fields
33
+
34
+ None. The `location` is a file `offset`, or `object` with `streamOffset` inside an object stream.
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: "text-module-not-loaded"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/text-module-not-loaded/"
5
+ ---
6
+
7
+ # text-module-not-loaded
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 font or text method (`Font` use, `surface.text`, `surface.textBox`, `builder.font`) was called on a `Builder` created while only the base WebAssembly module was loaded, or `new Builder({ text: true })` was called before the text module was loaded.
15
+
16
+ ## Why
17
+
18
+ `@laminapdf/sdk` ships two modules: the base module (open, edit, save, vector and image pages) and the larger text module (all of the base plus fonts, shaping and text layout). A document that draws text is built entirely in the text module, and loading it is asynchronous, so it can't happen inside a synchronous drawing call. A builder created without the text module can't gain it later.
19
+
20
+ ## How to fix
21
+
22
+ Load the text module before creating the builder that draws text: `await init({ text: true })`, or `await loadText()` after `init()`. Builders created after that use the text module.
23
+
24
+ ## Example
25
+
26
+ ```js
27
+ await init();
28
+ const b = new Builder();
29
+ b.page("A4").surface().text("Hi", { font: Font.standard("Helvetica"), size: 12, at: [72, 72] });
30
+ // throws { code: "text-module-not-loaded", … }
31
+ await loadText(); // then create a new Builder
32
+ ```
33
+
34
+ ## Data fields
35
+
36
+ None.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "text-overflow"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/text-overflow/"
5
+ ---
6
+
7
+ # text-overflow
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ `Surface::text_box` laid its text out and not every line fit the box (its height, or a single grapheme cluster wider than the box), and its `TextBoxOptions` asked for `Overflow::Error`. Nothing was drawn.
15
+
16
+ ## Why
17
+
18
+ A text box draws only lines that fit inside it. With `Overflow::Error` the caller asked to be told instead of having the text cut off.
19
+
20
+ ## How to fix
21
+
22
+ Make the box taller or wider, the font smaller or the text shorter; or use `Overflow::Clip` (the default), which draws the lines that fit and reports where the rest starts in `TextLayout::overflow`.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let options = TextBoxOptions::default().with_overflow(Overflow::Error);
28
+ surface.text_box(long_text, &font, Pt::new(12.0), small_rect, &options)?; // text-overflow
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `fits`: the number of lines that fit.
34
+ - `needed`: the number of lines the text needs.
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: "tounicode-conflict"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/tounicode-conflict/"
5
+ ---
6
+
7
+ # tounicode-conflict
8
+
9
+ - Type: warning
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ One glyph was used for two different texts; the ToUnicode CMap maps it to the first.
15
+
16
+ ## Why
17
+
18
+ A ToUnicode CMap maps each code to one string (ISO 32000-2 §9.10.3), for example when one space glyph stands for both U+0020 and U+00A0.
19
+
20
+ ## How to fix
21
+
22
+ Mark the second occurrence with `/ActualText` (§14.9.4) so extraction gets its text; Lamina PDF's builder does this for you.
23
+
24
+ ## Example
25
+
26
+ A CFF font in which one space glyph is used for both U+0020 and U+00A0: the ToUnicode CMap maps it to U+0020 (the first use), and the warning names the glyph (`gid`) and the second text.
27
+
28
+ ## Data fields
29
+
30
+ - `font`: the font's PostScript name (**untrusted**: read from the font).
31
+ - `gid`: the glyph, in the original font's numbering.
32
+ - `kept`, `dropped`: the two texts (**untrusted**: caller text).
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "type"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/type/"
5
+ ---
6
+
7
+ # type
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ An object had a different type than the structure requires.
15
+
16
+ ## Why
17
+
18
+ Malformed input: an object of the wrong type where the structure requires a specific one.
19
+
20
+ ## How to fix
21
+
22
+ Use another copy of the file.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ 2 0 obj << /Type /Pages /Kids 5 >>
28
+ ```
29
+
30
+ `/Kids` must be an array; reading the page tree fails with `type`, and `data` names what was expected and where (`expected`, `context`, from Lamina PDF's own vocabulary).
31
+
32
+ ## Data fields
33
+
34
+ `expected`, `context` (from Lamina PDF's fixed list).
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "unexpected-eof"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/unexpected-eof/"
5
+ ---
6
+
7
+ # unexpected-eof
8
+
9
+ - Type: error
10
+ - Kind: `input` (the input is malformed beyond what tolerance repairs)
11
+
12
+ ## What happened
13
+
14
+ The input ended before a complete token or object was read.
15
+
16
+ ## Why
17
+
18
+ Truncated files.
19
+
20
+ ## How to fix
21
+
22
+ Use a complete copy of the file.
23
+
24
+ ## Example
25
+
26
+ ```text
27
+ 1 0 obj << /Type /Catalog /Pages 2 0 R
28
+ ```
29
+
30
+ The file ends inside a dictionary; the `location` is the file offset where reading stopped.
31
+
32
+ ## Data fields
33
+
34
+ None. The `location` is a file `offset`, or `object` with `streamOffset` inside an object stream.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "unknown-axis"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/unknown-axis/"
5
+ ---
6
+
7
+ # unknown-axis
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ `Font::instance` was given a variation axis the font does not have.
15
+
16
+ ## Why
17
+
18
+ A static font has no axes; a variable font has the axes listed in `FontInfo::axes` (`fvar`).
19
+
20
+ ## How to fix
21
+
22
+ Check `font.info().axes` before choosing coordinates, or use a variable font.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let bold = static_font.instance(&[(OpenTypeTag::WEIGHT, 700.0)])?; // unknown-axis: no wght axis
28
+ ```
29
+
30
+ ## Data fields
31
+
32
+ - `font`: the font's PostScript name (**untrusted**: read from the font).
33
+ - `tag`: the axis tag that was asked for.
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: "unknown-code"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/unknown-code/"
5
+ ---
6
+
7
+ # unknown-code
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ `laminapdf explain` was given a code that isn't one of Lamina PDF's error or warning codes.
15
+
16
+ ## Why
17
+
18
+ Every code Lamina PDF reports is listed once, with its own page. A code that isn't listed has no explanation to print.
19
+
20
+ ## How to fix
21
+
22
+ Check the spelling: `didYouMean` lists the known codes closest to the one given. The tables in this folder's README list every code.
23
+
24
+ ## Example
25
+
26
+ ```console
27
+ $ laminapdf explain xref-repaird
28
+ error[unknown-code]: not a Lamina PDF code
29
+ = did you mean: xref-repaired
30
+ $ echo $?
31
+ 2
32
+ ```
33
+
34
+ ## Data fields
35
+
36
+ - `code`: the code given (untrusted: caller text, never in the message).
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "unknown-destination"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/unknown-destination/"
5
+ ---
6
+
7
+ # unknown-destination
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ A link or outline item of a new document targets `LinkTarget::Named(name)`, but `Builder::destination` never defined that name.
15
+
16
+ ## Why
17
+
18
+ A named destination is looked up in the document's `/Names /Dests` tree (ISO 32000-2 §12.3.2.4); a name that isn't there goes nowhere in every viewer.
19
+
20
+ ## How to fix
21
+
22
+ Define the name with `Builder::destination(name, page_index, fit)` before `Builder::finish`, or link to the page directly with `LinkTarget::Page`.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ surface.link(rect, LinkTarget::Named("appendix".into()), None);
28
+ builder.finish()?; // unknown-destination: call builder.destination("appendix", …) first
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `name`: the name as given (untrusted: caller text, never in the message).
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "unknown-font"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/unknown-font/"
5
+ ---
6
+
7
+ # unknown-font
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ A `FontKey` was used with a `FontRegistry` that did not hand it out.
15
+
16
+ ## Why
17
+
18
+ Keys are indices into one registry; each document has its own.
19
+
20
+ ## How to fix
21
+
22
+ Use the key returned by this registry's `add`.
23
+
24
+ ## Example
25
+
26
+ ```rust
27
+ let key = registry_a.add(font, EmbedPolicy::Respect)?;
28
+ registry_b.encode(key, "Hi")?; // unknown-font: key came from registry_a
29
+ ```
30
+
31
+ ## Data fields
32
+
33
+ - `key`: the key's index.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "unknown-option"
3
+ version: "0.2.0-alpha.3"
4
+ url: "https://docs.laminapdf.com/reference/codes/unknown-option/"
5
+ ---
6
+
7
+ # unknown-option
8
+
9
+ - Type: error
10
+ - Kind: `usage` (the caller misused the API)
11
+
12
+ ## What happened
13
+
14
+ An options record passed to `@laminapdf/wasm` (`OpenOptionsInit`, `SaveOptionsInit`, `BuildOptionsInit`, …) has a key Lamina PDF doesn't know.
15
+
16
+ ## Why
17
+
18
+ Records refuse unknown keys instead of ignoring them, so a misspelt option fails loudly rather than silently doing nothing.
19
+
20
+ ## How to fix
21
+
22
+ Remove the key or correct its spelling. `didYouMean` lists the known keys within two edits of it.
23
+
24
+ ## Example
25
+
26
+ ```js
27
+ WasmDocument.openBytes(bytes, { pasword: "secret" }); // throws { code: "unknown-option", didYouMean: ["password"], … }
28
+ ```
29
+
30
+ ## Data fields
31
+
32
+ - `argument`: the parameter whose record had the key (`options`, `metadata`, …).
33
+ - `option`: the key given (untrusted: caller text, never in the message).