pdf-oxide 0.3.24 → 0.3.29

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,345 +0,0 @@
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
-
22
- export interface PermissionsSummary {
23
- canPrint: boolean;
24
- canCopy: boolean;
25
- canModify: boolean;
26
- canAnnotate: boolean;
27
- canFillForms: boolean;
28
- isViewOnly: boolean;
29
- isEncrypted: boolean;
30
- requiresPassword: boolean;
31
- encryptionAlgorithm: string | null;
32
- }
33
-
34
- export interface SecurityLevel {
35
- level: 'high' | 'medium' | 'low' | 'none';
36
- description: string;
37
- isEncrypted: boolean;
38
- algorithm: string | null;
39
- restrictedAccess: boolean;
40
- }
41
-
42
- export interface AccessibilityValidation {
43
- canExtractText: boolean;
44
- canExtractImages: boolean;
45
- canAnalyzeContent: boolean;
46
- canSearch: boolean;
47
- canViewContent: boolean;
48
- isAccessible: boolean;
49
- issues: string[];
50
- }
51
-
52
- export class SecurityManager {
53
- private _document: any;
54
-
55
- /**
56
- * Creates a new SecurityManager for the given document
57
- * @param document - The PDF document
58
- * @throws Error if document is null or undefined
59
- */
60
- constructor(document: any) {
61
- if (!document) {
62
- throw new Error('Document is required');
63
- }
64
- this._document = document;
65
- }
66
-
67
- /**
68
- * Checks if the document is encrypted
69
- * @returns True if document is encrypted
70
- */
71
- isEncrypted(): boolean {
72
- try {
73
- return this._document.isEncrypted();
74
- } catch (error) {
75
- return false;
76
- }
77
- }
78
-
79
- /**
80
- * Checks if document requires a password
81
- * @returns True if password is required to open
82
- */
83
- requiresPassword(): boolean {
84
- return this.isEncrypted();
85
- }
86
-
87
- /**
88
- * Gets encryption algorithm used
89
- * @returns Encryption algorithm (e.g., 'RC4', 'AES-128', 'AES-256') or null
90
- */
91
- getEncryptionAlgorithm(): string | null {
92
- try {
93
- if (!this.isEncrypted()) return null;
94
- return this._document.getEncryptionAlgorithm() || null;
95
- } catch (error) {
96
- return null;
97
- }
98
- }
99
-
100
- /**
101
- * Checks if user can print the document
102
- * @returns True if printing is allowed
103
- */
104
- canPrint(): boolean {
105
- try {
106
- return this._document.canPrint();
107
- } catch (error) {
108
- return true;
109
- }
110
- }
111
-
112
- /**
113
- * Checks if user can copy text from document
114
- * @returns True if copying is allowed
115
- */
116
- canCopy(): boolean {
117
- try {
118
- return this._document.canCopy();
119
- } catch (error) {
120
- return true;
121
- }
122
- }
123
-
124
- /**
125
- * Checks if user can modify the document
126
- * @returns True if modification is allowed
127
- */
128
- canModify(): boolean {
129
- try {
130
- return this._document.canModify();
131
- } catch (error) {
132
- return true;
133
- }
134
- }
135
-
136
- /**
137
- * Checks if user can add or modify annotations
138
- * @returns True if annotation modification is allowed
139
- */
140
- canAnnotate(): boolean {
141
- try {
142
- return this._document.canAnnotate();
143
- } catch (error) {
144
- return true;
145
- }
146
- }
147
-
148
- /**
149
- * Checks if user can fill form fields
150
- * @returns True if form filling is allowed
151
- */
152
- canFillForms(): boolean {
153
- try {
154
- return this._document.canFillForms();
155
- } catch (error) {
156
- return true;
157
- }
158
- }
159
-
160
- /**
161
- * Checks if document is view-only
162
- * @returns True if no modifications are allowed
163
- */
164
- isViewOnly(): boolean {
165
- return !this.canModify() && !this.canCopy() && !this.canAnnotate();
166
- }
167
-
168
- /**
169
- * Gets all permissions as a summary object
170
- * @returns Permissions summary
171
- *
172
- * @example
173
- * ```typescript
174
- * const perms = manager.getPermissionsSummary();
175
- * console.log(JSON.stringify(perms, null, 2));
176
- * // {
177
- * // canPrint: true,
178
- * // canCopy: true,
179
- * // canModify: false,
180
- * // canAnnotate: true,
181
- * // canFillForms: true,
182
- * // isViewOnly: false,
183
- * // isEncrypted: true
184
- * // }
185
- * ```
186
- */
187
- getPermissionsSummary(): PermissionsSummary {
188
- return {
189
- canPrint: this.canPrint(),
190
- canCopy: this.canCopy(),
191
- canModify: this.canModify(),
192
- canAnnotate: this.canAnnotate(),
193
- canFillForms: this.canFillForms(),
194
- isViewOnly: this.isViewOnly(),
195
- isEncrypted: this.isEncrypted(),
196
- requiresPassword: this.requiresPassword(),
197
- encryptionAlgorithm: this.getEncryptionAlgorithm(),
198
- };
199
- }
200
-
201
- /**
202
- * Gets security level information
203
- * @returns Security level details
204
- *
205
- * @example
206
- * ```typescript
207
- * const secLevel = manager.getSecurityLevel();
208
- * console.log(`Security level: ${secLevel.level}`); // 'high', 'medium', 'low', 'none'
209
- * ```
210
- */
211
- getSecurityLevel(): SecurityLevel {
212
- const isEncrypted = this.isEncrypted();
213
- const algorithm = this.getEncryptionAlgorithm();
214
-
215
- let level: 'high' | 'medium' | 'low' | 'none' = 'none';
216
- let description = 'No encryption';
217
-
218
- if (isEncrypted) {
219
- if (algorithm === 'AES-256') {
220
- level = 'high';
221
- description = 'AES-256 encryption';
222
- } else if (algorithm === 'AES-128') {
223
- level = 'medium';
224
- description = 'AES-128 encryption';
225
- } else if (algorithm === 'RC4') {
226
- level = 'low';
227
- description = 'RC4 encryption (deprecated)';
228
- } else {
229
- level = 'medium';
230
- description = 'Encrypted with unknown algorithm';
231
- }
232
-
233
- // Reduce level if permissions are very restrictive
234
- if (this.isViewOnly()) {
235
- description += ' (read-only)';
236
- }
237
- }
238
-
239
- return {
240
- level,
241
- description,
242
- isEncrypted,
243
- algorithm,
244
- restrictedAccess: !this.canModify() && !this.canCopy(),
245
- };
246
- }
247
-
248
- /**
249
- * Validates document accessibility based on security settings
250
- * @returns Accessibility validation result
251
- *
252
- * @example
253
- * ```typescript
254
- * const validation = manager.validateAccessibility();
255
- * if (!validation.canExtractText) {
256
- * console.log('Warning: Document does not allow text extraction');
257
- * }
258
- * ```
259
- */
260
- validateAccessibility(): AccessibilityValidation {
261
- return {
262
- canExtractText: this.canCopy(),
263
- canExtractImages: this.canCopy(),
264
- canAnalyzeContent: this.canCopy(),
265
- canSearch: true, // Always allowed
266
- canViewContent: true, // Always allowed
267
- isAccessible: this.canCopy(),
268
- issues: this.getAccessibilityIssues(),
269
- };
270
- }
271
-
272
- /**
273
- * Gets list of accessibility issues
274
- * @returns Array of accessibility issues
275
- * @private
276
- */
277
- private getAccessibilityIssues(): string[] {
278
- const issues: string[] = [];
279
-
280
- if (this.isEncrypted()) {
281
- issues.push('Document is encrypted');
282
- }
283
-
284
- if (this.requiresPassword()) {
285
- issues.push('Document requires password');
286
- }
287
-
288
- if (!this.canCopy()) {
289
- issues.push('Text extraction is restricted');
290
- }
291
-
292
- if (!this.canModify()) {
293
- issues.push('Document modification is restricted');
294
- }
295
-
296
- if (!this.canPrint()) {
297
- issues.push('Printing is restricted');
298
- }
299
-
300
- if (!this.canAnnotate()) {
301
- issues.push('Annotation is restricted');
302
- }
303
-
304
- return issues;
305
- }
306
-
307
- /**
308
- * Generates security report
309
- * @returns Human-readable security report
310
- *
311
- * @example
312
- * ```typescript
313
- * console.log(manager.generateSecurityReport());
314
- * ```
315
- */
316
- generateSecurityReport(): string {
317
- const lines: string[] = [];
318
- const perms = this.getPermissionsSummary();
319
- const secLevel = this.getSecurityLevel();
320
-
321
- lines.push('=== PDF Security Report ===\n');
322
-
323
- lines.push(`Encryption Status: ${perms.isEncrypted ? 'Encrypted' : 'Not encrypted'}`);
324
- if (perms.isEncrypted) {
325
- lines.push(` Algorithm: ${perms.encryptionAlgorithm || 'Unknown'}`);
326
- lines.push(` Requires Password: ${perms.requiresPassword}`);
327
- }
328
-
329
- lines.push(`\nSecurity Level: ${secLevel.level.toUpperCase()}`);
330
- lines.push(` Description: ${secLevel.description}`);
331
-
332
- lines.push('\nAccess Permissions:');
333
- lines.push(` Print: ${perms.canPrint ? 'Allowed' : 'Restricted'}`);
334
- lines.push(` Copy: ${perms.canCopy ? 'Allowed' : 'Restricted'}`);
335
- lines.push(` Modify: ${perms.canModify ? 'Allowed' : 'Restricted'}`);
336
- lines.push(` Annotate: ${perms.canAnnotate ? 'Allowed' : 'Restricted'}`);
337
- lines.push(` Fill Forms: ${perms.canFillForms ? 'Allowed' : 'Restricted'}`);
338
-
339
- if (perms.isViewOnly) {
340
- lines.push('\n⚠️ WARNING: Document is VIEW-ONLY');
341
- }
342
-
343
- return lines.join('\n');
344
- }
345
- }