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
@@ -0,0 +1,478 @@
1
+ /**
2
+ * Manager for content extraction from PDF documents
3
+ *
4
+ * Caching is handled automatically at the Rust FFI layer, eliminating
5
+ * the need for duplicate cache implementations in the binding.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ExtractionManager, ConversionOptionsBuilder } from 'pdf_oxide';
10
+ *
11
+ * const doc = PdfDocument.open('document.pdf');
12
+ * const extractionManager = new ExtractionManager(doc);
13
+ *
14
+ * // Extract text from a single page
15
+ * const text = extractionManager.extractText(0);
16
+ * console.log(text);
17
+ *
18
+ * // Extract all text
19
+ * const allText = extractionManager.extractAllText();
20
+ *
21
+ * // Extract with custom options
22
+ * const options = ConversionOptionsBuilder.highQuality().build();
23
+ * const markdown = extractionManager.extractMarkdown(0, options);
24
+ * ```
25
+ */
26
+ export class ExtractionManager {
27
+ /**
28
+ * Creates a new ExtractionManager for the given document
29
+ * @param document - The PDF document
30
+ * @throws Error if document is null or undefined
31
+ */
32
+ constructor(document) {
33
+ if (!document) {
34
+ throw new Error('Document is required');
35
+ }
36
+ this._document = document;
37
+ }
38
+ /**
39
+ * Extracts text from a single page.
40
+ *
41
+ * The native layer produces UTF-8 bytes, which Node decodes into a JS
42
+ * `string` (UTF-16 code units internally). As a result,
43
+ * `text.length` reports UTF-16 code units, not bytes — so a 648-byte
44
+ * UTF-8 string containing two accented letters reads as 646 in JS. Use
45
+ * `Buffer.byteLength(text, 'utf8')` if you need the byte count (e.g. to
46
+ * compare against Go's `len(string)` or Rust's `String::len()`).
47
+ *
48
+ * Results are automatically cached at the FFI layer.
49
+ *
50
+ * @param pageIndex - Zero-based page index
51
+ * @param options - Conversion options
52
+ * @returns Extracted text (UTF-16 code units)
53
+ * @throws Error if page index is invalid
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const text = manager.extractText(0);
58
+ * console.log(`Page 1: ${text.length} UTF-16 code units`);
59
+ * console.log(` ${Buffer.byteLength(text, 'utf8')} UTF-8 bytes`);
60
+ * ```
61
+ */
62
+ extractText(pageIndex, options) {
63
+ if (typeof pageIndex !== 'number' || pageIndex < 0) {
64
+ throw new Error('Page index must be a non-negative number');
65
+ }
66
+ if (pageIndex >= this._document.pageCount) {
67
+ throw new Error(`Page index ${pageIndex} out of range`);
68
+ }
69
+ try {
70
+ return this._document.extractText(pageIndex);
71
+ }
72
+ catch (error) {
73
+ throw new Error(`Failed to extract text from page ${pageIndex}: ${error.message}`);
74
+ }
75
+ }
76
+ /**
77
+ * Extracts text from all pages
78
+ * @param options - Conversion options
79
+ * @returns All extracted text concatenated
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const allText = manager.extractAllText();
84
+ * console.log(`Total characters: ${allText.length}`);
85
+ * ```
86
+ */
87
+ extractAllText(options) {
88
+ try {
89
+ const parts = [];
90
+ for (let i = 0; i < this._document.pageCount; i++) {
91
+ parts.push(this.extractText(i, options));
92
+ }
93
+ return parts.join('\n');
94
+ }
95
+ catch (error) {
96
+ throw new Error(`Failed to extract all text: ${error.message}`);
97
+ }
98
+ }
99
+ /**
100
+ * Extracts text from a range of pages
101
+ * @param startPageIndex - Zero-based start page index
102
+ * @param endPageIndex - Zero-based end page index (inclusive)
103
+ * @param options - Conversion options
104
+ * @returns Extracted text from pages in range
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const text = manager.extractTextRange(0, 10);
109
+ * console.log(`Text from pages 1-11: ${text}`);
110
+ * ```
111
+ */
112
+ extractTextRange(startPageIndex, endPageIndex, options) {
113
+ if (typeof startPageIndex !== 'number' || startPageIndex < 0) {
114
+ throw new Error('Start page index must be a non-negative number');
115
+ }
116
+ if (typeof endPageIndex !== 'number' || endPageIndex < startPageIndex) {
117
+ throw new Error('End page index must be >= start page index');
118
+ }
119
+ if (endPageIndex >= this._document.pageCount) {
120
+ throw new Error(`End page index ${endPageIndex} out of range`);
121
+ }
122
+ try {
123
+ const parts = [];
124
+ for (let i = startPageIndex; i <= endPageIndex; i++) {
125
+ parts.push(this.extractText(i, options));
126
+ }
127
+ return parts.join('\n');
128
+ }
129
+ catch (error) {
130
+ throw new Error(`Failed to extract text range: ${error.message}`);
131
+ }
132
+ }
133
+ /**
134
+ * Extracts text from specific page indices (non-contiguous)
135
+ * @param pageIndices - Array of zero-based page indices
136
+ * @param options - Conversion options
137
+ * @returns Extracted text from specified pages concatenated with newlines
138
+ * @throws Error if page indices are invalid
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * const text = manager.extractTextBatch([0, 2, 5]); // Extract pages 1, 3, 6
143
+ * console.log(text);
144
+ * ```
145
+ */
146
+ extractTextBatch(pageIndices, options) {
147
+ if (!Array.isArray(pageIndices)) {
148
+ throw new Error('Page indices must be an array');
149
+ }
150
+ if (pageIndices.length === 0) {
151
+ return '';
152
+ }
153
+ try {
154
+ const parts = [];
155
+ for (const pageIndex of pageIndices) {
156
+ if (typeof pageIndex !== 'number' || pageIndex < 0 || pageIndex >= this._document.pageCount) {
157
+ throw new Error(`Invalid page index: ${pageIndex}`);
158
+ }
159
+ parts.push(this.extractText(pageIndex, options));
160
+ }
161
+ return parts.join('\n');
162
+ }
163
+ catch (error) {
164
+ throw new Error(`Failed to extract text batch: ${error.message}`);
165
+ }
166
+ }
167
+ /**
168
+ * Extracts text from pages as an array (one entry per page)
169
+ * @param startPageIndex - Zero-based start page index
170
+ * @param endPageIndex - Zero-based end page index (inclusive)
171
+ * @param options - Conversion options
172
+ * @returns Array of extracted text, one per page
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const pages = manager.extractTextArray(0, 5);
177
+ * pages.forEach((text, i) => console.log(`Page ${i}: ${text.length} chars`));
178
+ * ```
179
+ */
180
+ extractTextArray(startPageIndex, endPageIndex, options) {
181
+ if (typeof startPageIndex !== 'number' || startPageIndex < 0) {
182
+ throw new Error('Start page index must be a non-negative number');
183
+ }
184
+ if (typeof endPageIndex !== 'number' || endPageIndex < startPageIndex) {
185
+ throw new Error('End page index must be >= start page index');
186
+ }
187
+ if (endPageIndex >= this._document.pageCount) {
188
+ throw new Error(`End page index ${endPageIndex} out of range`);
189
+ }
190
+ try {
191
+ const results = [];
192
+ for (let i = startPageIndex; i <= endPageIndex; i++) {
193
+ results.push(this.extractText(i, options));
194
+ }
195
+ return results;
196
+ }
197
+ catch (error) {
198
+ throw new Error(`Failed to extract text array: ${error.message}`);
199
+ }
200
+ }
201
+ /**
202
+ * Extracts page as Markdown.
203
+ * Results are automatically cached at the FFI layer.
204
+ * @param pageIndex - Zero-based page index
205
+ * @param options - Conversion options
206
+ * @returns Page content as Markdown
207
+ * @throws Error if page index is invalid
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * const markdown = manager.extractMarkdown(0);
212
+ * console.log(markdown); // Markdown formatted content
213
+ * ```
214
+ */
215
+ extractMarkdown(pageIndex, options) {
216
+ if (typeof pageIndex !== 'number' || pageIndex < 0) {
217
+ throw new Error('Page index must be a non-negative number');
218
+ }
219
+ if (pageIndex >= this._document.pageCount) {
220
+ throw new Error(`Page index ${pageIndex} out of range`);
221
+ }
222
+ try {
223
+ return this._document.toMarkdown(pageIndex, options);
224
+ }
225
+ catch (error) {
226
+ throw new Error(`Failed to extract markdown from page ${pageIndex}: ${error.message}`);
227
+ }
228
+ }
229
+ /**
230
+ * Extracts all pages as Markdown
231
+ * @param options - Conversion options
232
+ * @returns All pages as Markdown
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const markdown = manager.extractAllMarkdown();
237
+ * // Write to file
238
+ * fs.writeFileSync('output.md', markdown);
239
+ * ```
240
+ */
241
+ extractAllMarkdown(options) {
242
+ try {
243
+ const parts = [];
244
+ for (let i = 0; i < this._document.pageCount; i++) {
245
+ const heading = `\n## Page ${i + 1}\n`;
246
+ const content = this.extractMarkdown(i, options);
247
+ parts.push(heading + content);
248
+ }
249
+ return parts.join('\n');
250
+ }
251
+ catch (error) {
252
+ throw new Error(`Failed to extract all markdown: ${error.message}`);
253
+ }
254
+ }
255
+ /**
256
+ * Extracts markdown from a range of pages
257
+ * @param startPageIndex - Zero-based start page index
258
+ * @param endPageIndex - Zero-based end page index (inclusive)
259
+ * @param options - Conversion options
260
+ * @returns Extracted markdown from pages in range
261
+ */
262
+ extractMarkdownRange(startPageIndex, endPageIndex, options) {
263
+ if (typeof startPageIndex !== 'number' || startPageIndex < 0) {
264
+ throw new Error('Start page index must be a non-negative number');
265
+ }
266
+ if (typeof endPageIndex !== 'number' || endPageIndex < startPageIndex) {
267
+ throw new Error('End page index must be >= start page index');
268
+ }
269
+ if (endPageIndex >= this._document.pageCount) {
270
+ throw new Error(`End page index ${endPageIndex} out of range`);
271
+ }
272
+ try {
273
+ const parts = [];
274
+ for (let i = startPageIndex; i <= endPageIndex; i++) {
275
+ const heading = `\n## Page ${i + 1}\n`;
276
+ const content = this.extractMarkdown(i, options);
277
+ parts.push(heading + content);
278
+ }
279
+ return parts.join('\n');
280
+ }
281
+ catch (error) {
282
+ throw new Error(`Failed to extract markdown range: ${error.message}`);
283
+ }
284
+ }
285
+ /**
286
+ * Gets word count for a page
287
+ * @param pageIndex - Zero-based page index
288
+ * @returns Estimated word count
289
+ */
290
+ getPageWordCount(pageIndex) {
291
+ const text = this.extractText(pageIndex);
292
+ return text.trim().split(/\s+/).length;
293
+ }
294
+ /**
295
+ * Gets total word count for all pages
296
+ * @returns Total word count across all pages
297
+ */
298
+ getTotalWordCount() {
299
+ const allText = this.extractAllText();
300
+ return allText.trim().split(/\s+/).filter(word => word.length > 0).length;
301
+ }
302
+ /**
303
+ * Gets character count for a page
304
+ * @param pageIndex - Zero-based page index
305
+ * @returns Character count (including whitespace)
306
+ */
307
+ getPageCharacterCount(pageIndex) {
308
+ const text = this.extractText(pageIndex);
309
+ return text.length;
310
+ }
311
+ /**
312
+ * Gets total character count for all pages
313
+ * @returns Total character count
314
+ */
315
+ getTotalCharacterCount() {
316
+ let total = 0;
317
+ for (let i = 0; i < this._document.pageCount; i++) {
318
+ total += this.getPageCharacterCount(i);
319
+ }
320
+ return total;
321
+ }
322
+ /**
323
+ * Gets line count for a page
324
+ * @param pageIndex - Zero-based page index
325
+ * @returns Estimated line count
326
+ */
327
+ getPageLineCount(pageIndex) {
328
+ const text = this.extractText(pageIndex);
329
+ return text.split('\n').length;
330
+ }
331
+ /**
332
+ * Gets statistics for extracted content
333
+ * @returns Content statistics object
334
+ *
335
+ * @example
336
+ * ```typescript
337
+ * const stats = manager.getContentStatistics();
338
+ * console.log(`Total pages: ${stats.pageCount}`);
339
+ * console.log(`Total words: ${stats.wordCount}`);
340
+ * console.log(`Average page length: ${stats.averagePageLength}`);
341
+ * ```
342
+ */
343
+ getContentStatistics() {
344
+ try {
345
+ const pageCount = this._document.pageCount;
346
+ const totalWords = this.getTotalWordCount();
347
+ const totalCharacters = this.getTotalCharacterCount();
348
+ return {
349
+ pageCount,
350
+ wordCount: totalWords,
351
+ characterCount: totalCharacters,
352
+ averageWordsPerPage: Math.round(totalWords / pageCount),
353
+ averageCharactersPerPage: Math.round(totalCharacters / pageCount),
354
+ };
355
+ }
356
+ catch (error) {
357
+ throw new Error(`Failed to get content statistics: ${error.message}`);
358
+ }
359
+ }
360
+ /**
361
+ * Searches for text across all pages and returns matching snippets
362
+ * @param searchText - Text to search for
363
+ * @param contextLength - Characters of context around match
364
+ * @returns Array of match objects with page and snippet
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * const matches = manager.searchContent('keyword', 50);
369
+ * matches.forEach(match => {
370
+ * console.log(`Page ${match.pageIndex + 1}: ...${match.snippet}...`);
371
+ * });
372
+ * ```
373
+ */
374
+ searchContent(searchText, contextLength = 100) {
375
+ if (!searchText || typeof searchText !== 'string') {
376
+ throw new Error('Search text must be a non-empty string');
377
+ }
378
+ const results = [];
379
+ const searchRegex = new RegExp(searchText, 'gi');
380
+ for (let i = 0; i < this._document.pageCount; i++) {
381
+ try {
382
+ const text = this.extractText(i);
383
+ let match;
384
+ while ((match = searchRegex.exec(text)) !== null) {
385
+ const start = Math.max(0, match.index - contextLength);
386
+ const end = Math.min(text.length, match.index + searchText.length + contextLength);
387
+ const snippet = text.substring(start, end);
388
+ results.push({
389
+ pageIndex: i,
390
+ pageNumber: i + 1,
391
+ matchIndex: match.index,
392
+ snippet: snippet.replace(/\n/g, ' '),
393
+ matchText: match[0],
394
+ });
395
+ }
396
+ // Reset regex for next iteration
397
+ searchRegex.lastIndex = 0;
398
+ }
399
+ catch (e) {
400
+ // Skip pages that fail extraction
401
+ }
402
+ }
403
+ return results;
404
+ }
405
+ /**
406
+ * Extract text from a page in a worker thread (non-blocking)
407
+ * @param documentPath - Path to the PDF document
408
+ * @param pageIndex - Page index to extract from
409
+ * @param options - Optional extraction options
410
+ * @param timeout - Optional timeout in milliseconds
411
+ * @returns Promise resolving to extracted text
412
+ */
413
+ async extractTextInWorker(documentPath, pageIndex, options, timeout) {
414
+ const { workerPool } = await import('../workers/index.js');
415
+ const result = await workerPool.runTask({
416
+ operation: 'extract',
417
+ documentPath,
418
+ params: {
419
+ type: 'text',
420
+ pageIndex,
421
+ options: options || {},
422
+ },
423
+ }, timeout);
424
+ if (!result.success) {
425
+ throw new Error(`Worker extraction failed: ${result.error instanceof Error ? result.error.message : String(result.error)}`);
426
+ }
427
+ return result.data;
428
+ }
429
+ /**
430
+ * Extract markdown from a page in a worker thread (non-blocking)
431
+ * @param documentPath - Path to the PDF document
432
+ * @param pageIndex - Page index to extract from
433
+ * @param options - Optional extraction options
434
+ * @param timeout - Optional timeout in milliseconds
435
+ * @returns Promise resolving to extracted markdown
436
+ */
437
+ async extractMarkdownInWorker(documentPath, pageIndex, options, timeout) {
438
+ const { workerPool } = await import('../workers/index.js');
439
+ const result = await workerPool.runTask({
440
+ operation: 'extract',
441
+ documentPath,
442
+ params: {
443
+ type: 'markdown',
444
+ pageIndex,
445
+ options: options || {},
446
+ },
447
+ }, timeout);
448
+ if (!result.success) {
449
+ throw new Error(`Worker extraction failed: ${result.error instanceof Error ? result.error.message : String(result.error)}`);
450
+ }
451
+ return result.data;
452
+ }
453
+ /**
454
+ * Extract HTML from a page in a worker thread (non-blocking)
455
+ * @param documentPath - Path to the PDF document
456
+ * @param pageIndex - Page index to extract from
457
+ * @param options - Optional extraction options
458
+ * @param timeout - Optional timeout in milliseconds
459
+ * @returns Promise resolving to extracted HTML
460
+ */
461
+ async extractHtmlInWorker(documentPath, pageIndex, options, timeout) {
462
+ const { workerPool } = await import('../workers/index.js');
463
+ const result = await workerPool.runTask({
464
+ operation: 'extract',
465
+ documentPath,
466
+ params: {
467
+ type: 'html',
468
+ pageIndex,
469
+ options: options || {},
470
+ },
471
+ }, timeout);
472
+ if (!result.success) {
473
+ throw new Error(`Worker extraction failed: ${result.error instanceof Error ? result.error.message : String(result.error)}`);
474
+ }
475
+ return result.data;
476
+ }
477
+ }
478
+ //# sourceMappingURL=extraction-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction-manager.js","sourceRoot":"","sources":["../../src/managers/extraction-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { EventEmitter } from 'events';
2
+ export declare enum EventType {
3
+ PAGE_LOADED = "page_loaded",
4
+ PAGE_RENDERED = "page_rendered",
5
+ CONTENT_PARSED = "content_parsed",
6
+ SEARCH_COMPLETED = "search_completed",
7
+ ERROR_OCCURRED = "error_occurred",
8
+ PROCESSING_STARTED = "processing_started",
9
+ PROCESSING_COMPLETED = "processing_completed"
10
+ }
11
+ export declare enum EncryptionAlgorithm {
12
+ AES_128 = "aes_128",
13
+ AES_256 = "aes_256",
14
+ RC4_40 = "rc4_40",
15
+ RC4_128 = "rc4_128"
16
+ }
17
+ export declare enum CompressionLevel {
18
+ NONE = 0,
19
+ FAST = 3,
20
+ BALANCED = 6,
21
+ BEST = 9
22
+ }
23
+ export interface DocumentEvent {
24
+ eventType: EventType;
25
+ timestamp: number;
26
+ data: Record<string, any>;
27
+ pageIndex?: number;
28
+ }
29
+ export interface EncryptionSettings {
30
+ algorithm: EncryptionAlgorithm;
31
+ userPassword: string;
32
+ ownerPassword: string;
33
+ allowPrinting: boolean;
34
+ allowCopying: boolean;
35
+ allowModification: boolean;
36
+ }
37
+ export interface CompressionSettings {
38
+ level: CompressionLevel;
39
+ compressImages: boolean;
40
+ compressStreams: boolean;
41
+ compressFonts: boolean;
42
+ removeDuplicates: boolean;
43
+ }
44
+ export declare class EventManager extends EventEmitter {
45
+ private document;
46
+ private eventListeners;
47
+ constructor(document: any);
48
+ addEventListener(eventType: EventType, handler: Function): Promise<boolean>;
49
+ removeEventListener(eventType: EventType, handler: Function): Promise<boolean>;
50
+ emitEvent(event: DocumentEvent): Promise<boolean>;
51
+ hasListener(eventType: EventType): Promise<boolean>;
52
+ getListenerCount(eventType: EventType): Promise<number>;
53
+ clearListeners(eventType?: EventType): Promise<boolean>;
54
+ getEventHistory(): Promise<DocumentEvent[]>;
55
+ enableEventLogging(enabled: boolean): Promise<boolean>;
56
+ getEventStatistics(): Promise<Record<string, any>>;
57
+ waitForEvent(eventType: EventType, timeoutSec?: number): Promise<DocumentEvent | null>;
58
+ }
59
+ export declare class EncryptionManager extends EventEmitter {
60
+ private document;
61
+ private encryptionSettings;
62
+ constructor(document: any);
63
+ encryptDocument(settings: EncryptionSettings): Promise<boolean>;
64
+ decryptDocument(password: string): Promise<boolean>;
65
+ changeEncryption(newSettings: EncryptionSettings): Promise<boolean>;
66
+ getEncryptionAlgorithm(): Promise<string | null>;
67
+ isDocumentEncrypted(): Promise<boolean>;
68
+ removeEncryption(ownerPassword: string): Promise<boolean>;
69
+ setUserPassword(password: string): Promise<boolean>;
70
+ setOwnerPassword(password: string): Promise<boolean>;
71
+ validatePassword(password: string): Promise<boolean>;
72
+ getPermissions(): Promise<Record<string, boolean>>;
73
+ setPermissions(permissions: Record<string, boolean>): Promise<boolean>;
74
+ exportCertificate(outputPath: string): Promise<boolean>;
75
+ importCertificate(certPath: string): Promise<boolean>;
76
+ encryptionStatus(): Promise<Record<string, any>>;
77
+ }
78
+ export declare class CompressionManager extends EventEmitter {
79
+ private document;
80
+ private compressionSettings;
81
+ constructor(document: any);
82
+ compressDocument(settings: CompressionSettings): Promise<boolean>;
83
+ compressImages(quality?: number): Promise<boolean>;
84
+ compressStreams(): Promise<boolean>;
85
+ compressPage(pageIndex: number, settings: CompressionSettings): Promise<boolean>;
86
+ getCompressionRatio(): Promise<number | null>;
87
+ estimateCompression(settings: CompressionSettings): Promise<number | null>;
88
+ decompressDocument(): Promise<boolean>;
89
+ isCompressed(): Promise<boolean>;
90
+ getCompressionReport(): Promise<Record<string, any>>;
91
+ optimizeForWeb(): Promise<boolean>;
92
+ optimizeForPrint(): Promise<boolean>;
93
+ }
94
+ export declare class CustomAnnotationManager extends EventEmitter {
95
+ private document;
96
+ private customAnnotations;
97
+ constructor(document: any);
98
+ createCustomAnnotation(annotationType: string, properties: Record<string, any>): Promise<string | null>;
99
+ registerAnnotationType(typeName: string, handler: Function): Promise<boolean>;
100
+ modifyAnnotation(annotationId: string, properties: Record<string, any>): Promise<boolean>;
101
+ deleteCustomAnnotation(annotationId: string): Promise<boolean>;
102
+ getCustomAnnotations(pageIndex: number): Promise<Record<string, any>[]>;
103
+ setAnnotationVisibility(annotationId: string, visible: boolean): Promise<boolean>;
104
+ exportAnnotations(outputPath: string): Promise<boolean>;
105
+ importAnnotations(inputPath: string): Promise<boolean>;
106
+ applyAnnotationStyle(annotationId: string, style: Record<string, any>): Promise<boolean>;
107
+ getAnnotationMetadata(annotationId: string): Promise<Record<string, any> | null>;
108
+ replyToAnnotation(annotationId: string, replyText: string): Promise<boolean>;
109
+ getAnnotationReplies(annotationId: string): Promise<string[]>;
110
+ flattenAnnotations(): Promise<boolean>;
111
+ convertAnnotations(targetFormat: string): Promise<boolean>;
112
+ }
113
+ export declare class ContentSecurityManager extends EventEmitter {
114
+ private document;
115
+ private accessPolicies;
116
+ constructor(document: any);
117
+ setAccessControl(policyName: string, restrictions: Record<string, any>): Promise<boolean>;
118
+ validateAccess(userRole: string, action: string): Promise<boolean>;
119
+ applyDigitalRights(rights: Record<string, boolean>): Promise<boolean>;
120
+ sanitizeContent(removeScripts?: boolean, removeEmbedded?: boolean): Promise<boolean>;
121
+ detectSuspiciousContent(): Promise<Record<string, any>[]>;
122
+ getAccessLog(): Promise<Record<string, any>[]>;
123
+ setExpirationDate(expirationDate: string): Promise<boolean>;
124
+ enableWatermarking(watermarkText: string): Promise<boolean>;
125
+ trackDocumentUsage(enabled: boolean): Promise<boolean>;
126
+ getSecurityAudit(): Promise<Record<string, any>>;
127
+ }
128
+ //# sourceMappingURL=final-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"final-utilities.d.ts","sourceRoot":"","sources":["../../src/managers/final-utilities.ts"],"names":[],"mappings":"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"}