@laminapdf/sdk 0.2.0-alpha.2 → 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 (401) hide show
  1. package/README.md +42 -7
  2. package/dist/api.d.ts +5 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +3 -2
  5. package/dist/api.js.map +1 -1
  6. package/dist/builder.d.ts +35 -19
  7. package/dist/builder.d.ts.map +1 -1
  8. package/dist/builder.js +114 -80
  9. package/dist/builder.js.map +1 -1
  10. package/dist/document.d.ts +47 -21
  11. package/dist/document.d.ts.map +1 -1
  12. package/dist/document.js +112 -67
  13. package/dist/document.js.map +1 -1
  14. package/dist/errors.d.ts +5 -5
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +10 -16
  17. package/dist/errors.js.map +1 -1
  18. package/dist/extract.d.ts +57 -0
  19. package/dist/extract.d.ts.map +1 -0
  20. package/dist/extract.js +5 -0
  21. package/dist/extract.js.map +1 -0
  22. package/dist/font.d.ts +13 -6
  23. package/dist/font.d.ts.map +1 -1
  24. package/dist/font.js +50 -20
  25. package/dist/font.js.map +1 -1
  26. package/dist/generated/codes.d.ts +18 -6
  27. package/dist/generated/codes.d.ts.map +1 -1
  28. package/dist/generated/codes.js +59 -4
  29. package/dist/generated/codes.js.map +1 -1
  30. package/dist/generated/explain.d.ts.map +1 -1
  31. package/dist/generated/explain.js +27 -10
  32. package/dist/generated/explain.js.map +1 -1
  33. package/dist/generated/extract.d.ts +235 -0
  34. package/dist/generated/extract.d.ts.map +1 -0
  35. package/dist/generated/extract.js +4 -0
  36. package/dist/generated/extract.js.map +1 -0
  37. package/dist/init.d.ts +13 -5
  38. package/dist/init.d.ts.map +1 -1
  39. package/dist/init.js +23 -11
  40. package/dist/init.js.map +1 -1
  41. package/dist/internal/handle.d.ts +58 -0
  42. package/dist/internal/handle.d.ts.map +1 -0
  43. package/dist/internal/handle.js +113 -0
  44. package/dist/internal/handle.js.map +1 -0
  45. package/dist/internal/instance.d.ts +56 -0
  46. package/dist/internal/instance.d.ts.map +1 -0
  47. package/dist/internal/instance.js +125 -0
  48. package/dist/internal/instance.js.map +1 -0
  49. package/dist/source/http.js +1 -1
  50. package/dist/source/http.js.map +1 -1
  51. package/dist/source/range.d.ts +6 -1
  52. package/dist/source/range.d.ts.map +1 -1
  53. package/dist/source/range.js +10 -6
  54. package/dist/source/range.js.map +1 -1
  55. package/dist/text.d.ts +3 -3
  56. package/dist/text.d.ts.map +1 -1
  57. package/dist/text.js +3 -3
  58. package/dist/text.js.map +1 -1
  59. package/dist/version.d.ts +1 -1
  60. package/dist/version.js +2 -2
  61. package/dist/version.js.map +1 -1
  62. package/dist/worker/client.d.ts +3 -2
  63. package/dist/worker/client.d.ts.map +1 -1
  64. package/dist/worker/client.js +6 -4
  65. package/dist/worker/client.js.map +1 -1
  66. package/dist/worker/entry.js +1 -1
  67. package/dist/worker/entry.js.map +1 -1
  68. package/dist/worker/server.d.ts.map +1 -1
  69. package/dist/worker/server.js +42 -9
  70. package/dist/worker/server.js.map +1 -1
  71. package/dist/worker/support.d.ts +6 -2
  72. package/dist/worker/support.d.ts.map +1 -1
  73. package/dist/worker/support.js +1 -0
  74. package/dist/worker/support.js.map +1 -1
  75. package/dist/worker/types.d.ts +8 -1
  76. package/dist/worker/types.d.ts.map +1 -1
  77. package/docs/AGENTS.md +14 -0
  78. package/docs/api/README.md +147 -0
  79. package/docs/api/classes/Builder.md +467 -0
  80. package/docs/api/classes/Document.md +742 -0
  81. package/docs/api/classes/Font.md +74 -0
  82. package/docs/api/classes/Image.md +140 -0
  83. package/docs/api/classes/LaminaPdfError.md +189 -0
  84. package/docs/api/classes/Page.md +178 -0
  85. package/docs/api/classes/PageRef.md +253 -0
  86. package/docs/api/classes/PageText.md +129 -0
  87. package/docs/api/classes/PageTextRun.md +167 -0
  88. package/docs/api/classes/PendingPath.md +97 -0
  89. package/docs/api/classes/SaveJob.md +205 -0
  90. package/docs/api/classes/Surface.md +326 -0
  91. package/docs/api/classes/Transaction.md +111 -0
  92. package/docs/api/functions/callbackSource.md +33 -0
  93. package/docs/api/functions/httpRangeSource.md +48 -0
  94. package/docs/api/functions/init.md +36 -0
  95. package/docs/api/functions/isExtractLoaded.md +21 -0
  96. package/docs/api/functions/isInitialized.md +19 -0
  97. package/docs/api/functions/isLaminaPdfError.md +41 -0
  98. package/docs/api/functions/isTextLoaded.md +19 -0
  99. package/docs/api/functions/loadExtract.md +28 -0
  100. package/docs/api/functions/loadText.md +28 -0
  101. package/docs/api/functions/onLeak.md +29 -0
  102. package/docs/api/functions/reset.md +22 -0
  103. package/docs/api/functions/wasmMemory.md +22 -0
  104. package/docs/api/interfaces/BuilderOptions.md +108 -0
  105. package/docs/api/interfaces/ByteRange.md +29 -0
  106. package/docs/api/interfaces/ChunkOptions.md +37 -0
  107. package/docs/api/interfaces/Diagnostic.md +67 -0
  108. package/docs/api/interfaces/ExtractOptions.md +92 -0
  109. package/docs/api/interfaces/ExtractResult.md +37 -0
  110. package/docs/api/interfaces/FontInfo.md +37 -0
  111. package/docs/api/interfaces/HttpRangeOptions.md +78 -0
  112. package/docs/api/interfaces/InitOptions.md +40 -0
  113. package/docs/api/interfaces/Leak.md +21 -0
  114. package/docs/api/interfaces/Location.md +53 -0
  115. package/docs/api/interfaces/OpLog.md +25 -0
  116. package/docs/api/interfaces/OpenOptions.md +37 -0
  117. package/docs/api/interfaces/PageTextOptions.md +21 -0
  118. package/docs/api/interfaces/PathBuilder.md +195 -0
  119. package/docs/api/interfaces/QuadPoint.md +25 -0
  120. package/docs/api/interfaces/RangeOptions.md +54 -0
  121. package/docs/api/interfaces/RangeSource.md +59 -0
  122. package/docs/api/interfaces/StrokeStyle.md +61 -0
  123. package/docs/api/interfaces/TagSpec.md +69 -0
  124. package/docs/api/interfaces/TextBoxOptions.md +93 -0
  125. package/docs/api/interfaces/TextGlyph.md +29 -0
  126. package/docs/api/interfaces/TextOptions.md +101 -0
  127. package/docs/api/interfaces/WasmMemory.md +37 -0
  128. package/docs/api/type-aliases/AfRelationship.md +15 -0
  129. package/docs/api/type-aliases/Align.md +15 -0
  130. package/docs/api/type-aliases/ArtifactKind.md +15 -0
  131. package/docs/api/type-aliases/AttachmentOptions.md +15 -0
  132. package/docs/api/type-aliases/BlendMode.md +15 -0
  133. package/docs/api/type-aliases/BoxRect.md +15 -0
  134. package/docs/api/type-aliases/BuildOptions.md +15 -0
  135. package/docs/api/type-aliases/Cell.md +71 -0
  136. package/docs/api/type-aliases/Chunk.md +79 -0
  137. package/docs/api/type-aliases/Color.md +16 -0
  138. package/docs/api/type-aliases/Coordinates.md +55 -0
  139. package/docs/api/type-aliases/Direction.md +15 -0
  140. package/docs/api/type-aliases/DocumentInfo.md +15 -0
  141. package/docs/api/type-aliases/DropReason.md +15 -0
  142. package/docs/api/type-aliases/Dropped.md +59 -0
  143. package/docs/api/type-aliases/Edited.md +15 -0
  144. package/docs/api/type-aliases/ErrorCode.md +15 -0
  145. package/docs/api/type-aliases/ErrorKind.md +15 -0
  146. package/docs/api/type-aliases/ExtractFormat.md +15 -0
  147. package/docs/api/type-aliases/ExtractedBlock.md +82 -0
  148. package/docs/api/type-aliases/ExtractedPage.md +65 -0
  149. package/docs/api/type-aliases/ExtractedSource.md +48 -0
  150. package/docs/api/type-aliases/Extraction.md +22 -0
  151. package/docs/api/type-aliases/FillRule.md +15 -0
  152. package/docs/api/type-aliases/Fit.md +15 -0
  153. package/docs/api/type-aliases/Flags.md +15 -0
  154. package/docs/api/type-aliases/Generator.md +41 -0
  155. package/docs/api/type-aliases/GlyphQuad.md +15 -0
  156. package/docs/api/type-aliases/InfoPatch.md +15 -0
  157. package/docs/api/type-aliases/LaminaPdfWarning.md +16 -0
  158. package/docs/api/type-aliases/LimitName.md +15 -0
  159. package/docs/api/type-aliases/Limits.md +15 -0
  160. package/docs/api/type-aliases/LineBox.md +15 -0
  161. package/docs/api/type-aliases/LineCap.md +15 -0
  162. package/docs/api/type-aliases/LineJoin.md +15 -0
  163. package/docs/api/type-aliases/LinkTarget.md +15 -0
  164. package/docs/api/type-aliases/Metadata.md +15 -0
  165. package/docs/api/type-aliases/Op.md +15 -0
  166. package/docs/api/type-aliases/OutlineEntry.md +15 -0
  167. package/docs/api/type-aliases/Overflow.md +15 -0
  168. package/docs/api/type-aliases/PageInfo.md +15 -0
  169. package/docs/api/type-aliases/PageLabel.md +15 -0
  170. package/docs/api/type-aliases/PageSizeName.md +15 -0
  171. package/docs/api/type-aliases/Point.md +15 -0
  172. package/docs/api/type-aliases/Profile.md +15 -0
  173. package/docs/api/type-aliases/Progress.md +15 -0
  174. package/docs/api/type-aliases/ReadingOrder.md +15 -0
  175. package/docs/api/type-aliases/Rect.md +15 -0
  176. package/docs/api/type-aliases/Region.md +31 -0
  177. package/docs/api/type-aliases/RenderMode.md +15 -0
  178. package/docs/api/type-aliases/Rotation.md +15 -0
  179. package/docs/api/type-aliases/SaveOptions.md +15 -0
  180. package/docs/api/type-aliases/SaveReport.md +15 -0
  181. package/docs/api/type-aliases/Span.md +63 -0
  182. package/docs/api/type-aliases/SplitOn.md +15 -0
  183. package/docs/api/type-aliases/Standard14.md +15 -0
  184. package/docs/api/type-aliases/StructRef.md +41 -0
  185. package/docs/api/type-aliases/StructSource.md +17 -0
  186. package/docs/api/type-aliases/TableDetector.md +15 -0
  187. package/docs/api/type-aliases/TableMode.md +15 -0
  188. package/docs/api/type-aliases/TableScope.md +15 -0
  189. package/docs/api/type-aliases/Tag.md +15 -0
  190. package/docs/api/type-aliases/TagName.md +15 -0
  191. package/docs/api/type-aliases/TextLayout.md +15 -0
  192. package/docs/api/type-aliases/TextRange.md +33 -0
  193. package/docs/api/type-aliases/TextRunInfo.md +15 -0
  194. package/docs/api/type-aliases/Transform.md +15 -0
  195. package/docs/api/type-aliases/UndoOutcome.md +15 -0
  196. package/docs/api/type-aliases/ViewerPreferences.md +15 -0
  197. package/docs/api/type-aliases/WarningCode.md +15 -0
  198. package/docs/api/type-aliases/WasmSource.md +16 -0
  199. package/docs/api/variables/Matrix.md +99 -0
  200. package/docs/api/variables/PAGE_SIZES.md +15 -0
  201. package/docs/api/variables/TAG_NAMES.md +15 -0
  202. package/docs/errors/README.md +156 -0
  203. package/docs/errors/aes-padding-invalid.md +34 -0
  204. package/docs/errors/already-initialized.md +34 -0
  205. package/docs/errors/binary-output-to-terminal.md +35 -0
  206. package/docs/errors/builder-finished.md +35 -0
  207. package/docs/errors/cancelled.md +35 -0
  208. package/docs/errors/cmap-invalid.md +42 -0
  209. package/docs/errors/collection-index.md +33 -0
  210. package/docs/errors/color-components.md +33 -0
  211. package/docs/errors/content-bad-operands.md +36 -0
  212. package/docs/errors/content-path-unpainted.md +36 -0
  213. package/docs/errors/content-resource-missing.md +37 -0
  214. package/docs/errors/content-syntax.md +36 -0
  215. package/docs/errors/content-unbalanced-bt.md +36 -0
  216. package/docs/errors/content-unbalanced-marked.md +36 -0
  217. package/docs/errors/content-unbalanced-q.md +36 -0
  218. package/docs/errors/content-unknown-operator.md +37 -0
  219. package/docs/errors/data-pending.md +34 -0
  220. package/docs/errors/decompress.md +34 -0
  221. package/docs/errors/device-color-without-output-intent.md +33 -0
  222. package/docs/errors/direct-page.md +34 -0
  223. package/docs/errors/disposed.md +34 -0
  224. package/docs/errors/document-changed.md +34 -0
  225. package/docs/errors/embedded-file-forbidden.md +35 -0
  226. package/docs/errors/embedded-file-without-mime-type.md +36 -0
  227. package/docs/errors/encoding-full.md +34 -0
  228. package/docs/errors/encrypted-base.md +33 -0
  229. package/docs/errors/extract-limit-blocks.md +35 -0
  230. package/docs/errors/extract-module-not-loaded.md +37 -0
  231. package/docs/errors/extract-reading-order-ambiguous.md +32 -0
  232. package/docs/errors/extract-struct-tree-ignored.md +32 -0
  233. package/docs/errors/extract-table-ambiguous.md +32 -0
  234. package/docs/errors/extract-table-limit.md +35 -0
  235. package/docs/errors/extract-untagged-content.md +32 -0
  236. package/docs/errors/fetch-failed.md +34 -0
  237. package/docs/errors/flate-truncated.md +34 -0
  238. package/docs/errors/font-invalid.md +36 -0
  239. package/docs/errors/font-mismatch.md +34 -0
  240. package/docs/errors/font-not-embeddable.md +34 -0
  241. package/docs/errors/font-not-embedded.md +35 -0
  242. package/docs/errors/font-not-shapable.md +33 -0
  243. package/docs/errors/glyph-out-of-range.md +34 -0
  244. package/docs/errors/glyph-without-unicode.md +35 -0
  245. package/docs/errors/heading-level-skipped.md +36 -0
  246. package/docs/errors/image-data-length.md +33 -0
  247. package/docs/errors/image-too-large.md +32 -0
  248. package/docs/errors/inline-image-unterminated.md +36 -0
  249. package/docs/errors/input-unreadable.md +37 -0
  250. package/docs/errors/instance-reset.md +34 -0
  251. package/docs/errors/invalid-argument.md +33 -0
  252. package/docs/errors/invalid-axis-value.md +32 -0
  253. package/docs/errors/invalid-box.md +34 -0
  254. package/docs/errors/invalid-color.md +32 -0
  255. package/docs/errors/invalid-command-line.md +44 -0
  256. package/docs/errors/invalid-date.md +34 -0
  257. package/docs/errors/invalid-entry.md +34 -0
  258. package/docs/errors/invalid-feature.md +32 -0
  259. package/docs/errors/invalid-font.md +32 -0
  260. package/docs/errors/invalid-geometry.md +32 -0
  261. package/docs/errors/invalid-icc-profile.md +32 -0
  262. package/docs/errors/invalid-image.md +33 -0
  263. package/docs/errors/invalid-op-log.md +33 -0
  264. package/docs/errors/invalid-page-label.md +34 -0
  265. package/docs/errors/invalid-page-labels.md +32 -0
  266. package/docs/errors/invalid-page-range.md +37 -0
  267. package/docs/errors/invalid-rotate.md +34 -0
  268. package/docs/errors/invalid-structure-nesting.md +38 -0
  269. package/docs/errors/invalid-structure.md +34 -0
  270. package/docs/errors/invalid-text-range.md +33 -0
  271. package/docs/errors/job-finished.md +34 -0
  272. package/docs/errors/limit-exceeded.md +38 -0
  273. package/docs/errors/link-without-contents.md +33 -0
  274. package/docs/errors/link-without-structure.md +37 -0
  275. package/docs/errors/missing-alt-text.md +33 -0
  276. package/docs/errors/missing-glyph.md +33 -0
  277. package/docs/errors/missing-header.md +37 -0
  278. package/docs/errors/missing-lang.md +32 -0
  279. package/docs/errors/missing-root.md +34 -0
  280. package/docs/errors/missing-title.md +32 -0
  281. package/docs/errors/name-tree-node-skipped.md +34 -0
  282. package/docs/errors/nested-transaction.md +34 -0
  283. package/docs/errors/no-pending-save.md +32 -0
  284. package/docs/errors/no-transaction.md +33 -0
  285. package/docs/errors/not-initialized.md +35 -0
  286. package/docs/errors/not-pdf.md +33 -0
  287. package/docs/errors/not-rebased.md +35 -0
  288. package/docs/errors/object-number-out-of-range.md +38 -0
  289. package/docs/errors/objstm-index-mismatch.md +36 -0
  290. package/docs/errors/out-of-memory.md +38 -0
  291. package/docs/errors/outline-cycle.md +34 -0
  292. package/docs/errors/outline-item-skipped.md +34 -0
  293. package/docs/errors/output-unwritable.md +37 -0
  294. package/docs/errors/overwrite-refused.md +36 -0
  295. package/docs/errors/page-count-mismatch.md +34 -0
  296. package/docs/errors/page-index-out-of-range.md +34 -0
  297. package/docs/errors/page-tree-node-skipped.md +35 -0
  298. package/docs/errors/password-required.md +36 -0
  299. package/docs/errors/path-outside-roots.md +32 -0
  300. package/docs/errors/perms-mismatch.md +34 -0
  301. package/docs/errors/profile-version-conflict.md +35 -0
  302. package/docs/errors/reference-cycle.md +35 -0
  303. package/docs/errors/render-backend-unavailable.md +32 -0
  304. package/docs/errors/render-failed.md +33 -0
  305. package/docs/errors/render-too-large.md +36 -0
  306. package/docs/errors/repaired-base.md +34 -0
  307. package/docs/errors/requires-rewrite.md +38 -0
  308. package/docs/errors/saved-not-rebased.md +34 -0
  309. package/docs/errors/sink-not-empty.md +33 -0
  310. package/docs/errors/sink.md +31 -0
  311. package/docs/errors/source-budget-exceeded.md +34 -0
  312. package/docs/errors/source-changed.md +33 -0
  313. package/docs/errors/source.md +30 -0
  314. package/docs/errors/stale-generation.md +34 -0
  315. package/docs/errors/stream-length-recovered.md +37 -0
  316. package/docs/errors/strict.md +34 -0
  317. package/docs/errors/subset-failed.md +31 -0
  318. package/docs/errors/syntax.md +34 -0
  319. package/docs/errors/text-module-not-loaded.md +36 -0
  320. package/docs/errors/text-overflow.md +34 -0
  321. package/docs/errors/tounicode-conflict.md +32 -0
  322. package/docs/errors/type.md +34 -0
  323. package/docs/errors/unexpected-eof.md +34 -0
  324. package/docs/errors/unknown-axis.md +33 -0
  325. package/docs/errors/unknown-code.md +36 -0
  326. package/docs/errors/unknown-destination.md +33 -0
  327. package/docs/errors/unknown-font.md +33 -0
  328. package/docs/errors/unknown-option.md +33 -0
  329. package/docs/errors/unknown-page.md +34 -0
  330. package/docs/errors/unmapped-glyph.md +36 -0
  331. package/docs/errors/unnumbered-heading-misused.md +34 -0
  332. package/docs/errors/unset-object.md +30 -0
  333. package/docs/errors/unsupported-filter.md +34 -0
  334. package/docs/errors/unsupported-image.md +33 -0
  335. package/docs/errors/unsupported-layout-option.md +33 -0
  336. package/docs/errors/unsupported-security-handler.md +34 -0
  337. package/docs/errors/unsupported-version.md +32 -0
  338. package/docs/errors/untagged-content.md +35 -0
  339. package/docs/errors/warnings-truncated.md +35 -0
  340. package/docs/errors/wasm-trap.md +37 -0
  341. package/docs/errors/whole-font-rebuilt.md +30 -0
  342. package/docs/errors/worker-crashed.md +33 -0
  343. package/docs/errors/worker-failed.md +32 -0
  344. package/docs/errors/worker-version-mismatch.md +34 -0
  345. package/docs/errors/would-invalidate-signatures.md +38 -0
  346. package/docs/errors/wrong-document.md +33 -0
  347. package/docs/errors/wrong-password.md +34 -0
  348. package/docs/errors/xobject-cycle.md +36 -0
  349. package/docs/errors/xref-repaired.md +36 -0
  350. package/docs/errors/xrefstm-ignored.md +34 -0
  351. package/docs/llms.txt +88 -0
  352. package/docs/pages/concepts/dependencies.md +44 -0
  353. package/docs/pages/concepts/errors-and-warnings.md +64 -0
  354. package/docs/pages/concepts/how-lamina-thinks.md +86 -0
  355. package/docs/pages/concepts/pages-and-coordinates.md +67 -0
  356. package/docs/pages/guides/accessible-pdfs.md +260 -0
  357. package/docs/pages/guides/archival-pdfs.md +429 -0
  358. package/docs/pages/guides/edit-a-pdf.md +137 -0
  359. package/docs/pages/guides/fonts-and-text.md +202 -0
  360. package/docs/pages/guides/images-and-vectors.md +219 -0
  361. package/docs/pages/guides/keep-the-page-responsive.md +81 -0
  362. package/docs/pages/guides/links-outlines-and-metadata.md +222 -0
  363. package/docs/pages/guides/password-protected-files.md +70 -0
  364. package/docs/pages/guides/save-a-pdf.md +144 -0
  365. package/docs/pages/guides/untrusted-files.md +80 -0
  366. package/docs/pages/index.md +33 -0
  367. package/docs/pages/install.md +75 -0
  368. package/docs/pages/quick-start/browser.md +67 -0
  369. package/docs/pages/quick-start/bun.md +60 -0
  370. package/docs/pages/quick-start/deno.md +58 -0
  371. package/docs/pages/quick-start/node.md +61 -0
  372. package/docs/pages/quick-start/rust.md +58 -0
  373. package/docs/pages/quick-start/workers.md +139 -0
  374. package/docs/pages/recipes/cloudflare-worker.md +115 -0
  375. package/docs/pages/recipes/extract-markdown.md +114 -0
  376. package/docs/pages/recipes/generate-then-edit.md +135 -0
  377. package/docs/pages/recipes/hello.md +94 -0
  378. package/docs/pages/recipes/images-and-vectors.md +209 -0
  379. package/docs/pages/recipes/invoice.md +226 -0
  380. package/docs/pages/recipes/links-and-outlines.md +215 -0
  381. package/docs/pages/recipes/multilingual.md +189 -0
  382. package/docs/pages/recipes/open-untrusted.md +65 -0
  383. package/docs/pages/recipes/pdf-a-archive.md +205 -0
  384. package/docs/pages/recipes/pdf-a3-invoice-with-xml.md +222 -0
  385. package/docs/pages/recipes/pdf-ua-report.md +237 -0
  386. package/docs/pages/recipes/report.md +125 -0
  387. package/docs/pages/recipes/web-worker-client.md +64 -0
  388. package/docs/pages/recipes.md +47 -0
  389. package/docs/pages/reference/changelog.md +86 -0
  390. package/docs/pages/reference/codes.md +14 -0
  391. package/docs/pages/reference/glossary.md +108 -0
  392. package/docs/pages/reference/rust.md +36 -0
  393. package/docs/pages/reference/stability.md +59 -0
  394. package/docs/pages/start/coding-agents.md +45 -0
  395. package/docs/pages/start/first-pdf.md +77 -0
  396. package/docs/pages/troubleshooting.md +74 -0
  397. package/docs/renames.json +86 -0
  398. package/docs/schemas/error.schema.json +305 -0
  399. package/docs/schemas/renames.schema.json +29 -0
  400. package/package.json +5 -3
  401. package/schemas/error.schema.json +19 -2
@@ -0,0 +1,108 @@
1
+ ---
2
+ title: "Glossary"
3
+ description: "The PDF and Lamina PDF terms the docs use, each in a sentence or two."
4
+ version: "0.2.0-alpha.3"
5
+ url: "https://docs.laminapdf.com/reference/glossary/"
6
+ ---
7
+
8
+ # Glossary
9
+
10
+ The PDF and Lamina PDF terms the docs use, each in a sentence or two.
11
+
12
+ The terms the docs use, in plain words. Each page links a term here the first time it uses one.
13
+
14
+ ## How Lamina PDF works
15
+
16
+ ### Overlay
17
+
18
+ Where Lamina PDF keeps your edits. The bytes you opened never change; the overlay sits on top of them, and saving writes it out. See [how Lamina PDF thinks about a PDF](../../pages/concepts/how-lamina-thinks.md).
19
+
20
+ ### Incremental save
21
+
22
+ A save that keeps the original bytes as they are and appends a new revision with your edits after them. Signatures over the original stay valid.
23
+
24
+ ### Full rewrite
25
+
26
+ A save that writes the whole file again. The result is smaller and tidier, but it's no longer the original bytes, so it breaks any signature.
27
+
28
+ ### Façade
29
+
30
+ The `laminapdf` crate: one API in front of Lamina PDF's core crates, which most Rust code depends on alone.
31
+
32
+ ### Glue
33
+
34
+ The JavaScript that sits next to each `.wasm` file. It loads the module and converts values between JavaScript and Rust.
35
+
36
+ ### Export condition
37
+
38
+ A key in a package's `exports` map, such as `node`, `browser`, `deno` or `workerd`, that tells a runtime or bundler which file to load. `@laminapdf/sdk` has one per runtime.
39
+
40
+ ## Inside a PDF file
41
+
42
+ ### COS
43
+
44
+ PDF's object layer: the dictionaries, arrays, numbers, strings, names, streams and references a file is made of.
45
+
46
+ ### Content stream
47
+
48
+ A stream of drawing instructions for a page: where to put text, which lines and shapes to draw, which images to place.
49
+
50
+ ### XObject
51
+
52
+ A reusable piece of content that a content stream draws by name: an image, or a form, which is a group of drawing instructions.
53
+
54
+ ### Cross-reference table
55
+
56
+ The index at the end of a file that gives the byte offset of every object, so a reader can jump straight to one. Newer files store it as a compressed stream instead.
57
+
58
+ ### Xref
59
+
60
+ Short for [cross-reference table](#cross-reference-table).
61
+
62
+ ### Object stream
63
+
64
+ A compressed stream that holds many small objects together, to make the file smaller. Files from PDF 1.5 on can use them.
65
+
66
+ ### Page space
67
+
68
+ Lamina PDF's coordinates: points from the top-left corner of the page as it's displayed, with y going down. See [pages and coordinates](../../pages/concepts/pages-and-coordinates.md).
69
+
70
+ ### Crop box
71
+
72
+ The part of a page a viewer shows; anything outside it is cut off. Page space starts at its top-left corner.
73
+
74
+ ### User unit
75
+
76
+ A page entry that makes each user-space unit bigger than 1/72 of an inch, for very large pages. Lamina PDF applies it, so page-space numbers are always points of 1/72 inch.
77
+
78
+ ### User space
79
+
80
+ PDF's own coordinates: points from the bottom-left corner of the page, with y going up, before any rotation. Lamina PDF's API uses page space instead; see [pages and coordinates](../../pages/concepts/pages-and-coordinates.md).
81
+
82
+ ## Fonts and text
83
+
84
+ ### Standard 14 fonts
85
+
86
+ The fourteen fonts every PDF reader supplies: Times, Helvetica and Courier, each in four styles, plus Symbol and ZapfDingbats. A PDF can use them without embedding them.
87
+
88
+ ### Type 0
89
+
90
+ A font type whose character codes can be more than one byte long, so a font can reach any of its glyphs. Lamina PDF embeds every font except the standard 14 as Type 0.
91
+
92
+ ### CMap
93
+
94
+ A table that maps a font's character codes to character IDs (CIDs), which pick its glyphs, or, in a ToUnicode CMap, to Unicode text.
95
+
96
+ ### ToUnicode
97
+
98
+ A CMap a font carries that maps its codes to Unicode, so a reader can copy, search and extract the text.
99
+
100
+ ## Signatures
101
+
102
+ ### DocMDP
103
+
104
+ The permissions of a certifying signature: which changes the signed document still allows, such as none, filling in forms, or comments. DocMDP stands for document modification detection and prevention.
105
+
106
+ ### UR3
107
+
108
+ A usage-rights signature, which unlocks features such as saving form data in Adobe Reader. An edit it doesn't allow invalidates it.
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: "Rust API (rustdoc)"
3
+ description: "Where to read the API documentation of the Lamina PDF crates."
4
+ version: "0.2.0-alpha.3"
5
+ url: "https://docs.laminapdf.com/reference/rust/"
6
+ ---
7
+
8
+ # Rust API (rustdoc)
9
+
10
+ Where to read the API documentation of the Lamina PDF crates.
11
+
12
+ docs.rs builds the API documentation of every Lamina PDF crate on crates.io. Start with [`laminapdf` on docs.rs](https://docs.rs/laminapdf/0.2.0-alpha.3/laminapdf/), the crate to depend on. It wraps the core crates and holds `Document`, `Builder`, `Error`, `Warning`, jobs and `CancelToken`.
13
+
14
+ The other crates are documented the same way:
15
+
16
+ - [`laminapdf-syntax`](https://docs.rs/laminapdf-syntax/0.2.0-alpha.3/laminapdf_syntax/)
17
+ - [`laminapdf-cos`](https://docs.rs/laminapdf-cos/0.2.0-alpha.3/laminapdf_cos/)
18
+ - [`laminapdf-model`](https://docs.rs/laminapdf-model/0.2.0-alpha.3/laminapdf_model/)
19
+ - [`laminapdf-ops`](https://docs.rs/laminapdf-ops/0.2.0-alpha.3/laminapdf_ops/)
20
+ - [`laminapdf-save`](https://docs.rs/laminapdf-save/0.2.0-alpha.3/laminapdf_save/)
21
+ - [`laminapdf-content`](https://docs.rs/laminapdf-content/0.2.0-alpha.3/laminapdf_content/)
22
+ - [`laminapdf-text`](https://docs.rs/laminapdf-text/0.2.0-alpha.3/laminapdf_text/)
23
+ - [`laminapdf-build`](https://docs.rs/laminapdf-build/0.2.0-alpha.3/laminapdf_build/)
24
+ - [`laminapdf-render-pdfium`](https://docs.rs/laminapdf-render-pdfium/0.2.0-alpha.3/laminapdf_render_pdfium/)
25
+
26
+ docs.rs couldn't build `laminapdf-source` and `laminapdf-render` at 0.2.0-alpha.2, so their docs come with the next release; until then, build them yourself as below. [Install](../../pages/install.md#every-published-package) lists every crate, with its page on crates.io.
27
+
28
+ ## Build the docs yourself
29
+
30
+ To read the docs of a change before it's released, build them from a checkout of Lamina PDF:
31
+
32
+ ```sh
33
+ cargo doc --workspace --no-deps --all-features --open
34
+ ```
35
+
36
+ The command opens the docs in your browser. Every public item of every crate is documented.
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: "Stability policy"
3
+ description: "What a Lamina PDF version number promises, and what stays the same in every version."
4
+ version: "0.2.0-alpha.3"
5
+ url: "https://docs.laminapdf.com/reference/stability/"
6
+ ---
7
+
8
+ # Stability policy
9
+
10
+ What a Lamina PDF version number promises, and what stays the same in every version.
11
+
12
+ Lamina PDF is in alpha, so its API can still change from one release to the next. A few things never change, whatever the version: error and warning codes, the error object's fields, saved edit logs, and identical output from every runtime. This page says what each version number promises, so you know when an upgrade needs a code change.
13
+
14
+ ## One version for every package
15
+
16
+ Every crate and every npm package shares one version, and they are released together, from `laminapdf` and its crates to `@laminapdf/sdk` and the viewer. So `@laminapdf/sdk` at a version always runs the Rust code of `laminapdf` at the same version. [Install](../../pages/install.md#every-published-package) lists every package.
17
+
18
+ ## What a version number tells you
19
+
20
+ - **Alphas promise nothing to each other.** Anything can change between `0.2.0-alpha.1` and `0.2.0-alpha.2`. While you try an alpha, pin the exact version: `npm install --save-exact @laminapdf/sdk@0.2.0-alpha.3`, and `laminapdf = "=0.2.0-alpha.3"` in `Cargo.toml`.
21
+ - **The `alpha` tag names the newest alpha.** `npm install @laminapdf/sdk@alpha` gets it. A plain `npm install @laminapdf/sdk` gets a `0.0.0` placeholder that only reserves the name.
22
+ - **After the alphas, `0.x` versions follow SemVer as Cargo reads it.** A breaking change raises the minor version (`0.2` to `0.3`), and features and fixes raise the patch (`0.2.0` to `0.2.1`). So an upgrade within one `0.x` line never needs a code change.
23
+
24
+ ## What counts as a breaking change
25
+
26
+ A change breaks your code when it does one of these:
27
+
28
+ - removes or renames a public Rust item or an export of `@laminapdf/sdk`
29
+ - changes one so that code using it stops compiling or behaves differently from its documentation
30
+ - raises the minimum Rust version, the minimum Node version or the Cloudflare Workers `compatibility_date`
31
+ - adds an error kind, since code that matches on the nine kinds has to handle the new one
32
+ - changes the bytes written for the same input and options
33
+
34
+ Everything else keeps your code working: new functions, types, options and fields; new error and warning codes; documentation; speed; and fixes that make output follow the PDF standard where it didn't. The changelog lists those fixes.
35
+
36
+ ## What never changes
37
+
38
+ Four promises hold across every version, `0.x` and alphas included:
39
+
40
+ - **Error and warning codes are never renamed or reused** for another meaning. A retired code stays in the [code reference](../../errors/README.md) with the version that retired it, and keeps its page. New codes can appear in any release, so handle a code you don't know.
41
+ - **The error object only grows.** Each error names its schema, `laminapdf.error/1`. Within one schema, a field can be added, but never removed or given another type.
42
+ - **Saved edit logs keep loading.** A log names its format version (`{ v: 1, ops }`, as [Edit a PDF](../../pages/guides/edit-a-pdf.md#replay-edits-stored-as-json) shows). A new op or optional field keeps the version. A changed or removed one raises it, and every older version still loads.
43
+ - **The same input gives the same bytes everywhere.** With the same input, options and version, Rust and every JavaScript runtime write identical files.
44
+
45
+ ## How the promises are checked
46
+
47
+ Lamina PDF compares every change with the newest published release: the Rust crates with [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks), and `@laminapdf/sdk` with a report of its exported types. A change that breaks either one has to raise the minor version, and the changelog lists it first.
48
+
49
+ Each release also installs itself twice and runs the quick start: once from the packages before they're published, and once from npm and crates.io after. Both runs cover Node 22, 24 and 26, Deno, Bun, Chromium, Cloudflare Workers and a Rust program, and every run has to write the same `hello.pdf`, byte for byte.
50
+
51
+ ## What isn't promised yet
52
+
53
+ - The low-level file-structure and model types that `laminapdf` re-exports are public, but they can change in any minor release.
54
+ - Package sizes and speed are measured on every change, not promised.
55
+ - The minimum Rust version is two releases behind the newest stable Rust (1.97 today). Raising it is a minor-version change, and the changelog says so.
56
+
57
+ ## Before you upgrade
58
+
59
+ The [changelog](../../pages/reference/changelog.md) lists every release's changes, breaking ones first. Read the entries between your version and the new one, then move the exact version you pin.
@@ -0,0 +1,45 @@
1
+ ---
2
+ title: "Use Lamina PDF with coding agents"
3
+ description: "Point a coding agent at the docs inside the installed package, so its answers match the version you use."
4
+ version: "0.2.0-alpha.3"
5
+ url: "https://docs.laminapdf.com/start/coding-agents/"
6
+ ---
7
+
8
+ # Use Lamina PDF with coding agents
9
+
10
+ Point a coding agent at the docs inside the installed package, so its answers match the version you use.
11
+
12
+ A coding agent guesses a new library's names from what it saw in training, which may be an older version or none at all. Each package therefore carries its own copy of these docs as Markdown. The copy sits in `node_modules/@laminapdf/sdk/docs/` for TypeScript and in the `laminapdf` crate's `docs/` folder for Rust, and every file names the version it describes.
13
+
14
+ ## Add the snippet to your agent's instructions
15
+
16
+ Copy this snippet into your project's `AGENTS.md`, `CLAUDE.md` or the file your agent reads. It sends the agent to the installed docs first, and it lists the rules where Lamina PDF differs from other PDF libraries:
17
+
18
+ `packages/sdk/examples/AGENTS.md`:
19
+
20
+ ```md
21
+ ## Lamina PDF
22
+
23
+ This project uses Lamina PDF (`@laminapdf/sdk` in TypeScript, the `laminapdf` crate in Rust) to create, read, edit and save PDF files.
24
+
25
+ - **Read the installed docs first.** They match the installed version: `node_modules/@laminapdf/sdk/docs/llms.txt` lists every page, and `docs/api/` holds the API reference. In Rust they are in the `laminapdf` crate's `docs/` folder. Online: https://docs.laminapdf.com/llms.txt (the latest version).
26
+ - **Call `await init()` once before anything else.** After it every call is synchronous. Fonts and text need `await init({ text: true })`; reading text needs the extract or text module (`await init({ extract: true })` or `{ text: true }`). Rust needs no setup.
27
+ - **Positions are points from the top-left corner** of the page as it is displayed, with y going down. A text position is its baseline. Page numbers in the API start at 0 (`page(0)` is the first page).
28
+ - **Branch on an error's `code`, never its message.** Every error is a `LaminaPdfError` with a stable `code` (such as `wrong-password`) and a `hint`; `docs/errors/<code>.md` explains each one. Warnings, which say what Lamina PDF repaired in a damaged file, use the same codes.
29
+ - **Free what you open.** A `Document` or `Builder` holds WebAssembly memory: declare it with `using`, or call `free()` when you are done.
30
+ - **Check `docs/renames.json`** when a name in older code or an older answer doesn't exist: it says what each renamed item is called now.
31
+ ```
32
+
33
+ ## What the package docs hold
34
+
35
+ The folder starts at `llms.txt`, an index in the [llms.txt](https://llmstxt.org/) format whose links stay inside the folder:
36
+
37
+ - `pages/`: every page of this site as Markdown, with the examples written out in full.
38
+ - `errors/`: a page per error and warning code, the same text as the [code pages](../../errors/README.md).
39
+ - `api/`: the TypeScript API reference (npm package only; Rust's is on docs.rs).
40
+ - `renames.json`: what each renamed item is called now, so an agent holding an old name finds the new one.
41
+ - `AGENTS.md`: the snippet above.
42
+
43
+ ## The same docs online
44
+
45
+ This site serves the same Markdown for the latest version. Each page has a twin at its address with `.md` in place of the final slash, such as [`/install.md`](https://docs.laminapdf.com/install.md), and [`/llms.txt`](https://docs.laminapdf.com/llms.txt) lists them all. [`/llms-full.txt`](https://docs.laminapdf.com/llms-full.txt) puts every page in one file for agents that read a whole site at once. Prefer the package copy while you work in a project, because it matches the code the agent calls.
@@ -0,0 +1,77 @@
1
+ ---
2
+ title: "Your first PDF"
3
+ description: "Write hello.pdf from Node in five minutes."
4
+ version: "0.2.0-alpha.3"
5
+ url: "https://docs.laminapdf.com/start/first-pdf/"
6
+ ---
7
+
8
+ # Your first PDF
9
+
10
+ Write hello.pdf from Node in five minutes.
11
+
12
+ You'll write `hello.pdf`, one A4 page that says "Hello, world!", from a short Node script. It takes about five minutes.
13
+
14
+ ## Make a project
15
+
16
+ You need Node 24.2 or newer, which runs `.ts` files directly. Create a folder and install `@laminapdf/sdk` from npm:
17
+
18
+ ```sh
19
+ mkdir hello-pdf && cd hello-pdf
20
+ npm init -y && npm pkg set type=module
21
+ npm install @laminapdf/sdk@0.2.0-alpha.3
22
+ ```
23
+
24
+ Lamina PDF is in alpha, so the install names the version these docs describe. `@laminapdf/sdk` brings its WebAssembly modules, `@laminapdf/wasm`, with it. [Install](../../pages/install.md) covers other package managers and Rust.
25
+
26
+ ## Write the page
27
+
28
+ Save this app as `hello.ts`. It loads Lamina PDF, builds the page and writes it to `hello.pdf`:
29
+
30
+ `packages/sdk/examples/quick-start/node.ts`:
31
+
32
+ ```ts
33
+ // Builds a one-page PDF that says "Hello, world!" and writes it to hello.pdf, in Node.
34
+ import { writeFile } from "node:fs/promises";
35
+ import { Builder, type BuilderOptions, Font, init } from "@laminapdf/sdk";
36
+
37
+ /** The space between the page's edge and the text, in points (72 points = 1 inch). */
38
+ const MARGIN = 72;
39
+ /** The text's size in points; its baseline sits this far below the margin. */
40
+ const FONT_SIZE = 24;
41
+
42
+ /** Builds the page and hands its bytes to `save`, which writes hello.pdf unless you pass another `save` function. */
43
+ export async function hello(
44
+ save: (pdf: Uint8Array) => void | Promise<void> = (pdf) => writeFile("hello.pdf", pdf),
45
+ options: BuilderOptions = {},
46
+ ): Promise<void> {
47
+ await init({ text: true });
48
+ using builder = new Builder(options);
49
+ const page = builder.page("A4");
50
+ // Points from the page's top-left corner, y down; the text's baseline sits FONT_SIZE points below the margin.
51
+ page.surface().text("Hello, world!", {
52
+ font: Font.standard("Helvetica"),
53
+ size: FONT_SIZE,
54
+ at: [MARGIN, MARGIN + FONT_SIZE],
55
+ });
56
+ page.finish();
57
+ using doc = builder.finish();
58
+ await save(doc.save());
59
+ }
60
+
61
+ // `node hello.ts` runs it (Node 24.2 or newer); imported, it only exports `hello`.
62
+ if (import.meta.main) await hello();
63
+ ```
64
+
65
+ ## Run it
66
+
67
+ ```sh
68
+ node hello.ts
69
+ ```
70
+
71
+ Node runs the TypeScript file as it is. Open `hello.pdf` in any PDF viewer: one page, with "Hello, world!" near its top-left corner.
72
+
73
+ ## What happened
74
+
75
+ `init({ text: true })` loaded Lamina PDF's text module, the one that draws fonts; after it, every call is synchronous. The builder made an A4 page, drew the text on it and finished into a document, `doc.save()` turned that document into bytes, and `save` wrote them to `hello.pdf`. `using` freed the builder and the document as soon as the function ended.
76
+
77
+ Next, see [how Lamina PDF thinks about a PDF](../../pages/concepts/how-lamina-thinks.md) and [where things go on a page](../../pages/concepts/pages-and-coordinates.md). To use laminapdf somewhere other than Node, pick [your runtime](../../pages/quick-start/browser.md).
@@ -0,0 +1,74 @@
1
+ ---
2
+ title: "Troubleshooting"
3
+ description: "The problems people hit with Lamina PDF, from a missing init() to a signed file that won't save, with the cause and the fix of each."
4
+ version: "0.2.0-alpha.3"
5
+ url: "https://docs.laminapdf.com/troubleshooting/"
6
+ ---
7
+
8
+ # Troubleshooting
9
+
10
+ The problems people hit with Lamina PDF, from a missing init() to a signed file that won't save, with the cause and the fix of each.
11
+
12
+ Each entry starts from what you see, then gives the cause and the fix. Errors carry a `code`, and every code has a page that says what to do: search the [error and warning codes](../errors/README.md) for one that isn't here.
13
+
14
+ ## Every call throws `not-initialized`
15
+
16
+ **Cause:** a function of `@laminapdf/sdk` ran before `init()` finished loading the WebAssembly.
17
+
18
+ **Fix:** `await init()` once, before anything else. After it, every call is synchronous. See [`not-initialized`](../errors/not-initialized.md).
19
+
20
+ ## Drawing text throws `text-module-not-loaded`
21
+
22
+ **Cause:** the builder lives in the base module, which has no fonts or text. Lamina PDF loads only the modules you ask for, so a page downloads only what it uses.
23
+
24
+ **Fix:** load the text module before you create the builder: `init({ text: true })`, or `loadText()` after `init()`. See [`text-module-not-loaded`](../errors/text-module-not-loaded.md) and [Text and fonts](../pages/guides/fonts-and-text.md).
25
+
26
+ ## Reading text throws `extract-module-not-loaded`
27
+
28
+ **Cause:** the document was opened in the base module, which can't extract text.
29
+
30
+ **Fix:** load the extract module, with `init({ extract: true })` or `loadExtract()`, or the text module, before you open the document. A Cloudflare Worker can't fetch it, so import it and pass it: `import extract from "@laminapdf/wasm/lamina_pdf_extract.wasm"`, then `await loadExtract(extract)`. See [`extract-module-not-loaded`](../errors/extract-module-not-loaded.md).
31
+
32
+ ## The browser blocks the WebAssembly
33
+
34
+ **Cause:** the page's Content Security Policy doesn't allow compiling WebAssembly.
35
+
36
+ **Fix:** add `'wasm-unsafe-eval'` to its `script-src`. Lamina PDF needs nothing else from the policy. See [Browser and bundlers](../pages/quick-start/browser.md).
37
+
38
+ ## `init()` fails in a Vite app
39
+
40
+ **Cause:** Vite pre-bundles dependencies into its own cache, and the `.wasm` files don't move with the JavaScript that loads them.
41
+
42
+ **Fix:** exclude the package from pre-bundling: `optimizeDeps: { exclude: ["@laminapdf/sdk"] }` in `vite.config.ts`. A Web Worker that uses `@laminapdf/sdk/worker` needs the same setting. See [Browser and bundlers](../pages/quick-start/browser.md).
43
+
44
+ ## `init()` fails in a Cloudflare Worker
45
+
46
+ **Cause:** Cloudflare Workers can't compile WebAssembly at run time, so `init()` can't build the modules from bytes or a URL.
47
+
48
+ **Fix:** let Wrangler bundle the package, and call `init()` without a URL or bytes. Wrangler picks the package's entry for Cloudflare Workers, which imports the `.wasm` files as compiled modules. See [Cloudflare Workers](../pages/quick-start/workers.md).
49
+
50
+ ## Opening a file fails with `password-required` or `wrong-password`
51
+
52
+ **Cause:** the file is encrypted. `password-required` means you passed no password, and `wrong-password` means the one you passed matches neither of the file's passwords.
53
+
54
+ **Fix:** ask your user for the password and open the file again with it. Nothing else has changed. See [Open password-protected files](../pages/guides/password-protected-files.md).
55
+
56
+ ## A signed file won't save
57
+
58
+ **Cause:** saving would break a signature, so the save fails with `would-invalidate-signatures`. A signed file saves only incrementally, and only with the edits its signatures allow.
59
+
60
+ **Fix:** keep the default save mode and make only edits the signatures allow. To save anyway, ask your user first, then pass `invalidateSignatures: true`. See [Save a PDF](../pages/guides/save-a-pdf.md) and [`would-invalidate-signatures`](../errors/would-invalidate-signatures.md).
61
+
62
+ ## Memory keeps growing
63
+
64
+ **Cause:** documents and builders live in WebAssembly memory, and the garbage collector frees them late: too late for a long-running page or server. WebAssembly memory also never shrinks, so one large file leaves it large.
65
+
66
+ **Fix:** free each one when you're done: `using doc = …` frees it at the end of the block, and `doc.free()` at once. A call on a freed one throws `disposed`. To give grown memory back, call `reset()` while no document is in use: every module starts afresh, and handles from before throw `instance-reset`. See [You free what you create](../pages/concepts/how-lamina-thinks.md#you-free-what-you-create).
67
+
68
+ ## A call throws `out-of-memory` or `wasm-trap`
69
+
70
+ **Cause:** the WebAssembly module ran out of memory (it may grow to 2 GiB), or it trapped on a bug in Lamina PDF. Either leaves the module's memory half-written, so Lamina PDF replaces the module's instance before the next call.
71
+
72
+ **Fix:** open the document again from its bytes: documents, pages and builders from the old instance throw `instance-reset`. For `out-of-memory`, keep fewer documents open at once and lower the open limits for files you don't trust. Report a `wasm-trap` with the file that causes it. See [`out-of-memory`](../errors/out-of-memory.md) and [`wasm-trap`](../errors/wasm-trap.md).
73
+
74
+ Next: the [error and warning codes](../errors/README.md), with what each one means and what to do.
@@ -0,0 +1,86 @@
1
+ {
2
+ "$schema": "./renames.schema.json",
3
+ "schema": "laminapdf.renames/1",
4
+ "renames": [
5
+ {
6
+ "from": "laminapdf::extract::TextRun",
7
+ "to": "laminapdf::extract::PageTextRun",
8
+ "surface": "rust",
9
+ "kind": "type",
10
+ "since": "0.2.0",
11
+ "note": "An extracted run; TextRun now means only drawn text."
12
+ },
13
+ {
14
+ "from": "laminapdf_text::extract::TextRun",
15
+ "to": "laminapdf_text::PageTextRun",
16
+ "surface": "rust",
17
+ "kind": "type",
18
+ "since": "0.2.0",
19
+ "note": "laminapdf-text's extract module is private; its items are at the crate root."
20
+ },
21
+ {
22
+ "from": "laminapdf_text::agl::to_unicode",
23
+ "to": "laminapdf_text::glyph_name_to_unicode",
24
+ "surface": "rust",
25
+ "kind": "function",
26
+ "since": "0.2.0",
27
+ "note": "laminapdf-text's agl module is private."
28
+ },
29
+ {
30
+ "from": "laminapdf_text::Tag",
31
+ "to": "laminapdf_text::OpenTypeTag",
32
+ "surface": "rust",
33
+ "kind": "type",
34
+ "since": "0.2.0",
35
+ "note": "The façade exports it as laminapdf::OpenTypeTag, for Font::instance."
36
+ },
37
+ {
38
+ "from": "laminapdf_build::Font",
39
+ "to": "laminapdf_build::FontHandle",
40
+ "surface": "rust",
41
+ "kind": "type",
42
+ "since": "0.2.0",
43
+ "note": "A font registered with a builder; laminapdf::Font is the font program."
44
+ },
45
+ {
46
+ "from": "laminapdf_content::Color",
47
+ "to": "laminapdf_content::CurrentColor",
48
+ "surface": "rust",
49
+ "kind": "type",
50
+ "since": "0.2.0",
51
+ "note": "The content reader's current colour: a colour space, its components and a pattern."
52
+ },
53
+ {
54
+ "from": "laminapdf_content::Matrix::multiply",
55
+ "to": "laminapdf_model::Matrix::then",
56
+ "surface": "rust",
57
+ "kind": "method",
58
+ "since": "0.2.0",
59
+ "note": "One Matrix for building and reading; then applies the receiver first."
60
+ },
61
+ {
62
+ "from": "laminapdf_content::Matrix::transform_point",
63
+ "to": "laminapdf_model::Matrix::apply",
64
+ "surface": "rust",
65
+ "kind": "method",
66
+ "since": "0.2.0",
67
+ "note": ""
68
+ },
69
+ {
70
+ "from": "laminapdf::CosError",
71
+ "to": "laminapdf::Error::error_code",
72
+ "surface": "rust",
73
+ "kind": "type",
74
+ "since": "0.2.0",
75
+ "note": "The crates' errors are opaque behind Error::Core: match on error_code() instead."
76
+ },
77
+ {
78
+ "from": "laminapdf_source::pending_ranges",
79
+ "to": "laminapdf::Error::pending_ranges",
80
+ "surface": "rust",
81
+ "kind": "function",
82
+ "since": "0.2.0",
83
+ "note": ""
84
+ }
85
+ ]
86
+ }