pdf-lite 1.0.0

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 (206) hide show
  1. package/.commitlintrc.cjs +25 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  4. package/.github/workflows/docs.yaml +93 -0
  5. package/.github/workflows/prepare-release.yaml +79 -0
  6. package/.github/workflows/release.yaml +80 -0
  7. package/.github/workflows/test.yaml +35 -0
  8. package/.husky/commit-msg +1 -0
  9. package/.husky/pre-commit +1 -0
  10. package/.prettierignore +4 -0
  11. package/.prettierrc +4 -0
  12. package/CONTRIBUTING.md +109 -0
  13. package/EXAMPLES.md +1515 -0
  14. package/LICENSE +21 -0
  15. package/README.md +285 -0
  16. package/examples/001-create-pdf.ts +112 -0
  17. package/examples/002-create-encrypted-pdf.ts +121 -0
  18. package/examples/003-sign-pdf.ts +347 -0
  19. package/examples/004-incremental-update.ts +206 -0
  20. package/examples/005-modify-acroform.ts +374 -0
  21. package/examples/006-tokeniser-example.ts +131 -0
  22. package/examples/007-decoder-example.ts +197 -0
  23. package/package.json +72 -0
  24. package/packages/pdf-lite/README.md +3 -0
  25. package/packages/pdf-lite/package.json +68 -0
  26. package/packages/pdf-lite/scripts/create-encryption-tests.sh +41 -0
  27. package/packages/pdf-lite/scripts/gen-signing-keys.sh +290 -0
  28. package/packages/pdf-lite/scripts/generate-all-signing-keys.sh +70 -0
  29. package/packages/pdf-lite/src/core/decoder.ts +454 -0
  30. package/packages/pdf-lite/src/core/generators.ts +128 -0
  31. package/packages/pdf-lite/src/core/incremental-parser.ts +221 -0
  32. package/packages/pdf-lite/src/core/index.ts +2 -0
  33. package/packages/pdf-lite/src/core/objects/pdf-array.ts +54 -0
  34. package/packages/pdf-lite/src/core/objects/pdf-boolean.ts +19 -0
  35. package/packages/pdf-lite/src/core/objects/pdf-comment.ts +50 -0
  36. package/packages/pdf-lite/src/core/objects/pdf-date.ts +74 -0
  37. package/packages/pdf-lite/src/core/objects/pdf-dictionary.ts +171 -0
  38. package/packages/pdf-lite/src/core/objects/pdf-hexadecimal.ts +54 -0
  39. package/packages/pdf-lite/src/core/objects/pdf-indirect-object.ts +137 -0
  40. package/packages/pdf-lite/src/core/objects/pdf-name.ts +19 -0
  41. package/packages/pdf-lite/src/core/objects/pdf-null.ts +15 -0
  42. package/packages/pdf-lite/src/core/objects/pdf-number.ts +98 -0
  43. package/packages/pdf-lite/src/core/objects/pdf-object-reference.ts +30 -0
  44. package/packages/pdf-lite/src/core/objects/pdf-object.ts +107 -0
  45. package/packages/pdf-lite/src/core/objects/pdf-start-xref.ts +39 -0
  46. package/packages/pdf-lite/src/core/objects/pdf-stream.ts +687 -0
  47. package/packages/pdf-lite/src/core/objects/pdf-string.ts +38 -0
  48. package/packages/pdf-lite/src/core/objects/pdf-trailer.ts +57 -0
  49. package/packages/pdf-lite/src/core/objects/pdf-xref-table.ts +264 -0
  50. package/packages/pdf-lite/src/core/parser.ts +22 -0
  51. package/packages/pdf-lite/src/core/ref.ts +102 -0
  52. package/packages/pdf-lite/src/core/serializer.ts +68 -0
  53. package/packages/pdf-lite/src/core/streams/object-stream.ts +20 -0
  54. package/packages/pdf-lite/src/core/tokeniser.ts +687 -0
  55. package/packages/pdf-lite/src/core/tokens/boolean-token.ts +20 -0
  56. package/packages/pdf-lite/src/core/tokens/byte-offset-token.ts +20 -0
  57. package/packages/pdf-lite/src/core/tokens/comment-token.ts +32 -0
  58. package/packages/pdf-lite/src/core/tokens/end-array-token.ts +10 -0
  59. package/packages/pdf-lite/src/core/tokens/end-dictionary-token.ts +10 -0
  60. package/packages/pdf-lite/src/core/tokens/end-object-token.ts +10 -0
  61. package/packages/pdf-lite/src/core/tokens/end-stream-token.ts +11 -0
  62. package/packages/pdf-lite/src/core/tokens/hexadecimal-token.ts +22 -0
  63. package/packages/pdf-lite/src/core/tokens/name-token.ts +19 -0
  64. package/packages/pdf-lite/src/core/tokens/null-token.ts +9 -0
  65. package/packages/pdf-lite/src/core/tokens/number-token.ts +164 -0
  66. package/packages/pdf-lite/src/core/tokens/object-reference-token.ts +24 -0
  67. package/packages/pdf-lite/src/core/tokens/start-array-token.ts +10 -0
  68. package/packages/pdf-lite/src/core/tokens/start-dictionary-token.ts +10 -0
  69. package/packages/pdf-lite/src/core/tokens/start-object-token.ts +28 -0
  70. package/packages/pdf-lite/src/core/tokens/start-stream-token.ts +52 -0
  71. package/packages/pdf-lite/src/core/tokens/start-xref-token.ts +10 -0
  72. package/packages/pdf-lite/src/core/tokens/stream-chunk-token.ts +8 -0
  73. package/packages/pdf-lite/src/core/tokens/string-token.ts +17 -0
  74. package/packages/pdf-lite/src/core/tokens/token.ts +43 -0
  75. package/packages/pdf-lite/src/core/tokens/trailer-token.ts +12 -0
  76. package/packages/pdf-lite/src/core/tokens/whitespace-token.ts +43 -0
  77. package/packages/pdf-lite/src/core/tokens/xref-table-entry-token.ts +65 -0
  78. package/packages/pdf-lite/src/core/tokens/xref-table-section-start-token.ts +31 -0
  79. package/packages/pdf-lite/src/core/tokens/xref-table-start-token.ts +13 -0
  80. package/packages/pdf-lite/src/crypto/ciphers/aes128.ts +63 -0
  81. package/packages/pdf-lite/src/crypto/ciphers/aes256.ts +50 -0
  82. package/packages/pdf-lite/src/crypto/ciphers/rc4.ts +82 -0
  83. package/packages/pdf-lite/src/crypto/constants.ts +10 -0
  84. package/packages/pdf-lite/src/crypto/key-derivation/key-derivation-aes256.ts +213 -0
  85. package/packages/pdf-lite/src/crypto/key-derivation/key-derivation.ts +122 -0
  86. package/packages/pdf-lite/src/crypto/key-gen/key-gen-aes256.ts +79 -0
  87. package/packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-128.ts +190 -0
  88. package/packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-40.ts +129 -0
  89. package/packages/pdf-lite/src/crypto/types.ts +6 -0
  90. package/packages/pdf-lite/src/crypto/utils.ts +81 -0
  91. package/packages/pdf-lite/src/filters/ascii85.ts +128 -0
  92. package/packages/pdf-lite/src/filters/asciihex.ts +55 -0
  93. package/packages/pdf-lite/src/filters/flate.ts +39 -0
  94. package/packages/pdf-lite/src/filters/lzw.ts +144 -0
  95. package/packages/pdf-lite/src/filters/pass-through.ts +37 -0
  96. package/packages/pdf-lite/src/filters/runlength.ts +92 -0
  97. package/packages/pdf-lite/src/filters/types.ts +21 -0
  98. package/packages/pdf-lite/src/index.ts +4 -0
  99. package/packages/pdf-lite/src/pdf/errors.ts +5 -0
  100. package/packages/pdf-lite/src/pdf/index.ts +4 -0
  101. package/packages/pdf-lite/src/pdf/pdf-document.ts +924 -0
  102. package/packages/pdf-lite/src/pdf/pdf-reader.ts +57 -0
  103. package/packages/pdf-lite/src/pdf/pdf-revision.ts +234 -0
  104. package/packages/pdf-lite/src/pdf/pdf-xref-lookup.ts +527 -0
  105. package/packages/pdf-lite/src/security/crypt-filters/aesv2.ts +58 -0
  106. package/packages/pdf-lite/src/security/crypt-filters/aesv3.ts +56 -0
  107. package/packages/pdf-lite/src/security/crypt-filters/base.ts +140 -0
  108. package/packages/pdf-lite/src/security/crypt-filters/identity.ts +40 -0
  109. package/packages/pdf-lite/src/security/crypt-filters/v2.ts +59 -0
  110. package/packages/pdf-lite/src/security/handlers/base.ts +625 -0
  111. package/packages/pdf-lite/src/security/handlers/pubSec.ts +413 -0
  112. package/packages/pdf-lite/src/security/handlers/utils.ts +304 -0
  113. package/packages/pdf-lite/src/security/handlers/v1.ts +225 -0
  114. package/packages/pdf-lite/src/security/handlers/v2.ts +128 -0
  115. package/packages/pdf-lite/src/security/handlers/v4.ts +379 -0
  116. package/packages/pdf-lite/src/security/handlers/v5.ts +298 -0
  117. package/packages/pdf-lite/src/security/types.ts +158 -0
  118. package/packages/pdf-lite/src/signing/document-security-store.ts +224 -0
  119. package/packages/pdf-lite/src/signing/index.ts +3 -0
  120. package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-detached.ts +154 -0
  121. package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-sha1.ts +161 -0
  122. package/packages/pdf-lite/src/signing/signatures/adbe-x509-rsa-sha1.ts +106 -0
  123. package/packages/pdf-lite/src/signing/signatures/base.ts +229 -0
  124. package/packages/pdf-lite/src/signing/signatures/etsi-cades-detached.ts +229 -0
  125. package/packages/pdf-lite/src/signing/signatures/etsi-rfc3161.ts +92 -0
  126. package/packages/pdf-lite/src/signing/signatures/index.ts +6 -0
  127. package/packages/pdf-lite/src/signing/signer.ts +120 -0
  128. package/packages/pdf-lite/src/signing/types.ts +86 -0
  129. package/packages/pdf-lite/src/signing/utils.ts +71 -0
  130. package/packages/pdf-lite/src/types.ts +44 -0
  131. package/packages/pdf-lite/src/utils/IterableReadableStream.ts +30 -0
  132. package/packages/pdf-lite/src/utils/algos.ts +446 -0
  133. package/packages/pdf-lite/src/utils/assert.ts +42 -0
  134. package/packages/pdf-lite/src/utils/bytesToHex.ts +18 -0
  135. package/packages/pdf-lite/src/utils/bytesToHexBytes.ts +27 -0
  136. package/packages/pdf-lite/src/utils/bytesToString.ts +17 -0
  137. package/packages/pdf-lite/src/utils/concatUint8Arrays.ts +26 -0
  138. package/packages/pdf-lite/src/utils/escapeString.ts +49 -0
  139. package/packages/pdf-lite/src/utils/hexBytesToBytes.ts +22 -0
  140. package/packages/pdf-lite/src/utils/hexBytesToString.ts +21 -0
  141. package/packages/pdf-lite/src/utils/hexToBytes.ts +18 -0
  142. package/packages/pdf-lite/src/utils/padBytes.ts +25 -0
  143. package/packages/pdf-lite/src/utils/predictors.ts +332 -0
  144. package/packages/pdf-lite/src/utils/replaceInBuffer.ts +56 -0
  145. package/packages/pdf-lite/src/utils/stringToBytes.ts +22 -0
  146. package/packages/pdf-lite/src/utils/stringToHexBytes.ts +23 -0
  147. package/packages/pdf-lite/src/utils/unescapeString.ts +123 -0
  148. package/packages/pdf-lite/test/acceptance/__snapshots__/versions.node.test.ts.snap +60766 -0
  149. package/packages/pdf-lite/test/acceptance/fixtures/1.3/basic.pdf +0 -0
  150. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-128.pdf +0 -0
  151. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-256.pdf +0 -0
  152. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-128.pdf +0 -0
  153. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-40.pdf +0 -0
  154. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic.pdf +0 -0
  155. package/packages/pdf-lite/test/acceptance/fixtures/1.5/basic.pdf +0 -0
  156. package/packages/pdf-lite/test/acceptance/fixtures/1.6/basic.pdf +0 -0
  157. package/packages/pdf-lite/test/acceptance/fixtures/1.7/basic.pdf +0 -0
  158. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-128.pdf +43 -0
  159. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-256.pdf +43 -0
  160. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-128.pdf +43 -0
  161. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-40.pdf +44 -0
  162. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic.pdf +79 -0
  163. package/packages/pdf-lite/test/acceptance/versions.node.test.ts +41 -0
  164. package/packages/pdf-lite/test/unit/__snapshots__/decoder.node.test.ts.snap +86947 -0
  165. package/packages/pdf-lite/test/unit/__snapshots__/tokeniser.node.test.ts.snap +131829 -0
  166. package/packages/pdf-lite/test/unit/ciphers.test.ts +61 -0
  167. package/packages/pdf-lite/test/unit/decoder.node.test.ts +21 -0
  168. package/packages/pdf-lite/test/unit/decoder.test.ts +567 -0
  169. package/packages/pdf-lite/test/unit/filters.test.ts +67 -0
  170. package/packages/pdf-lite/test/unit/fixtures/basic.pdf +0 -0
  171. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-128.pdf +0 -0
  172. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-256.pdf +0 -0
  173. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-128.pdf +0 -0
  174. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-40.pdf +43 -0
  175. package/packages/pdf-lite/test/unit/fixtures/protectedAdobeLivecycle.pdf +0 -0
  176. package/packages/pdf-lite/test/unit/fixtures/rsa-2048/index.ts +187 -0
  177. package/packages/pdf-lite/test/unit/fixtures/template.pdf +0 -0
  178. package/packages/pdf-lite/test/unit/incremental-update.test.ts +0 -0
  179. package/packages/pdf-lite/test/unit/objects.test.ts +0 -0
  180. package/packages/pdf-lite/test/unit/pdf-document-signing.test.ts +0 -0
  181. package/packages/pdf-lite/test/unit/pdf-revision.test.ts +195 -0
  182. package/packages/pdf-lite/test/unit/pdf.browser.test.ts +0 -0
  183. package/packages/pdf-lite/test/unit/predictors.test.ts +226 -0
  184. package/packages/pdf-lite/test/unit/ref.test.ts +158 -0
  185. package/packages/pdf-lite/test/unit/security-handlers.test.ts +645 -0
  186. package/packages/pdf-lite/test/unit/serializer.test.ts +81 -0
  187. package/packages/pdf-lite/test/unit/signature-objects.test.ts +814 -0
  188. package/packages/pdf-lite/test/unit/string-escaping.test.ts +84 -0
  189. package/packages/pdf-lite/test/unit/tokeniser.node.test.ts +38 -0
  190. package/packages/pdf-lite/test/unit/tokeniser.test.ts +1213 -0
  191. package/packages/pdf-lite/test/unit/utils.test.ts +248 -0
  192. package/packages/pdf-lite/test/unit/xref-lookup.test.ts +72 -0
  193. package/packages/pdf-lite/tsconfig.json +4 -0
  194. package/packages/pdf-lite/tsconfig.prod.json +8 -0
  195. package/packages/pdf-lite/typedoc.json +14 -0
  196. package/packages/pdf-lite/vitest.config.ts +43 -0
  197. package/pnpm-workspace.yaml +2 -0
  198. package/renovate.json +34 -0
  199. package/scripts/build-examples.ts +30 -0
  200. package/scripts/bump-version.sh +56 -0
  201. package/scripts/gen-html-docs.sh +21 -0
  202. package/scripts/gen-md-docs.sh +15 -0
  203. package/scripts/prepare-release.sh +33 -0
  204. package/tsconfig.json +22 -0
  205. package/tsconfig.prod.json +12 -0
  206. package/typedoc.json +34 -0
@@ -0,0 +1,43 @@
1
+ %PDF-2.0
2
+ %����
3
+ 1 0 obj
4
+ << /AcroForm 2 0 R /Pages 3 0 R /Type /Catalog >>
5
+ endobj
6
+ 2 0 obj
7
+ << /NeedAppearances true /Producer <3f7dd753bfc7> >>
8
+ endobj
9
+ 3 0 obj
10
+ << /Count 1 /Kids [ 4 0 R ] /Type /Pages >>
11
+ endobj
12
+ 4 0 obj
13
+ << /Contents 5 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 3 0 R /Resources << /Font 6 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >>
14
+ endobj
15
+ 5 0 obj
16
+ << /Length 84 /Filter /FlateDecode >>
17
+ stream
18
+ �t�vӏ���٫_���cR�ώЦ���������=�p�V:-�Ѽ�#��V/�Nք͊yxm���Bb}`D�gݲendstream
19
+ endobj
20
+ 6 0 obj
21
+ << /F1 7 0 R >>
22
+ endobj
23
+ 7 0 obj
24
+ << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
25
+ endobj
26
+ 8 0 obj
27
+ << /Filter /Standard /Length 128 /O <35295b66f96d5cc28136704cb7d7f11bb875b8fc825755878c946d93b46904b7> /P -4 /R 3 /U <1291f6e8328286eb86f681dce6c4cb220122456a91bae5134273a6db134c87c4> /V 2 >>
28
+ endobj
29
+ xref
30
+ 0 9
31
+ 0000000000 65535 f
32
+ 0000000015 00000 n
33
+ 0000000080 00000 n
34
+ 0000000148 00000 n
35
+ 0000000207 00000 n
36
+ 0000000406 00000 n
37
+ 0000000560 00000 n
38
+ 0000000591 00000 n
39
+ 0000000698 00000 n
40
+ trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<97752b1184e3dcb9cc00364142340e4a><97752b1184e3dcb9cc00364142340e4a>] /Encrypt 8 0 R >>
41
+ startxref
42
+ 905
43
+ %%EOF
@@ -0,0 +1,43 @@
1
+ %PDF-2.0
2
+ %����
3
+ 1 0 obj
4
+ << /AcroForm 2 0 R /Pages 3 0 R /Type /Catalog >>
5
+ endobj
6
+ 2 0 obj
7
+ << /NeedAppearances true /Producer <24e42a91dbb600708d3d335a662d6665487408f475f48c9acd08ccaa4a90231d> >>
8
+ endobj
9
+ 3 0 obj
10
+ << /Count 1 /Kids [ 4 0 R ] /Type /Pages >>
11
+ endobj
12
+ 4 0 obj
13
+ << /Contents 5 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 3 0 R /Resources << /Font 6 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >>
14
+ endobj
15
+ 5 0 obj
16
+ << /Length 112 /Filter /FlateDecode >>
17
+ stream
18
+ �m���<�� c���6��
19
+ endobj
20
+ 6 0 obj
21
+ << /F1 7 0 R >>
22
+ endobj
23
+ 7 0 obj
24
+ << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
25
+ endobj
26
+ 8 0 obj
27
+ << /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV3 /Length 32 >> >> /Filter /Standard /Length 256 /O <94ea9bbbadea3e091c0edcfcebfabc26a343200a102c37592db4b315d2dd85af25dc4f8011f0f8bc5459281ff4392723> /OE <6b853c49ef8626e090f6a12d2715967d387faa4ee264198fc173d35eb5be3150> /P -4 /Perms <efa8e43326bfc3b1f83f0d6ec933c6b8> /R 6 /StmF /StdCF /StrF /StdCF /U <e2f9e264d4bfdd08f4a90843d339bbb1ca8e3fa1798037a75fd005c5366a063f15a21488d4d20bdeca8a5263f603ede3> /UE <cc6aa3fd78fa0099a1a43d4c1108bc96bf2c52e39edc6fcfcc21fa1af8684512> /V 5 >>
28
+ endobj
29
+ xref
30
+ 0 9
31
+ 0000000000 65535 f
32
+ 0000000015 00000 n
33
+ 0000000080 00000 n
34
+ 0000000200 00000 n
35
+ 0000000259 00000 n
36
+ 0000000458 00000 n
37
+ 0000000641 00000 n
38
+ 0000000672 00000 n
39
+ 0000000779 00000 n
40
+ trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<ef1fc90c94924aec2278ae62da81624e><ef1fc90c94924aec2278ae62da81624e>] /Encrypt 8 0 R >>
41
+ startxref
42
+ 1326
43
+ %%EOF
@@ -0,0 +1,43 @@
1
+ %PDF-2.0
2
+ %����
3
+ 1 0 obj
4
+ << /AcroForm 2 0 R /Pages 3 0 R /Type /Catalog >>
5
+ endobj
6
+ 2 0 obj
7
+ << /NeedAppearances true /Producer <8a55d45aaff0> >>
8
+ endobj
9
+ 3 0 obj
10
+ << /Count 1 /Kids [ 4 0 R ] /Type /Pages >>
11
+ endobj
12
+ 4 0 obj
13
+ << /Contents 5 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 3 0 R /Resources << /Font 6 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >>
14
+ endobj
15
+ 5 0 obj
16
+ << /Length 84 /Filter /FlateDecode >>
17
+ stream
18
+ ���������˲Ǖm�z��p��#%y��A��_��!�J���X�yX�u(�{Kb�w��V<�r�5���ڀ��E�|�endstream
19
+ endobj
20
+ 6 0 obj
21
+ << /F1 7 0 R >>
22
+ endobj
23
+ 7 0 obj
24
+ << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
25
+ endobj
26
+ 8 0 obj
27
+ << /Filter /Standard /Length 128 /O <35295b66f96d5cc28136704cb7d7f11bb875b8fc825755878c946d93b46904b7> /P -4 /R 3 /U <340ca3e1ae4ea890ae09bc759397b9580122456a91bae5134273a6db134c87c4> /V 2 >>
28
+ endobj
29
+ xref
30
+ 0 9
31
+ 0000000000 65535 f
32
+ 0000000015 00000 n
33
+ 0000000080 00000 n
34
+ 0000000148 00000 n
35
+ 0000000207 00000 n
36
+ 0000000406 00000 n
37
+ 0000000560 00000 n
38
+ 0000000591 00000 n
39
+ 0000000698 00000 n
40
+ trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<747eeee6f831df246f0281bd1151f82c><747eeee6f831df246f0281bd1151f82c>] /Encrypt 8 0 R >>
41
+ startxref
42
+ 905
43
+ %%EOF
@@ -0,0 +1,44 @@
1
+ %PDF-2.0
2
+ %����
3
+ 1 0 obj
4
+ << /AcroForm 2 0 R /Pages 3 0 R /Type /Catalog >>
5
+ endobj
6
+ 2 0 obj
7
+ << /NeedAppearances true /Producer <a1e567cf1c86> >>
8
+ endobj
9
+ 3 0 obj
10
+ << /Count 1 /Kids [ 4 0 R ] /Type /Pages >>
11
+ endobj
12
+ 4 0 obj
13
+ << /Contents 5 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 3 0 R /Resources << /Font 6 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >>
14
+ endobj
15
+ 5 0 obj
16
+ << /Length 84 /Filter /FlateDecode >>
17
+ stream
18
+ ��7�Xh3:�r���y�a��u�Ic)��n϶Y-���eR�
19
+ ����tK�6�Y��W�n]� �N��0���&�;�zendstream
20
+ endobj
21
+ 6 0 obj
22
+ << /F1 7 0 R >>
23
+ endobj
24
+ 7 0 obj
25
+ << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
26
+ endobj
27
+ 8 0 obj
28
+ << /Filter /Standard /Length 40 /O <a5ae38c732f978c2db2b7f3385b1bf8382e4dc2ea0fdd1ad57d898a4abd23f55> /P -4 /R 2 /U <07132e1087c623fbb3fa13787e97ee3eea75e05b0138e93156e8df41608e9269> /V 1 >>
29
+ endobj
30
+ xref
31
+ 0 9
32
+ 0000000000 65535 f
33
+ 0000000015 00000 n
34
+ 0000000080 00000 n
35
+ 0000000148 00000 n
36
+ 0000000207 00000 n
37
+ 0000000406 00000 n
38
+ 0000000560 00000 n
39
+ 0000000591 00000 n
40
+ 0000000698 00000 n
41
+ trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<339d12004ecc3e6607a0e8942cc356d8><339d12004ecc3e6607a0e8942cc356d8>] /Encrypt 8 0 R >>
42
+ startxref
43
+ 904
44
+ %%EOF
@@ -0,0 +1,79 @@
1
+ %PDF-2.0
2
+ %����
3
+ 1 0 obj
4
+ <<
5
+ /Type /Pages
6
+ /Count 1
7
+ /Kids [ 3 0 R ]
8
+ >>
9
+ endobj
10
+ 2 0 obj
11
+ <<
12
+ /Producer (PyPDF2)
13
+ /NeedAppearances true
14
+ >>
15
+ endobj
16
+ 3 0 obj
17
+ <<
18
+ /Contents 5 0 R
19
+ /MediaBox [ 0 0 595.2756 841.8898 ]
20
+ /Parent 1 0 R
21
+ /Resources <<
22
+ /Font 6 0 R
23
+ /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
24
+ >>
25
+ /Rotate 0
26
+ /Trans <<
27
+ >>
28
+ /Type /Page
29
+ >>
30
+ endobj
31
+ 4 0 obj
32
+ <<
33
+ /Type /Catalog
34
+ /Pages 1 0 R
35
+ /AcroForm 2 0 R
36
+ >>
37
+ endobj
38
+ 5 0 obj
39
+ <<
40
+ /Filter [ /ASCII85Decode /FlateDecode ]
41
+ /Length 107
42
+ >>
43
+ stream
44
+ GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_?CW4KISi90MjG^2,FS#<RC5+c,n)Z;(0aDb"5I[<!^TD#gi]&=5X,[6,OA.~>
45
+ endstream
46
+ endobj
47
+ 6 0 obj
48
+ <<
49
+ /F1 7 0 R
50
+ >>
51
+ endobj
52
+ 7 0 obj
53
+ <<
54
+ /BaseFont /Helvetica
55
+ /Encoding /WinAnsiEncoding
56
+ /Name /F1
57
+ /Subtype /Type1
58
+ /Type /Font
59
+ >>
60
+ endobj
61
+ xref
62
+ 0 8
63
+ 0000000000 65535 f
64
+ 0000000015 00000 n
65
+ 0000000074 00000 n
66
+ 0000000136 00000 n
67
+ 0000000335 00000 n
68
+ 0000000400 00000 n
69
+ 0000000598 00000 n
70
+ 0000000629 00000 n
71
+ trailer
72
+ <<
73
+ /Size 8
74
+ /Root 4 0 R
75
+ /Info 2 0 R
76
+ >>
77
+ startxref
78
+ 736
79
+ %%EOF
@@ -0,0 +1,41 @@
1
+ import { describe, expect, test } from 'vitest'
2
+ import fs from 'fs'
3
+ import { PdfDocument } from '../../src/pdf/pdf-document.js'
4
+
5
+ async function readPdf(fileName: string): Promise<PdfDocument> {
6
+ const data = fs.readFileSync(`${import.meta.dirname}/fixtures/${fileName}`)
7
+
8
+ return PdfDocument.fromBytes([data])
9
+ }
10
+
11
+ const fixtures = {
12
+ '1.3': ['basic.pdf'],
13
+ '1.4': [
14
+ 'basic.pdf',
15
+ 'basic-rc4-40.pdf',
16
+ 'basic-rc4-128.pdf',
17
+ 'basic-aes-128.pdf',
18
+ 'basic-aes-256.pdf',
19
+ ],
20
+ '1.5': ['basic.pdf'],
21
+ '1.6': ['basic.pdf'],
22
+ '1.7': ['basic.pdf'],
23
+ '2.0': [
24
+ 'basic.pdf',
25
+ 'basic-rc4-40.pdf',
26
+ 'basic-rc4-128.pdf',
27
+ 'basic-aes-128.pdf',
28
+ 'basic-aes-256.pdf',
29
+ ],
30
+ }
31
+
32
+ for (const version in fixtures) {
33
+ describe(`PDF ${version} acceptance tests`, () => {
34
+ for (const fileName of fixtures[version as keyof typeof fixtures]) {
35
+ test(`${version}-${fileName}`, { timeout: 20000 }, async () => {
36
+ const objects = await readPdf(`${version}/${fileName}`)
37
+ expect(objects).toMatchSnapshot()
38
+ })
39
+ }
40
+ })
41
+ }