pdf-oxide 0.3.24 → 0.3.28

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 (271) hide show
  1. package/lib/builders/annotation-builder.d.ts +199 -0
  2. package/lib/builders/annotation-builder.d.ts.map +1 -0
  3. package/lib/builders/annotation-builder.js +318 -0
  4. package/lib/builders/annotation-builder.js.map +1 -0
  5. package/lib/builders/conversion-options-builder.d.ts +107 -0
  6. package/lib/builders/conversion-options-builder.d.ts.map +1 -0
  7. package/lib/builders/conversion-options-builder.js +215 -0
  8. package/lib/builders/conversion-options-builder.js.map +1 -0
  9. package/{src/builders/index.ts → lib/builders/index.d.ts} +1 -1
  10. package/lib/builders/index.d.ts.map +1 -0
  11. package/lib/builders/index.js +12 -0
  12. package/lib/builders/index.js.map +1 -0
  13. package/lib/builders/metadata-builder.d.ts +202 -0
  14. package/lib/builders/metadata-builder.d.ts.map +1 -0
  15. package/lib/builders/metadata-builder.js +286 -0
  16. package/lib/builders/metadata-builder.js.map +1 -0
  17. package/lib/builders/pdf-builder.d.ts +215 -0
  18. package/lib/builders/pdf-builder.d.ts.map +1 -0
  19. package/lib/builders/pdf-builder.js +339 -0
  20. package/lib/builders/pdf-builder.js.map +1 -0
  21. package/lib/builders/search-options-builder.d.ts +74 -0
  22. package/lib/builders/search-options-builder.d.ts.map +1 -0
  23. package/lib/builders/search-options-builder.js +130 -0
  24. package/lib/builders/search-options-builder.js.map +1 -0
  25. package/lib/document-editor-manager.d.ts +140 -0
  26. package/lib/document-editor-manager.d.ts.map +1 -0
  27. package/lib/document-editor-manager.js +257 -0
  28. package/lib/document-editor-manager.js.map +1 -0
  29. package/lib/errors.d.ts +383 -0
  30. package/lib/errors.d.ts.map +1 -0
  31. package/lib/errors.js +1117 -0
  32. package/lib/errors.js.map +1 -0
  33. package/lib/form-field-manager.d.ts +300 -0
  34. package/lib/form-field-manager.d.ts.map +1 -0
  35. package/lib/form-field-manager.js +567 -0
  36. package/lib/form-field-manager.js.map +1 -0
  37. package/lib/hybrid-ml-manager.d.ts +143 -0
  38. package/lib/hybrid-ml-manager.d.ts.map +1 -0
  39. package/lib/hybrid-ml-manager.js +209 -0
  40. package/lib/hybrid-ml-manager.js.map +1 -0
  41. package/lib/index.d.ts +23 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +280 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/managers/accessibility-manager.d.ts +149 -0
  46. package/lib/managers/accessibility-manager.d.ts.map +1 -0
  47. package/lib/managers/accessibility-manager.js +224 -0
  48. package/lib/managers/accessibility-manager.js.map +1 -0
  49. package/lib/managers/annotation-manager.d.ts +220 -0
  50. package/lib/managers/annotation-manager.d.ts.map +1 -0
  51. package/lib/managers/annotation-manager.js +360 -0
  52. package/lib/managers/annotation-manager.js.map +1 -0
  53. package/lib/managers/barcode-manager.d.ts +80 -0
  54. package/lib/managers/barcode-manager.d.ts.map +1 -0
  55. package/lib/managers/barcode-manager.js +226 -0
  56. package/lib/managers/barcode-manager.js.map +1 -0
  57. package/lib/managers/batch-manager.d.ts +186 -0
  58. package/lib/managers/batch-manager.d.ts.map +1 -0
  59. package/lib/managers/batch-manager.js +389 -0
  60. package/lib/managers/batch-manager.js.map +1 -0
  61. package/lib/managers/cache-manager.d.ts +182 -0
  62. package/lib/managers/cache-manager.d.ts.map +1 -0
  63. package/lib/managers/cache-manager.js +387 -0
  64. package/lib/managers/cache-manager.js.map +1 -0
  65. package/lib/managers/compliance-manager.d.ts +104 -0
  66. package/lib/managers/compliance-manager.d.ts.map +1 -0
  67. package/lib/managers/compliance-manager.js +415 -0
  68. package/lib/managers/compliance-manager.js.map +1 -0
  69. package/lib/managers/content-manager.d.ts +121 -0
  70. package/lib/managers/content-manager.d.ts.map +1 -0
  71. package/lib/managers/content-manager.js +295 -0
  72. package/lib/managers/content-manager.js.map +1 -0
  73. package/lib/managers/document-utility-manager.d.ts +370 -0
  74. package/lib/managers/document-utility-manager.d.ts.map +1 -0
  75. package/lib/managers/document-utility-manager.js +731 -0
  76. package/lib/managers/document-utility-manager.js.map +1 -0
  77. package/lib/managers/dom-pdf-creator.d.ts +105 -0
  78. package/lib/managers/dom-pdf-creator.d.ts.map +1 -0
  79. package/lib/managers/dom-pdf-creator.js +300 -0
  80. package/lib/managers/dom-pdf-creator.js.map +1 -0
  81. package/lib/managers/editing-manager.d.ts +249 -0
  82. package/lib/managers/editing-manager.d.ts.map +1 -0
  83. package/lib/managers/editing-manager.js +388 -0
  84. package/lib/managers/editing-manager.js.map +1 -0
  85. package/lib/managers/enterprise-manager.d.ts +193 -0
  86. package/lib/managers/enterprise-manager.d.ts.map +1 -0
  87. package/lib/managers/enterprise-manager.js +305 -0
  88. package/lib/managers/enterprise-manager.js.map +1 -0
  89. package/lib/managers/extended-managers.d.ts +123 -0
  90. package/lib/managers/extended-managers.d.ts.map +1 -0
  91. package/lib/managers/extended-managers.js +658 -0
  92. package/lib/managers/extended-managers.js.map +1 -0
  93. package/lib/managers/extraction-manager.d.ts +247 -0
  94. package/lib/managers/extraction-manager.d.ts.map +1 -0
  95. package/lib/managers/extraction-manager.js +478 -0
  96. package/lib/managers/extraction-manager.js.map +1 -0
  97. package/lib/managers/final-utilities.d.ts +128 -0
  98. package/lib/managers/final-utilities.d.ts.map +1 -0
  99. package/lib/managers/final-utilities.js +653 -0
  100. package/lib/managers/final-utilities.js.map +1 -0
  101. package/lib/managers/hybrid-ml-advanced.d.ts +137 -0
  102. package/lib/managers/hybrid-ml-advanced.d.ts.map +1 -0
  103. package/lib/managers/hybrid-ml-advanced.js +707 -0
  104. package/lib/managers/hybrid-ml-advanced.js.map +1 -0
  105. package/lib/managers/index.d.ts +65 -0
  106. package/lib/managers/index.d.ts.map +1 -0
  107. package/lib/managers/index.js +70 -0
  108. package/lib/managers/index.js.map +1 -0
  109. package/lib/managers/layer-manager.d.ts +204 -0
  110. package/lib/managers/layer-manager.d.ts.map +1 -0
  111. package/lib/managers/layer-manager.js +403 -0
  112. package/lib/managers/layer-manager.js.map +1 -0
  113. package/lib/managers/metadata-manager.d.ts +149 -0
  114. package/lib/managers/metadata-manager.d.ts.map +1 -0
  115. package/lib/managers/metadata-manager.js +281 -0
  116. package/lib/managers/metadata-manager.js.map +1 -0
  117. package/lib/managers/ocr-manager.d.ts +195 -0
  118. package/lib/managers/ocr-manager.d.ts.map +1 -0
  119. package/lib/managers/ocr-manager.js +583 -0
  120. package/lib/managers/ocr-manager.js.map +1 -0
  121. package/lib/managers/optimization-manager.d.ts +103 -0
  122. package/lib/managers/optimization-manager.d.ts.map +1 -0
  123. package/lib/managers/optimization-manager.js +194 -0
  124. package/lib/managers/optimization-manager.js.map +1 -0
  125. package/lib/managers/outline-manager.d.ts +102 -0
  126. package/lib/managers/outline-manager.d.ts.map +1 -0
  127. package/lib/managers/outline-manager.js +170 -0
  128. package/lib/managers/outline-manager.js.map +1 -0
  129. package/lib/managers/page-manager.d.ts +143 -0
  130. package/lib/managers/page-manager.d.ts.map +1 -0
  131. package/lib/managers/page-manager.js +237 -0
  132. package/lib/managers/page-manager.js.map +1 -0
  133. package/lib/managers/pattern-detection.d.ts +170 -0
  134. package/lib/managers/pattern-detection.d.ts.map +1 -0
  135. package/lib/managers/pattern-detection.js +325 -0
  136. package/lib/managers/pattern-detection.js.map +1 -0
  137. package/lib/managers/rendering-manager.d.ts +354 -0
  138. package/lib/managers/rendering-manager.d.ts.map +1 -0
  139. package/lib/managers/rendering-manager.js +680 -0
  140. package/lib/managers/rendering-manager.js.map +1 -0
  141. package/lib/managers/search-manager.d.ts +236 -0
  142. package/lib/managers/search-manager.d.ts.map +1 -0
  143. package/lib/managers/search-manager.js +330 -0
  144. package/lib/managers/search-manager.js.map +1 -0
  145. package/lib/managers/security-manager.d.ts +162 -0
  146. package/lib/managers/security-manager.d.ts.map +1 -0
  147. package/lib/managers/security-manager.js +293 -0
  148. package/lib/managers/security-manager.js.map +1 -0
  149. package/lib/managers/signature-manager.d.ts +725 -0
  150. package/lib/managers/signature-manager.d.ts.map +1 -0
  151. package/lib/managers/signature-manager.js +1365 -0
  152. package/lib/managers/signature-manager.js.map +1 -0
  153. package/lib/managers/streams.d.ts +263 -0
  154. package/lib/managers/streams.d.ts.map +1 -0
  155. package/lib/managers/streams.js +472 -0
  156. package/lib/managers/streams.js.map +1 -0
  157. package/lib/managers/xfa-manager.d.ts +228 -0
  158. package/lib/managers/xfa-manager.d.ts.map +1 -0
  159. package/lib/managers/xfa-manager.js +490 -0
  160. package/lib/managers/xfa-manager.js.map +1 -0
  161. package/lib/pdf-creator-manager.d.ts +201 -0
  162. package/lib/pdf-creator-manager.d.ts.map +1 -0
  163. package/lib/pdf-creator-manager.js +379 -0
  164. package/lib/pdf-creator-manager.js.map +1 -0
  165. package/lib/properties.d.ts +80 -0
  166. package/lib/properties.d.ts.map +1 -0
  167. package/lib/properties.js +455 -0
  168. package/lib/properties.js.map +1 -0
  169. package/lib/result-accessors-manager.d.ts +347 -0
  170. package/lib/result-accessors-manager.d.ts.map +1 -0
  171. package/lib/result-accessors-manager.js +705 -0
  172. package/lib/result-accessors-manager.js.map +1 -0
  173. package/lib/thumbnail-manager.d.ts +122 -0
  174. package/lib/thumbnail-manager.d.ts.map +1 -0
  175. package/lib/thumbnail-manager.js +206 -0
  176. package/lib/thumbnail-manager.js.map +1 -0
  177. package/lib/types/common.d.ts +93 -0
  178. package/lib/types/common.d.ts.map +1 -0
  179. package/lib/types/common.js +5 -0
  180. package/lib/types/common.js.map +1 -0
  181. package/lib/types/document-types.d.ts +353 -0
  182. package/lib/types/document-types.d.ts.map +1 -0
  183. package/lib/types/document-types.js +83 -0
  184. package/lib/types/document-types.js.map +1 -0
  185. package/{src/types/index.ts → lib/types/index.d.ts} +1 -1
  186. package/lib/types/index.d.ts.map +1 -0
  187. package/lib/types/index.js +6 -0
  188. package/lib/types/index.js.map +1 -0
  189. package/lib/types/manager-types.d.ts +180 -0
  190. package/lib/types/manager-types.d.ts.map +1 -0
  191. package/lib/types/manager-types.js +99 -0
  192. package/lib/types/manager-types.js.map +1 -0
  193. package/lib/types/native-bindings.d.ts +440 -0
  194. package/lib/types/native-bindings.d.ts.map +1 -0
  195. package/lib/types/native-bindings.js +8 -0
  196. package/lib/types/native-bindings.js.map +1 -0
  197. package/{src/workers/index.ts → lib/workers/index.d.ts} +1 -1
  198. package/lib/workers/index.d.ts.map +1 -0
  199. package/lib/workers/index.js +6 -0
  200. package/lib/workers/index.js.map +1 -0
  201. package/lib/workers/pool.d.ts +65 -0
  202. package/lib/workers/pool.d.ts.map +1 -0
  203. package/lib/workers/pool.js +195 -0
  204. package/lib/workers/pool.js.map +1 -0
  205. package/lib/workers/worker.d.ts +6 -0
  206. package/lib/workers/worker.d.ts.map +1 -0
  207. package/lib/workers/worker.js +100 -0
  208. package/lib/workers/worker.js.map +1 -0
  209. package/package.json +12 -22
  210. package/prebuilds/darwin-arm64/pdf_oxide.node +0 -0
  211. package/prebuilds/darwin-x64/pdf_oxide.node +0 -0
  212. package/prebuilds/linux-arm64/pdf_oxide.node +0 -0
  213. package/prebuilds/linux-x64/pdf_oxide.node +0 -0
  214. package/prebuilds/win32-x64/pdf_oxide.node +0 -0
  215. package/binding.gyp +0 -35
  216. package/src/builders/annotation-builder.ts +0 -367
  217. package/src/builders/conversion-options-builder.ts +0 -257
  218. package/src/builders/metadata-builder.ts +0 -317
  219. package/src/builders/pdf-builder.ts +0 -386
  220. package/src/builders/search-options-builder.ts +0 -151
  221. package/src/document-editor-manager.ts +0 -318
  222. package/src/errors.ts +0 -1629
  223. package/src/form-field-manager.ts +0 -666
  224. package/src/hybrid-ml-manager.ts +0 -283
  225. package/src/index.ts +0 -453
  226. package/src/managers/accessibility-manager.ts +0 -338
  227. package/src/managers/annotation-manager.ts +0 -439
  228. package/src/managers/barcode-manager.ts +0 -235
  229. package/src/managers/batch-manager.ts +0 -533
  230. package/src/managers/cache-manager.ts +0 -486
  231. package/src/managers/compliance-manager.ts +0 -375
  232. package/src/managers/content-manager.ts +0 -339
  233. package/src/managers/document-utility-manager.ts +0 -922
  234. package/src/managers/dom-pdf-creator.ts +0 -365
  235. package/src/managers/editing-manager.ts +0 -514
  236. package/src/managers/enterprise-manager.ts +0 -478
  237. package/src/managers/extended-managers.ts +0 -437
  238. package/src/managers/extraction-manager.ts +0 -583
  239. package/src/managers/final-utilities.ts +0 -429
  240. package/src/managers/hybrid-ml-advanced.ts +0 -479
  241. package/src/managers/index.ts +0 -239
  242. package/src/managers/layer-manager.ts +0 -500
  243. package/src/managers/metadata-manager.ts +0 -303
  244. package/src/managers/ocr-manager.ts +0 -756
  245. package/src/managers/optimization-manager.ts +0 -262
  246. package/src/managers/outline-manager.ts +0 -196
  247. package/src/managers/page-manager.ts +0 -289
  248. package/src/managers/pattern-detection.ts +0 -440
  249. package/src/managers/rendering-manager.ts +0 -863
  250. package/src/managers/search-manager.ts +0 -385
  251. package/src/managers/security-manager.ts +0 -345
  252. package/src/managers/signature-manager.ts +0 -1664
  253. package/src/managers/streams.ts +0 -618
  254. package/src/managers/xfa-manager.ts +0 -500
  255. package/src/pdf-creator-manager.ts +0 -494
  256. package/src/properties.ts +0 -522
  257. package/src/result-accessors-manager.ts +0 -867
  258. package/src/tests/advanced-features.test.ts +0 -414
  259. package/src/tests/advanced.test.ts +0 -266
  260. package/src/tests/extended-managers.test.ts +0 -316
  261. package/src/tests/final-utilities.test.ts +0 -455
  262. package/src/tests/foundation.test.ts +0 -315
  263. package/src/tests/high-demand.test.ts +0 -257
  264. package/src/tests/specialized.test.ts +0 -97
  265. package/src/thumbnail-manager.ts +0 -272
  266. package/src/types/common.ts +0 -142
  267. package/src/types/document-types.ts +0 -457
  268. package/src/types/manager-types.ts +0 -284
  269. package/src/types/native-bindings.ts +0 -517
  270. package/src/workers/pool.ts +0 -274
  271. package/src/workers/worker.ts +0 -131
@@ -1,338 +0,0 @@
1
- /**
2
- * AccessibilityManager - PDF Accessibility Operations
3
- *
4
- * Provides accessibility analysis and remediation capabilities including:
5
- * - Tagged PDF detection
6
- * - Structure tree extraction
7
- * - Auto-tagging
8
- * - Alt text management
9
- * - Language and title metadata
10
- *
11
- * @since 1.0.0
12
- */
13
-
14
- import { EventEmitter } from 'events';
15
- import { mapFfiErrorCode, AccessibilityException } from '../errors';
16
-
17
- // =============================================================================
18
- // Type Definitions
19
- // =============================================================================
20
-
21
- /**
22
- * Represents a structure element in a tagged PDF.
23
- */
24
- export interface StructureElement {
25
- /** Structure element type (e.g., 'P', 'H1', 'Figure', 'Table') */
26
- readonly type: string;
27
- /** Alt text for the element, if set */
28
- readonly altText?: string;
29
- /** Actual text content of the element */
30
- readonly actualText?: string;
31
- /** Language of the element */
32
- readonly language?: string;
33
- /** Page index where this element appears */
34
- readonly pageIndex: number;
35
- /** Marked content identifier */
36
- readonly mcid: number;
37
- /** Child elements */
38
- readonly children: readonly StructureElement[];
39
- }
40
-
41
- /**
42
- * Represents the full structure tree of a tagged PDF.
43
- */
44
- export interface StructureTree {
45
- /** Whether the document is tagged */
46
- readonly isTagged: boolean;
47
- /** Root-level structure elements */
48
- readonly elements: readonly StructureElement[];
49
- /** Total element count across all levels */
50
- readonly totalElements: number;
51
- /** Document language from the structure tree root */
52
- readonly language?: string;
53
- }
54
-
55
- /**
56
- * Result of an auto-tag operation.
57
- */
58
- export interface AutoTagResult {
59
- /** Whether auto-tagging succeeded */
60
- readonly success: boolean;
61
- /** Number of elements tagged */
62
- readonly elementsTagged: number;
63
- /** Number of images found */
64
- readonly imagesFound: number;
65
- /** Number of headings detected */
66
- readonly headingsDetected: number;
67
- /** Warnings generated during tagging */
68
- readonly warnings: readonly string[];
69
- }
70
-
71
- // =============================================================================
72
- // AccessibilityManager
73
- // =============================================================================
74
-
75
- /**
76
- * Manager for PDF accessibility operations.
77
- *
78
- * Provides methods for inspecting and improving the accessibility of
79
- * PDF documents, including tagged PDF detection, structure tree analysis,
80
- * auto-tagging, and alt text management.
81
- *
82
- * @example
83
- * ```typescript
84
- * const accessibility = new AccessibilityManager(document);
85
- *
86
- * // Check if document is tagged
87
- * const tagged = await accessibility.isTagged();
88
- *
89
- * // Auto-tag an untagged document
90
- * if (!tagged) {
91
- * const result = await accessibility.autoTag('en');
92
- * console.log(`Tagged ${result.elementsTagged} elements`);
93
- * }
94
- *
95
- * // Set alt text on images
96
- * await accessibility.setAltText(0, 1, 'Company logo');
97
- * ```
98
- */
99
- export class AccessibilityManager extends EventEmitter {
100
- private document: any;
101
- private native: any;
102
-
103
- constructor(document: any) {
104
- super();
105
- if (!document) {
106
- throw new Error('Document cannot be null or undefined');
107
- }
108
- this.document = document;
109
- try {
110
- this.native = require('../../index.node');
111
- } catch {
112
- this.native = null;
113
- }
114
- }
115
-
116
- // ===========================================================================
117
- // Accessibility Analysis
118
- // ===========================================================================
119
-
120
- /**
121
- * Checks whether the PDF document is tagged.
122
- *
123
- * A tagged PDF contains a structure tree that defines the logical
124
- * reading order and semantic structure of the content.
125
- *
126
- * @returns True if the document is tagged
127
- * @throws AccessibilityException if the check fails
128
- */
129
- async isTagged(): Promise<boolean> {
130
- if (!this.native?.pdf_accessibility_is_tagged) {
131
- throw new AccessibilityException('Native accessibility not available: pdf_accessibility_is_tagged not found');
132
- }
133
-
134
- const errorCode = Buffer.alloc(4);
135
- const result = this.native.pdf_accessibility_is_tagged(
136
- this.document._handle ?? this.document,
137
- errorCode,
138
- );
139
- const code = errorCode.readInt32LE(0);
140
-
141
- if (code !== 0) {
142
- throw mapFfiErrorCode(code, 'Failed to check if document is tagged');
143
- }
144
-
145
- this.emit('tagged-checked', { isTagged: result });
146
- return !!result;
147
- }
148
-
149
- /**
150
- * Gets the full structure tree of the document.
151
- *
152
- * Returns the hierarchical structure tree that defines the logical
153
- * organization and reading order of the document content.
154
- *
155
- * @returns The document structure tree
156
- * @throws AccessibilityException if the extraction fails
157
- */
158
- async getStructureTree(): Promise<StructureTree> {
159
- if (!this.native?.pdf_accessibility_get_structure_tree) {
160
- throw new AccessibilityException('Native accessibility not available: pdf_accessibility_get_structure_tree not found');
161
- }
162
-
163
- const errorCode = Buffer.alloc(4);
164
- const resultPtr = this.native.pdf_accessibility_get_structure_tree(
165
- this.document._handle ?? this.document,
166
- errorCode,
167
- );
168
- const code = errorCode.readInt32LE(0);
169
-
170
- if (code !== 0) {
171
- throw mapFfiErrorCode(code, 'Failed to get structure tree');
172
- }
173
-
174
- try {
175
- const tree: StructureTree = typeof resultPtr === 'string'
176
- ? JSON.parse(resultPtr)
177
- : resultPtr;
178
-
179
- this.emit('structure-tree-retrieved', { totalElements: tree.totalElements });
180
-
181
- // Free native handle if needed
182
- if (this.native.pdf_structure_tree_free && typeof resultPtr !== 'string') {
183
- this.native.pdf_structure_tree_free(resultPtr);
184
- }
185
-
186
- return tree;
187
- } catch {
188
- return {
189
- isTagged: false,
190
- elements: [],
191
- totalElements: 0,
192
- };
193
- }
194
- }
195
-
196
- /**
197
- * Automatically tags an untagged PDF document.
198
- *
199
- * Uses heuristic analysis to detect document structure and apply
200
- * appropriate tags for headings, paragraphs, images, tables, and lists.
201
- *
202
- * @param language - Optional BCP-47 language tag (e.g., 'en', 'fr', 'de')
203
- * @returns Result of the auto-tagging operation
204
- * @throws AccessibilityException if auto-tagging fails
205
- */
206
- async autoTag(language?: string): Promise<AutoTagResult> {
207
- if (!this.native?.pdf_accessibility_auto_tag) {
208
- throw new AccessibilityException('Native accessibility not available: pdf_accessibility_auto_tag not found');
209
- }
210
-
211
- const errorCode = Buffer.alloc(4);
212
- const resultPtr = this.native.pdf_accessibility_auto_tag(
213
- this.document._handle ?? this.document,
214
- language ?? null,
215
- errorCode,
216
- );
217
- const code = errorCode.readInt32LE(0);
218
-
219
- if (code !== 0) {
220
- throw mapFfiErrorCode(code, 'Failed to auto-tag document');
221
- }
222
-
223
- let result: AutoTagResult;
224
- try {
225
- result = typeof resultPtr === 'string'
226
- ? JSON.parse(resultPtr)
227
- : resultPtr ?? { success: true, elementsTagged: 0, imagesFound: 0, headingsDetected: 0, warnings: [] };
228
- } catch {
229
- result = { success: true, elementsTagged: 0, imagesFound: 0, headingsDetected: 0, warnings: [] };
230
- }
231
-
232
- this.emit('auto-tagged', { language, elementsTagged: result.elementsTagged });
233
- return result;
234
- }
235
-
236
- // ===========================================================================
237
- // Alt Text Management
238
- // ===========================================================================
239
-
240
- /**
241
- * Sets alt text for a structure element identified by page and MCID.
242
- *
243
- * @param page - Zero-based page index
244
- * @param mcid - Marked content identifier of the element
245
- * @param text - Alt text to set
246
- * @throws AccessibilityException if the operation fails
247
- */
248
- async setAltText(page: number, mcid: number, text: string): Promise<void> {
249
- if (!this.native?.pdf_accessibility_set_alt_text) {
250
- throw new AccessibilityException('Native accessibility not available: pdf_accessibility_set_alt_text not found');
251
- }
252
-
253
- const errorCode = Buffer.alloc(4);
254
- this.native.pdf_accessibility_set_alt_text(
255
- this.document._handle ?? this.document,
256
- page,
257
- mcid,
258
- text,
259
- errorCode,
260
- );
261
- const code = errorCode.readInt32LE(0);
262
-
263
- if (code !== 0) {
264
- throw mapFfiErrorCode(code, `Failed to set alt text on page ${page}, mcid ${mcid}`);
265
- }
266
-
267
- this.emit('alt-text-set', { page, mcid, text });
268
- }
269
-
270
- // ===========================================================================
271
- // Document-Level Accessibility Metadata
272
- // ===========================================================================
273
-
274
- /**
275
- * Sets the document language.
276
- *
277
- * @param lang - BCP-47 language tag (e.g., 'en', 'en-US', 'fr')
278
- * @throws AccessibilityException if the operation fails
279
- */
280
- async setLanguage(lang: string): Promise<void> {
281
- if (!this.native?.pdf_accessibility_set_language) {
282
- throw new AccessibilityException('Native accessibility not available: pdf_accessibility_set_language not found');
283
- }
284
-
285
- const errorCode = Buffer.alloc(4);
286
- this.native.pdf_accessibility_set_language(
287
- this.document._handle ?? this.document,
288
- lang,
289
- errorCode,
290
- );
291
- const code = errorCode.readInt32LE(0);
292
-
293
- if (code !== 0) {
294
- throw mapFfiErrorCode(code, `Failed to set document language to '${lang}'`);
295
- }
296
-
297
- this.emit('language-set', { lang });
298
- }
299
-
300
- /**
301
- * Sets the document title for accessibility.
302
- *
303
- * @param title - Document title
304
- * @throws AccessibilityException if the operation fails
305
- */
306
- async setTitle(title: string): Promise<void> {
307
- if (!this.native?.pdf_accessibility_set_title) {
308
- throw new AccessibilityException('Native accessibility not available: pdf_accessibility_set_title not found');
309
- }
310
-
311
- const errorCode = Buffer.alloc(4);
312
- this.native.pdf_accessibility_set_title(
313
- this.document._handle ?? this.document,
314
- title,
315
- errorCode,
316
- );
317
- const code = errorCode.readInt32LE(0);
318
-
319
- if (code !== 0) {
320
- throw mapFfiErrorCode(code, 'Failed to set document title');
321
- }
322
-
323
- this.emit('title-set', { title });
324
- }
325
-
326
- // ===========================================================================
327
- // Cleanup
328
- // ===========================================================================
329
-
330
- /**
331
- * Releases resources held by this manager.
332
- */
333
- destroy(): void {
334
- this.removeAllListeners();
335
- }
336
- }
337
-
338
- export default AccessibilityManager;