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,162 @@
1
+ /**
2
+ * Manager for PDF document security and encryption
3
+ *
4
+ * Provides methods to check document encryption status, access permissions,
5
+ * and security properties.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { SecurityManager } from 'pdf_oxide';
10
+ *
11
+ * const doc = PdfDocument.open('document.pdf');
12
+ * const securityManager = new SecurityManager(doc);
13
+ *
14
+ * if (securityManager.isEncrypted()) {
15
+ * console.log('Document is encrypted');
16
+ * console.log(`Can print: ${securityManager.canPrint()}`);
17
+ * console.log(`Can modify: ${securityManager.canModify()}`);
18
+ * }
19
+ * ```
20
+ */
21
+ export interface PermissionsSummary {
22
+ canPrint: boolean;
23
+ canCopy: boolean;
24
+ canModify: boolean;
25
+ canAnnotate: boolean;
26
+ canFillForms: boolean;
27
+ isViewOnly: boolean;
28
+ isEncrypted: boolean;
29
+ requiresPassword: boolean;
30
+ encryptionAlgorithm: string | null;
31
+ }
32
+ export interface SecurityLevel {
33
+ level: 'high' | 'medium' | 'low' | 'none';
34
+ description: string;
35
+ isEncrypted: boolean;
36
+ algorithm: string | null;
37
+ restrictedAccess: boolean;
38
+ }
39
+ export interface AccessibilityValidation {
40
+ canExtractText: boolean;
41
+ canExtractImages: boolean;
42
+ canAnalyzeContent: boolean;
43
+ canSearch: boolean;
44
+ canViewContent: boolean;
45
+ isAccessible: boolean;
46
+ issues: string[];
47
+ }
48
+ export declare class SecurityManager {
49
+ private _document;
50
+ /**
51
+ * Creates a new SecurityManager for the given document
52
+ * @param document - The PDF document
53
+ * @throws Error if document is null or undefined
54
+ */
55
+ constructor(document: any);
56
+ /**
57
+ * Checks if the document is encrypted
58
+ * @returns True if document is encrypted
59
+ */
60
+ isEncrypted(): boolean;
61
+ /**
62
+ * Checks if document requires a password
63
+ * @returns True if password is required to open
64
+ */
65
+ requiresPassword(): boolean;
66
+ /**
67
+ * Gets encryption algorithm used
68
+ * @returns Encryption algorithm (e.g., 'RC4', 'AES-128', 'AES-256') or null
69
+ */
70
+ getEncryptionAlgorithm(): string | null;
71
+ /**
72
+ * Checks if user can print the document
73
+ * @returns True if printing is allowed
74
+ */
75
+ canPrint(): boolean;
76
+ /**
77
+ * Checks if user can copy text from document
78
+ * @returns True if copying is allowed
79
+ */
80
+ canCopy(): boolean;
81
+ /**
82
+ * Checks if user can modify the document
83
+ * @returns True if modification is allowed
84
+ */
85
+ canModify(): boolean;
86
+ /**
87
+ * Checks if user can add or modify annotations
88
+ * @returns True if annotation modification is allowed
89
+ */
90
+ canAnnotate(): boolean;
91
+ /**
92
+ * Checks if user can fill form fields
93
+ * @returns True if form filling is allowed
94
+ */
95
+ canFillForms(): boolean;
96
+ /**
97
+ * Checks if document is view-only
98
+ * @returns True if no modifications are allowed
99
+ */
100
+ isViewOnly(): boolean;
101
+ /**
102
+ * Gets all permissions as a summary object
103
+ * @returns Permissions summary
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const perms = manager.getPermissionsSummary();
108
+ * console.log(JSON.stringify(perms, null, 2));
109
+ * // {
110
+ * // canPrint: true,
111
+ * // canCopy: true,
112
+ * // canModify: false,
113
+ * // canAnnotate: true,
114
+ * // canFillForms: true,
115
+ * // isViewOnly: false,
116
+ * // isEncrypted: true
117
+ * // }
118
+ * ```
119
+ */
120
+ getPermissionsSummary(): PermissionsSummary;
121
+ /**
122
+ * Gets security level information
123
+ * @returns Security level details
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * const secLevel = manager.getSecurityLevel();
128
+ * console.log(`Security level: ${secLevel.level}`); // 'high', 'medium', 'low', 'none'
129
+ * ```
130
+ */
131
+ getSecurityLevel(): SecurityLevel;
132
+ /**
133
+ * Validates document accessibility based on security settings
134
+ * @returns Accessibility validation result
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const validation = manager.validateAccessibility();
139
+ * if (!validation.canExtractText) {
140
+ * console.log('Warning: Document does not allow text extraction');
141
+ * }
142
+ * ```
143
+ */
144
+ validateAccessibility(): AccessibilityValidation;
145
+ /**
146
+ * Gets list of accessibility issues
147
+ * @returns Array of accessibility issues
148
+ * @private
149
+ */
150
+ private getAccessibilityIssues;
151
+ /**
152
+ * Generates security report
153
+ * @returns Human-readable security report
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * console.log(manager.generateSecurityReport());
158
+ * ```
159
+ */
160
+ generateSecurityReport(): string;
161
+ }
162
+ //# sourceMappingURL=security-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-manager.d.ts","sourceRoot":"","sources":["../../src/managers/security-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAM;IAEvB;;;;OAIG;gBACS,QAAQ,EAAE,GAAG;IAOzB;;;OAGG;IACH,WAAW,IAAI,OAAO;IAQtB;;;OAGG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,IAAI;IASvC;;;OAGG;IACH,QAAQ,IAAI,OAAO;IAQnB;;;OAGG;IACH,OAAO,IAAI,OAAO;IAQlB;;;OAGG;IACH,SAAS,IAAI,OAAO;IAQpB;;;OAGG;IACH,WAAW,IAAI,OAAO;IAQtB;;;OAGG;IACH,YAAY,IAAI,OAAO;IAQvB;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBAAqB,IAAI,kBAAkB;IAc3C;;;;;;;;;OASG;IACH,gBAAgB,IAAI,aAAa;IAqCjC;;;;;;;;;;;OAWG;IACH,qBAAqB,IAAI,uBAAuB;IAYhD;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;;;;;;;OAQG;IACH,sBAAsB,IAAI,MAAM;CA6BjC"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * Manager for PDF document security and encryption
3
+ *
4
+ * Provides methods to check document encryption status, access permissions,
5
+ * and security properties.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { SecurityManager } from 'pdf_oxide';
10
+ *
11
+ * const doc = PdfDocument.open('document.pdf');
12
+ * const securityManager = new SecurityManager(doc);
13
+ *
14
+ * if (securityManager.isEncrypted()) {
15
+ * console.log('Document is encrypted');
16
+ * console.log(`Can print: ${securityManager.canPrint()}`);
17
+ * console.log(`Can modify: ${securityManager.canModify()}`);
18
+ * }
19
+ * ```
20
+ */
21
+ export class SecurityManager {
22
+ /**
23
+ * Creates a new SecurityManager for the given document
24
+ * @param document - The PDF document
25
+ * @throws Error if document is null or undefined
26
+ */
27
+ constructor(document) {
28
+ if (!document) {
29
+ throw new Error('Document is required');
30
+ }
31
+ this._document = document;
32
+ }
33
+ /**
34
+ * Checks if the document is encrypted
35
+ * @returns True if document is encrypted
36
+ */
37
+ isEncrypted() {
38
+ try {
39
+ return this._document.isEncrypted();
40
+ }
41
+ catch (error) {
42
+ return false;
43
+ }
44
+ }
45
+ /**
46
+ * Checks if document requires a password
47
+ * @returns True if password is required to open
48
+ */
49
+ requiresPassword() {
50
+ return this.isEncrypted();
51
+ }
52
+ /**
53
+ * Gets encryption algorithm used
54
+ * @returns Encryption algorithm (e.g., 'RC4', 'AES-128', 'AES-256') or null
55
+ */
56
+ getEncryptionAlgorithm() {
57
+ try {
58
+ if (!this.isEncrypted())
59
+ return null;
60
+ return this._document.getEncryptionAlgorithm() || null;
61
+ }
62
+ catch (error) {
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Checks if user can print the document
68
+ * @returns True if printing is allowed
69
+ */
70
+ canPrint() {
71
+ try {
72
+ return this._document.canPrint();
73
+ }
74
+ catch (error) {
75
+ return true;
76
+ }
77
+ }
78
+ /**
79
+ * Checks if user can copy text from document
80
+ * @returns True if copying is allowed
81
+ */
82
+ canCopy() {
83
+ try {
84
+ return this._document.canCopy();
85
+ }
86
+ catch (error) {
87
+ return true;
88
+ }
89
+ }
90
+ /**
91
+ * Checks if user can modify the document
92
+ * @returns True if modification is allowed
93
+ */
94
+ canModify() {
95
+ try {
96
+ return this._document.canModify();
97
+ }
98
+ catch (error) {
99
+ return true;
100
+ }
101
+ }
102
+ /**
103
+ * Checks if user can add or modify annotations
104
+ * @returns True if annotation modification is allowed
105
+ */
106
+ canAnnotate() {
107
+ try {
108
+ return this._document.canAnnotate();
109
+ }
110
+ catch (error) {
111
+ return true;
112
+ }
113
+ }
114
+ /**
115
+ * Checks if user can fill form fields
116
+ * @returns True if form filling is allowed
117
+ */
118
+ canFillForms() {
119
+ try {
120
+ return this._document.canFillForms();
121
+ }
122
+ catch (error) {
123
+ return true;
124
+ }
125
+ }
126
+ /**
127
+ * Checks if document is view-only
128
+ * @returns True if no modifications are allowed
129
+ */
130
+ isViewOnly() {
131
+ return !this.canModify() && !this.canCopy() && !this.canAnnotate();
132
+ }
133
+ /**
134
+ * Gets all permissions as a summary object
135
+ * @returns Permissions summary
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const perms = manager.getPermissionsSummary();
140
+ * console.log(JSON.stringify(perms, null, 2));
141
+ * // {
142
+ * // canPrint: true,
143
+ * // canCopy: true,
144
+ * // canModify: false,
145
+ * // canAnnotate: true,
146
+ * // canFillForms: true,
147
+ * // isViewOnly: false,
148
+ * // isEncrypted: true
149
+ * // }
150
+ * ```
151
+ */
152
+ getPermissionsSummary() {
153
+ return {
154
+ canPrint: this.canPrint(),
155
+ canCopy: this.canCopy(),
156
+ canModify: this.canModify(),
157
+ canAnnotate: this.canAnnotate(),
158
+ canFillForms: this.canFillForms(),
159
+ isViewOnly: this.isViewOnly(),
160
+ isEncrypted: this.isEncrypted(),
161
+ requiresPassword: this.requiresPassword(),
162
+ encryptionAlgorithm: this.getEncryptionAlgorithm(),
163
+ };
164
+ }
165
+ /**
166
+ * Gets security level information
167
+ * @returns Security level details
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * const secLevel = manager.getSecurityLevel();
172
+ * console.log(`Security level: ${secLevel.level}`); // 'high', 'medium', 'low', 'none'
173
+ * ```
174
+ */
175
+ getSecurityLevel() {
176
+ const isEncrypted = this.isEncrypted();
177
+ const algorithm = this.getEncryptionAlgorithm();
178
+ let level = 'none';
179
+ let description = 'No encryption';
180
+ if (isEncrypted) {
181
+ if (algorithm === 'AES-256') {
182
+ level = 'high';
183
+ description = 'AES-256 encryption';
184
+ }
185
+ else if (algorithm === 'AES-128') {
186
+ level = 'medium';
187
+ description = 'AES-128 encryption';
188
+ }
189
+ else if (algorithm === 'RC4') {
190
+ level = 'low';
191
+ description = 'RC4 encryption (deprecated)';
192
+ }
193
+ else {
194
+ level = 'medium';
195
+ description = 'Encrypted with unknown algorithm';
196
+ }
197
+ // Reduce level if permissions are very restrictive
198
+ if (this.isViewOnly()) {
199
+ description += ' (read-only)';
200
+ }
201
+ }
202
+ return {
203
+ level,
204
+ description,
205
+ isEncrypted,
206
+ algorithm,
207
+ restrictedAccess: !this.canModify() && !this.canCopy(),
208
+ };
209
+ }
210
+ /**
211
+ * Validates document accessibility based on security settings
212
+ * @returns Accessibility validation result
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * const validation = manager.validateAccessibility();
217
+ * if (!validation.canExtractText) {
218
+ * console.log('Warning: Document does not allow text extraction');
219
+ * }
220
+ * ```
221
+ */
222
+ validateAccessibility() {
223
+ return {
224
+ canExtractText: this.canCopy(),
225
+ canExtractImages: this.canCopy(),
226
+ canAnalyzeContent: this.canCopy(),
227
+ canSearch: true, // Always allowed
228
+ canViewContent: true, // Always allowed
229
+ isAccessible: this.canCopy(),
230
+ issues: this.getAccessibilityIssues(),
231
+ };
232
+ }
233
+ /**
234
+ * Gets list of accessibility issues
235
+ * @returns Array of accessibility issues
236
+ * @private
237
+ */
238
+ getAccessibilityIssues() {
239
+ const issues = [];
240
+ if (this.isEncrypted()) {
241
+ issues.push('Document is encrypted');
242
+ }
243
+ if (this.requiresPassword()) {
244
+ issues.push('Document requires password');
245
+ }
246
+ if (!this.canCopy()) {
247
+ issues.push('Text extraction is restricted');
248
+ }
249
+ if (!this.canModify()) {
250
+ issues.push('Document modification is restricted');
251
+ }
252
+ if (!this.canPrint()) {
253
+ issues.push('Printing is restricted');
254
+ }
255
+ if (!this.canAnnotate()) {
256
+ issues.push('Annotation is restricted');
257
+ }
258
+ return issues;
259
+ }
260
+ /**
261
+ * Generates security report
262
+ * @returns Human-readable security report
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * console.log(manager.generateSecurityReport());
267
+ * ```
268
+ */
269
+ generateSecurityReport() {
270
+ const lines = [];
271
+ const perms = this.getPermissionsSummary();
272
+ const secLevel = this.getSecurityLevel();
273
+ lines.push('=== PDF Security Report ===\n');
274
+ lines.push(`Encryption Status: ${perms.isEncrypted ? 'Encrypted' : 'Not encrypted'}`);
275
+ if (perms.isEncrypted) {
276
+ lines.push(` Algorithm: ${perms.encryptionAlgorithm || 'Unknown'}`);
277
+ lines.push(` Requires Password: ${perms.requiresPassword}`);
278
+ }
279
+ lines.push(`\nSecurity Level: ${secLevel.level.toUpperCase()}`);
280
+ lines.push(` Description: ${secLevel.description}`);
281
+ lines.push('\nAccess Permissions:');
282
+ lines.push(` Print: ${perms.canPrint ? 'Allowed' : 'Restricted'}`);
283
+ lines.push(` Copy: ${perms.canCopy ? 'Allowed' : 'Restricted'}`);
284
+ lines.push(` Modify: ${perms.canModify ? 'Allowed' : 'Restricted'}`);
285
+ lines.push(` Annotate: ${perms.canAnnotate ? 'Allowed' : 'Restricted'}`);
286
+ lines.push(` Fill Forms: ${perms.canFillForms ? 'Allowed' : 'Restricted'}`);
287
+ if (perms.isViewOnly) {
288
+ lines.push('\n⚠️ WARNING: Document is VIEW-ONLY');
289
+ }
290
+ return lines.join('\n');
291
+ }
292
+ }
293
+ //# sourceMappingURL=security-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-manager.js","sourceRoot":"","sources":["../../src/managers/security-manager.ts"],"names":[],"mappings":"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"}