pdf-lite 1.0.1-alpha.2 → 1.0.1
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.
- package/dist/core/decoder.d.ts +39 -0
- package/dist/core/decoder.js +367 -0
- package/dist/core/generators.d.ts +37 -0
- package/{packages/pdf-lite/src/core/generators.ts → dist/core/generators.js} +36 -67
- package/dist/core/incremental-parser.d.ts +103 -0
- package/{packages/pdf-lite/src/core/incremental-parser.ts → dist/core/incremental-parser.js} +63 -100
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/core/objects/pdf-array.d.ts +12 -0
- package/dist/core/objects/pdf-array.js +42 -0
- package/dist/core/objects/pdf-boolean.d.ts +8 -0
- package/dist/core/objects/pdf-boolean.js +15 -0
- package/dist/core/objects/pdf-comment.d.ts +18 -0
- package/dist/core/objects/pdf-comment.js +39 -0
- package/dist/core/objects/pdf-date.d.ts +5 -0
- package/dist/core/objects/pdf-date.js +40 -0
- package/dist/core/objects/pdf-dictionary.d.ts +22 -0
- package/dist/core/objects/pdf-dictionary.js +136 -0
- package/dist/core/objects/pdf-hexadecimal.d.ts +17 -0
- package/dist/core/objects/pdf-hexadecimal.js +42 -0
- package/dist/core/objects/pdf-indirect-object.d.ts +27 -0
- package/dist/core/objects/pdf-indirect-object.js +100 -0
- package/dist/core/objects/pdf-name.d.ts +8 -0
- package/dist/core/objects/pdf-name.js +15 -0
- package/dist/core/objects/pdf-null.d.ts +7 -0
- package/dist/core/objects/pdf-null.js +11 -0
- package/dist/core/objects/pdf-number.d.ts +25 -0
- package/dist/core/objects/pdf-number.js +77 -0
- package/dist/core/objects/pdf-object-reference.d.ts +9 -0
- package/dist/core/objects/pdf-object-reference.js +19 -0
- package/dist/core/objects/pdf-object.d.ts +30 -0
- package/dist/core/objects/pdf-object.js +77 -0
- package/dist/core/objects/pdf-start-xref.d.ts +10 -0
- package/dist/core/objects/pdf-start-xref.js +32 -0
- package/dist/core/objects/pdf-stream.d.ts +100 -0
- package/dist/core/objects/pdf-stream.js +521 -0
- package/dist/core/objects/pdf-string.d.ts +15 -0
- package/dist/core/objects/pdf-string.js +30 -0
- package/dist/core/objects/pdf-trailer.d.ts +26 -0
- package/dist/core/objects/pdf-trailer.js +33 -0
- package/dist/core/objects/pdf-xref-table.d.ts +48 -0
- package/dist/core/objects/pdf-xref-table.js +183 -0
- package/{packages/pdf-lite/src/core/parser.ts → dist/core/parser.d.ts} +3 -4
- package/dist/core/parser.js +9 -0
- package/dist/core/ref.d.ts +59 -0
- package/{packages/pdf-lite/src/core/ref.ts → dist/core/ref.js} +23 -41
- package/dist/core/serializer.d.ts +36 -0
- package/{packages/pdf-lite/src/core/serializer.ts → dist/core/serializer.js} +20 -30
- package/dist/core/streams/object-stream.d.ts +6 -0
- package/dist/core/streams/object-stream.js +15 -0
- package/dist/core/tokeniser.d.ts +98 -0
- package/dist/core/tokeniser.js +552 -0
- package/dist/core/tokens/boolean-token.d.ts +8 -0
- package/dist/core/tokens/boolean-token.js +15 -0
- package/dist/core/tokens/byte-offset-token.d.ts +8 -0
- package/dist/core/tokens/byte-offset-token.js +15 -0
- package/dist/core/tokens/comment-token.d.ts +10 -0
- package/dist/core/tokens/comment-token.js +26 -0
- package/dist/core/tokens/end-array-token.d.ts +4 -0
- package/dist/core/tokens/end-array-token.js +8 -0
- package/dist/core/tokens/end-dictionary-token.d.ts +4 -0
- package/dist/core/tokens/end-dictionary-token.js +8 -0
- package/dist/core/tokens/end-object-token.d.ts +4 -0
- package/dist/core/tokens/end-object-token.js +8 -0
- package/dist/core/tokens/end-stream-token.d.ts +5 -0
- package/dist/core/tokens/end-stream-token.js +8 -0
- package/dist/core/tokens/hexadecimal-token.d.ts +7 -0
- package/dist/core/tokens/hexadecimal-token.js +16 -0
- package/dist/core/tokens/name-token.d.ts +6 -0
- package/dist/core/tokens/name-token.js +15 -0
- package/dist/core/tokens/null-token.d.ts +4 -0
- package/dist/core/tokens/null-token.js +8 -0
- package/dist/core/tokens/number-token.d.ts +24 -0
- package/dist/core/tokens/number-token.js +104 -0
- package/dist/core/tokens/object-reference-token.d.ts +7 -0
- package/dist/core/tokens/object-reference-token.js +17 -0
- package/dist/core/tokens/start-array-token.d.ts +4 -0
- package/dist/core/tokens/start-array-token.js +8 -0
- package/dist/core/tokens/start-dictionary-token.d.ts +4 -0
- package/dist/core/tokens/start-dictionary-token.js +8 -0
- package/dist/core/tokens/start-object-token.d.ts +8 -0
- package/dist/core/tokens/start-object-token.js +17 -0
- package/dist/core/tokens/start-stream-token.d.ts +8 -0
- package/dist/core/tokens/start-stream-token.js +38 -0
- package/dist/core/tokens/start-xref-token.d.ts +4 -0
- package/dist/core/tokens/start-xref-token.js +8 -0
- package/dist/core/tokens/stream-chunk-token.d.ts +5 -0
- package/dist/core/tokens/stream-chunk-token.js +6 -0
- package/dist/core/tokens/string-token.d.ts +7 -0
- package/dist/core/tokens/string-token.js +13 -0
- package/dist/core/tokens/token.d.ts +10 -0
- package/dist/core/tokens/token.js +32 -0
- package/dist/core/tokens/trailer-token.d.ts +5 -0
- package/dist/core/tokens/trailer-token.js +10 -0
- package/dist/core/tokens/whitespace-token.d.ts +11 -0
- package/dist/core/tokens/whitespace-token.js +36 -0
- package/dist/core/tokens/xref-table-entry-token.d.ts +13 -0
- package/dist/core/tokens/xref-table-entry-token.js +40 -0
- package/dist/core/tokens/xref-table-section-start-token.d.ts +8 -0
- package/dist/core/tokens/xref-table-section-start-token.js +21 -0
- package/dist/core/tokens/xref-table-start-token.d.ts +5 -0
- package/dist/core/tokens/xref-table-start-token.js +10 -0
- package/dist/crypto/ciphers/aes128.d.ts +19 -0
- package/{packages/pdf-lite/src/crypto/ciphers/aes128.ts → dist/crypto/ciphers/aes128.js} +17 -27
- package/dist/crypto/ciphers/aes256.d.ts +18 -0
- package/{packages/pdf-lite/src/crypto/ciphers/aes256.ts → dist/crypto/ciphers/aes256.js} +14 -17
- package/dist/crypto/ciphers/rc4.d.ts +18 -0
- package/{packages/pdf-lite/src/crypto/ciphers/rc4.ts → dist/crypto/ciphers/rc4.js} +25 -30
- package/dist/crypto/constants.d.ts +6 -0
- package/{packages/pdf-lite/src/crypto/constants.ts → dist/crypto/constants.js} +1 -1
- package/dist/crypto/key-derivation/key-derivation-aes256.d.ts +56 -0
- package/dist/crypto/key-derivation/key-derivation-aes256.js +156 -0
- package/dist/crypto/key-derivation/key-derivation.d.ts +42 -0
- package/{packages/pdf-lite/src/crypto/key-derivation/key-derivation.ts → dist/crypto/key-derivation/key-derivation.js} +35 -66
- package/dist/crypto/key-gen/key-gen-aes256.d.ts +36 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-aes256.ts → dist/crypto/key-gen/key-gen-aes256.js} +25 -50
- package/dist/crypto/key-gen/key-gen-rc4-128.d.ts +47 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-128.ts → dist/crypto/key-gen/key-gen-rc4-128.js} +45 -106
- package/dist/crypto/key-gen/key-gen-rc4-40.d.ts +60 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-40.ts → dist/crypto/key-gen/key-gen-rc4-40.js} +26 -62
- package/dist/crypto/types.d.ts +5 -0
- package/dist/crypto/types.js +1 -0
- package/dist/crypto/utils.d.ts +40 -0
- package/{packages/pdf-lite/src/crypto/utils.ts → dist/crypto/utils.js} +27 -36
- package/dist/filters/ascii85.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/ascii85.ts → dist/filters/ascii85.js} +41 -65
- package/dist/filters/asciihex.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/asciihex.ts → dist/filters/asciihex.js} +18 -19
- package/dist/filters/flate.d.ts +15 -0
- package/{packages/pdf-lite/src/filters/flate.ts → dist/filters/flate.js} +7 -10
- package/dist/filters/lzw.d.ts +16 -0
- package/dist/filters/lzw.js +150 -0
- package/dist/filters/pass-through.d.ts +14 -0
- package/{packages/pdf-lite/src/filters/pass-through.ts → dist/filters/pass-through.js} +6 -9
- package/dist/filters/runlength.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/runlength.ts → dist/filters/runlength.js} +36 -40
- package/dist/filters/types.d.ts +18 -0
- package/{packages/pdf-lite/src/filters/types.ts → dist/filters/types.js} +1 -10
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/pdf/errors.d.ts +6 -0
- package/{packages/pdf-lite/src/pdf/errors.ts → dist/pdf/errors.js} +2 -1
- package/dist/pdf/index.d.ts +4 -0
- package/dist/pdf/index.js +4 -0
- package/dist/pdf/pdf-document.d.ts +277 -0
- package/{packages/pdf-lite/src/pdf/pdf-document.ts → dist/pdf/pdf-document.js} +305 -541
- package/dist/pdf/pdf-reader.d.ts +37 -0
- package/{packages/pdf-lite/src/pdf/pdf-reader.ts → dist/pdf/pdf-reader.js} +12 -22
- package/dist/pdf/pdf-revision.d.ts +101 -0
- package/{packages/pdf-lite/src/pdf/pdf-revision.ts → dist/pdf/pdf-revision.js} +70 -105
- package/dist/pdf/pdf-xref-lookup.d.ts +149 -0
- package/dist/pdf/pdf-xref-lookup.js +402 -0
- package/dist/security/crypt-filters/aesv2.d.ts +35 -0
- package/{packages/pdf-lite/src/security/crypt-filters/aesv2.ts → dist/security/crypt-filters/aesv2.js} +9 -26
- package/dist/security/crypt-filters/aesv3.d.ts +36 -0
- package/{packages/pdf-lite/src/security/crypt-filters/aesv3.ts → dist/security/crypt-filters/aesv3.js} +9 -23
- package/{packages/pdf-lite/src/security/crypt-filters/base.ts → dist/security/crypt-filters/base.d.ts} +21 -73
- package/dist/security/crypt-filters/base.js +93 -0
- package/dist/security/crypt-filters/identity.d.ts +28 -0
- package/{packages/pdf-lite/src/security/crypt-filters/identity.ts → dist/security/crypt-filters/identity.js} +9 -13
- package/dist/security/crypt-filters/v2.d.ts +37 -0
- package/{packages/pdf-lite/src/security/crypt-filters/v2.ts → dist/security/crypt-filters/v2.js} +9 -26
- package/dist/security/handlers/base.d.ts +304 -0
- package/dist/security/handlers/base.js +359 -0
- package/dist/security/handlers/pubSec.d.ts +164 -0
- package/dist/security/handlers/pubSec.js +299 -0
- package/dist/security/handlers/utils.d.ts +77 -0
- package/dist/security/handlers/utils.js +244 -0
- package/dist/security/handlers/v1.d.ts +81 -0
- package/dist/security/handlers/v1.js +135 -0
- package/dist/security/handlers/v2.d.ts +63 -0
- package/{packages/pdf-lite/src/security/handlers/v2.ts → dist/security/handlers/v2.js} +25 -62
- package/dist/security/handlers/v4.d.ts +121 -0
- package/dist/security/handlers/v4.js +257 -0
- package/dist/security/handlers/v5.d.ts +112 -0
- package/dist/security/handlers/v5.js +210 -0
- package/{packages/pdf-lite/src/security/types.ts → dist/security/types.d.ts} +72 -94
- package/dist/security/types.js +1 -0
- package/dist/signing/document-security-store.d.ts +108 -0
- package/dist/signing/document-security-store.js +156 -0
- package/dist/signing/index.d.ts +3 -0
- package/dist/signing/index.js +3 -0
- package/dist/signing/signatures/adbe-pkcs7-detached.d.ts +57 -0
- package/dist/signing/signatures/adbe-pkcs7-detached.js +117 -0
- package/dist/signing/signatures/adbe-pkcs7-sha1.d.ts +55 -0
- package/dist/signing/signatures/adbe-pkcs7-sha1.js +121 -0
- package/dist/signing/signatures/adbe-x509-rsa-sha1.d.ts +49 -0
- package/dist/signing/signatures/adbe-x509-rsa-sha1.js +81 -0
- package/dist/signing/signatures/base.d.ts +107 -0
- package/dist/signing/signatures/base.js +145 -0
- package/dist/signing/signatures/etsi-cades-detached.d.ts +64 -0
- package/dist/signing/signatures/etsi-cades-detached.js +159 -0
- package/dist/signing/signatures/etsi-rfc3161.d.ts +37 -0
- package/{packages/pdf-lite/src/signing/signatures/etsi-rfc3161.ts → dist/signing/signatures/etsi-rfc3161.js} +21 -43
- package/dist/signing/signatures/index.d.ts +6 -0
- package/dist/signing/signatures/index.js +6 -0
- package/dist/signing/signer.d.ts +23 -0
- package/dist/signing/signer.js +92 -0
- package/{packages/pdf-lite/src/signing/types.ts → dist/signing/types.d.ts} +40 -48
- package/dist/signing/types.js +1 -0
- package/dist/signing/utils.d.ts +32 -0
- package/{packages/pdf-lite/src/signing/utils.ts → dist/signing/utils.js} +12 -31
- package/dist/types.d.ts +23 -0
- package/dist/types.js +11 -0
- package/dist/utils/IterableReadableStream.d.ts +24 -0
- package/{packages/pdf-lite/src/utils/IterableReadableStream.ts → dist/utils/IterableReadableStream.js} +6 -6
- package/dist/utils/algos.d.ts +242 -0
- package/{packages/pdf-lite/src/utils/algos.ts → dist/utils/algos.js} +63 -136
- package/dist/utils/assert.d.ts +28 -0
- package/{packages/pdf-lite/src/utils/assert.ts → dist/utils/assert.js} +5 -10
- package/dist/utils/bytesToHex.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/bytesToHex.ts → dist/utils/bytesToHex.js} +4 -6
- package/dist/utils/bytesToHexBytes.d.ts +14 -0
- package/{packages/pdf-lite/src/utils/bytesToHexBytes.ts → dist/utils/bytesToHexBytes.js} +7 -12
- package/dist/utils/bytesToString.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/bytesToString.ts → dist/utils/bytesToString.js} +3 -5
- package/dist/utils/concatUint8Arrays.d.ts +16 -0
- package/{packages/pdf-lite/src/utils/concatUint8Arrays.ts → dist/utils/concatUint8Arrays.js} +7 -9
- package/dist/utils/escapeString.d.ts +14 -0
- package/dist/utils/escapeString.js +43 -0
- package/dist/utils/hexBytesToBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/hexBytesToBytes.ts → dist/utils/hexBytesToBytes.js} +4 -6
- package/dist/utils/hexBytesToString.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/hexBytesToString.ts → dist/utils/hexBytesToString.js} +5 -7
- package/dist/utils/hexToBytes.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/hexToBytes.ts → dist/utils/hexToBytes.js} +4 -6
- package/dist/utils/padBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/padBytes.ts → dist/utils/padBytes.js} +5 -9
- package/dist/utils/predictors.d.ts +113 -0
- package/{packages/pdf-lite/src/utils/predictors.ts → dist/utils/predictors.js} +103 -156
- package/dist/utils/replaceInBuffer.d.ts +22 -0
- package/{packages/pdf-lite/src/utils/replaceInBuffer.ts → dist/utils/replaceInBuffer.js} +18 -27
- package/dist/utils/stringToBytes.d.ts +14 -0
- package/{packages/pdf-lite/src/utils/stringToBytes.ts → dist/utils/stringToBytes.js} +6 -7
- package/dist/utils/stringToHexBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/stringToHexBytes.ts → dist/utils/stringToHexBytes.js} +5 -7
- package/dist/utils/unescapeString.d.ts +16 -0
- package/dist/utils/unescapeString.js +114 -0
- package/package.json +37 -34
- package/.commitlintrc.cjs +0 -25
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
- package/.github/workflows/docs.yaml +0 -95
- package/.github/workflows/prepare-release.yaml +0 -79
- package/.github/workflows/release.yaml +0 -80
- package/.github/workflows/test.yaml +0 -35
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -4
- package/.prettierrc +0 -4
- package/CONTRIBUTING.md +0 -109
- package/EXAMPLES.md +0 -1512
- package/docs/README.md +0 -127
- package/docs/core/README.md +0 -43
- package/docs/core/decoder/README.md +0 -11
- package/docs/core/decoder/classes/PdfDecoder.md +0 -362
- package/docs/core/generators/README.md +0 -14
- package/docs/core/generators/functions/bytesToPdfObjects.md +0 -26
- package/docs/core/generators/functions/pdfDecoder.md +0 -36
- package/docs/core/generators/functions/pdfDecoderAsync.md +0 -26
- package/docs/core/generators/functions/stringToPdfObjects.md +0 -25
- package/docs/core/incremental-parser/README.md +0 -13
- package/docs/core/incremental-parser/classes/EofReachedError.md +0 -55
- package/docs/core/incremental-parser/classes/IncrementalParser.md +0 -299
- package/docs/core/incremental-parser/classes/NoMoreTokensError.md +0 -55
- package/docs/core/objects/pdf-array/README.md +0 -11
- package/docs/core/objects/pdf-array/classes/PdfArray.md +0 -305
- package/docs/core/objects/pdf-boolean/README.md +0 -11
- package/docs/core/objects/pdf-boolean/classes/PdfBoolean.md +0 -265
- package/docs/core/objects/pdf-comment/README.md +0 -11
- package/docs/core/objects/pdf-comment/classes/PdfComment.md +0 -329
- package/docs/core/objects/pdf-date/README.md +0 -11
- package/docs/core/objects/pdf-date/classes/PdfDate.md +0 -317
- package/docs/core/objects/pdf-dictionary/README.md +0 -17
- package/docs/core/objects/pdf-dictionary/classes/PdfDictionary.md +0 -396
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntries.md +0 -9
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntry.md +0 -9
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryMap.md +0 -9
- package/docs/core/objects/pdf-hexadecimal/README.md +0 -11
- package/docs/core/objects/pdf-hexadecimal/classes/PdfHexadecimal.md +0 -320
- package/docs/core/objects/pdf-indirect-object/README.md +0 -11
- package/docs/core/objects/pdf-indirect-object/classes/PdfIndirectObject.md +0 -411
- package/docs/core/objects/pdf-name/README.md +0 -11
- package/docs/core/objects/pdf-name/classes/PdfName.md +0 -271
- package/docs/core/objects/pdf-null/README.md +0 -11
- package/docs/core/objects/pdf-null/classes/PdfNull.md +0 -259
- package/docs/core/objects/pdf-number/README.md +0 -12
- package/docs/core/objects/pdf-number/classes/PdfByteOffsetNumber.md +0 -369
- package/docs/core/objects/pdf-number/classes/PdfNumber.md +0 -345
- package/docs/core/objects/pdf-object/README.md +0 -11
- package/docs/core/objects/pdf-object/classes/PdfObject.md +0 -214
- package/docs/core/objects/pdf-object-reference/README.md +0 -11
- package/docs/core/objects/pdf-object-reference/classes/PdfObjectReference.md +0 -279
- package/docs/core/objects/pdf-start-xref/README.md +0 -11
- package/docs/core/objects/pdf-start-xref/classes/PdfStartXRef.md +0 -265
- package/docs/core/objects/pdf-stream/README.md +0 -23
- package/docs/core/objects/pdf-stream/classes/PdfObjStream.md +0 -699
- package/docs/core/objects/pdf-stream/classes/PdfStream.md +0 -570
- package/docs/core/objects/pdf-stream/classes/PdfXRefStream.md +0 -723
- package/docs/core/objects/pdf-stream/classes/PdfXRefStreamCompressedEntry.md +0 -51
- package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamEntry.md +0 -9
- package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamStandardEntry.md +0 -9
- package/docs/core/objects/pdf-stream/variables/PdfXRefStreamStandardEntry.md +0 -9
- package/docs/core/objects/pdf-string/README.md +0 -11
- package/docs/core/objects/pdf-string/classes/PdfString.md +0 -301
- package/docs/core/objects/pdf-trailer/README.md +0 -16
- package/docs/core/objects/pdf-trailer/classes/PdfTrailer.md +0 -271
- package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerDictionary.md +0 -9
- package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerEntries.md +0 -51
- package/docs/core/objects/pdf-xref-table/README.md +0 -13
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTable.md +0 -331
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableEntry.md +0 -297
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableSectionHeader.md +0 -277
- package/docs/core/parser/README.md +0 -11
- package/docs/core/parser/classes/Parser.md +0 -74
- package/docs/core/ref/README.md +0 -15
- package/docs/core/ref/classes/Ref.md +0 -149
- package/docs/core/ref/type-aliases/RefUpdateCallback.md +0 -33
- package/docs/core/serializer/README.md +0 -11
- package/docs/core/serializer/classes/PdfTokenSerializer.md +0 -106
- package/docs/core/streams/object-stream/README.md +0 -11
- package/docs/core/streams/object-stream/classes/PdfObjectStream.md +0 -69
- package/docs/core/tokeniser/README.md +0 -21
- package/docs/core/tokeniser/classes/PdfByteStreamTokeniser.md +0 -366
- package/docs/core/tokeniser/classes/PdfObjectTokeniser.md +0 -69
- package/docs/core/tokeniser/functions/objectToTokens.md +0 -25
- package/docs/core/tokeniser/functions/pdfObjectStreamTokeniser.md +0 -27
- package/docs/core/tokeniser/type-aliases/PdfTokeniser.md +0 -11
- package/docs/core/tokens/boolean-token/README.md +0 -11
- package/docs/core/tokens/boolean-token/classes/PdfBooleanToken.md +0 -139
- package/docs/core/tokens/byte-offset-token/README.md +0 -11
- package/docs/core/tokens/byte-offset-token/classes/PdfByteOffsetToken.md +0 -153
- package/docs/core/tokens/comment-token/README.md +0 -11
- package/docs/core/tokens/comment-token/classes/PdfCommentToken.md +0 -161
- package/docs/core/tokens/end-array-token/README.md +0 -11
- package/docs/core/tokens/end-array-token/classes/PdfEndArrayToken.md +0 -115
- package/docs/core/tokens/end-dictionary-token/README.md +0 -11
- package/docs/core/tokens/end-dictionary-token/classes/PdfEndDictionaryToken.md +0 -115
- package/docs/core/tokens/end-object-token/README.md +0 -11
- package/docs/core/tokens/end-object-token/classes/PdfEndObjectToken.md +0 -115
- package/docs/core/tokens/end-stream-token/README.md +0 -11
- package/docs/core/tokens/end-stream-token/classes/PdfEndStreamToken.md +0 -121
- package/docs/core/tokens/hexadecimal-token/README.md +0 -11
- package/docs/core/tokens/hexadecimal-token/classes/PdfHexadecimalToken.md +0 -127
- package/docs/core/tokens/name-token/README.md +0 -11
- package/docs/core/tokens/name-token/classes/PdfNameToken.md +0 -127
- package/docs/core/tokens/null-token/README.md +0 -11
- package/docs/core/tokens/null-token/classes/PdfNullToken.md +0 -115
- package/docs/core/tokens/number-token/README.md +0 -11
- package/docs/core/tokens/number-token/classes/PdfNumberToken.md +0 -271
- package/docs/core/tokens/object-reference-token/README.md +0 -11
- package/docs/core/tokens/object-reference-token/classes/PdfObjectReferenceToken.md +0 -137
- package/docs/core/tokens/start-array-token/README.md +0 -11
- package/docs/core/tokens/start-array-token/classes/PdfStartArrayToken.md +0 -115
- package/docs/core/tokens/start-dictionary-token/README.md +0 -11
- package/docs/core/tokens/start-dictionary-token/classes/PdfStartDictionaryToken.md +0 -115
- package/docs/core/tokens/start-object-token/README.md +0 -11
- package/docs/core/tokens/start-object-token/classes/PdfStartObjectToken.md +0 -147
- package/docs/core/tokens/start-stream-token/README.md +0 -11
- package/docs/core/tokens/start-stream-token/classes/PdfStartStreamToken.md +0 -147
- package/docs/core/tokens/start-xref-token/README.md +0 -11
- package/docs/core/tokens/start-xref-token/classes/PdfStartXRefToken.md +0 -115
- package/docs/core/tokens/stream-chunk-token/README.md +0 -11
- package/docs/core/tokens/stream-chunk-token/classes/PdfStreamChunkToken.md +0 -121
- package/docs/core/tokens/string-token/README.md +0 -11
- package/docs/core/tokens/string-token/classes/PdfStringToken.md +0 -127
- package/docs/core/tokens/token/README.md +0 -11
- package/docs/core/tokens/token/classes/PdfToken.md +0 -116
- package/docs/core/tokens/trailer-token/README.md +0 -11
- package/docs/core/tokens/trailer-token/classes/PdfTrailerToken.md +0 -127
- package/docs/core/tokens/whitespace-token/README.md +0 -11
- package/docs/core/tokens/whitespace-token/classes/PdfWhitespaceToken.md +0 -161
- package/docs/core/tokens/xref-table-entry-token/README.md +0 -11
- package/docs/core/tokens/xref-table-entry-token/classes/PdfXRefTableEntryToken.md +0 -157
- package/docs/core/tokens/xref-table-section-start-token/README.md +0 -11
- package/docs/core/tokens/xref-table-section-start-token/classes/PdfXRefTableSectionStartToken.md +0 -137
- package/docs/core/tokens/xref-table-start-token/README.md +0 -11
- package/docs/core/tokens/xref-table-start-token/classes/PdfXRefTableStartToken.md +0 -127
- package/docs/crypto/ciphers/aes128/README.md +0 -11
- package/docs/crypto/ciphers/aes128/functions/aes128.md +0 -39
- package/docs/crypto/ciphers/aes256/README.md +0 -11
- package/docs/crypto/ciphers/aes256/functions/aes256.md +0 -35
- package/docs/crypto/ciphers/rc4/README.md +0 -11
- package/docs/crypto/ciphers/rc4/functions/rc4.md +0 -35
- package/docs/crypto/constants/README.md +0 -11
- package/docs/crypto/constants/variables/DEFAULT_PADDING.md +0 -13
- package/docs/crypto/key-derivation/key-derivation/README.md +0 -13
- package/docs/crypto/key-derivation/key-derivation/functions/computeMasterKey.md +0 -57
- package/docs/crypto/key-derivation/key-derivation/functions/deriveObjectKey.md +0 -50
- package/docs/crypto/key-derivation/key-derivation/functions/padPassword.md +0 -33
- package/docs/crypto/key-derivation/key-derivation-aes256/README.md +0 -13
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/computeAlgorithm2bHash.md +0 -45
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/getFileKey.md +0 -66
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/validatePasswordHash.md +0 -52
- package/docs/crypto/key-gen/key-gen-aes256/README.md +0 -12
- package/docs/crypto/key-gen/key-gen-aes256/functions/generateOandOe.md +0 -44
- package/docs/crypto/key-gen/key-gen-aes256/functions/generateUandUe.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-128/README.md +0 -13
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeOValueRc4_128.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeUValueRc4_128.md +0 -62
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/decryptUserPasswordRc4_128.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-40/README.md +0 -14
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeEncryptionKeyRc4_40.md +0 -49
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeORc4_40.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeURc4_40.md +0 -50
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/decryptUserPasswordRc4_40.md +0 -38
- package/docs/crypto/types/README.md +0 -11
- package/docs/crypto/types/interfaces/Cipher.md +0 -39
- package/docs/crypto/utils/README.md +0 -13
- package/docs/crypto/utils/functions/int32ToLittleEndianBytes.md +0 -31
- package/docs/crypto/utils/functions/padPassword.md +0 -33
- package/docs/crypto/utils/functions/removePdfPasswordPadding.md +0 -32
- package/docs/filters/ascii85/README.md +0 -11
- package/docs/filters/ascii85/functions/ascii85.md +0 -27
- package/docs/filters/asciihex/README.md +0 -11
- package/docs/filters/asciihex/functions/asciiHex.md +0 -27
- package/docs/filters/flate/README.md +0 -11
- package/docs/filters/flate/functions/flate.md +0 -26
- package/docs/filters/lzw/README.md +0 -11
- package/docs/filters/lzw/functions/lzw.md +0 -27
- package/docs/filters/pass-through/README.md +0 -11
- package/docs/filters/pass-through/functions/passthroughFilter.md +0 -25
- package/docs/filters/runlength/README.md +0 -11
- package/docs/filters/runlength/functions/runLength.md +0 -27
- package/docs/filters/types/README.md +0 -19
- package/docs/filters/types/interfaces/PdfFilter.md +0 -39
- package/docs/filters/types/type-aliases/PdfStreamFilterType.md +0 -9
- package/docs/filters/types/variables/PDF_FILTER_TYPES.md +0 -51
- package/docs/index/README.md +0 -235
- package/docs/pdf/README.md +0 -31
- package/docs/pdf/errors/README.md +0 -11
- package/docs/pdf/errors/classes/FoundCompressedObjectError.md +0 -56
- package/docs/pdf/pdf-document/README.md +0 -11
- package/docs/pdf/pdf-document/classes/PdfDocument.md +0 -876
- package/docs/pdf/pdf-reader/README.md +0 -11
- package/docs/pdf/pdf-reader/classes/PdfReader.md +0 -82
- package/docs/pdf/pdf-revision/README.md +0 -11
- package/docs/pdf/pdf-revision/classes/PdfRevision.md +0 -508
- package/docs/pdf/pdf-xref-lookup/README.md +0 -11
- package/docs/pdf/pdf-xref-lookup/classes/PdfXrefLookup.md +0 -421
- package/docs/security/crypt-filters/aesv2/README.md +0 -11
- package/docs/security/crypt-filters/aesv2/classes/AesV2CryptFilter.md +0 -274
- package/docs/security/crypt-filters/aesv3/README.md +0 -11
- package/docs/security/crypt-filters/aesv3/classes/AesV3CryptFilter.md +0 -275
- package/docs/security/crypt-filters/base/README.md +0 -15
- package/docs/security/crypt-filters/base/classes/PdfCryptFilter.md +0 -221
- package/docs/security/crypt-filters/base/type-aliases/CryptFilterOptions.md +0 -43
- package/docs/security/crypt-filters/identity/README.md +0 -11
- package/docs/security/crypt-filters/identity/classes/IdentityCryptFilter.md +0 -249
- package/docs/security/crypt-filters/v2/README.md +0 -11
- package/docs/security/crypt-filters/v2/classes/V2CryptFilter.md +0 -279
- package/docs/security/handlers/base/README.md +0 -17
- package/docs/security/handlers/base/classes/PdfSecurityHandler.md +0 -384
- package/docs/security/handlers/base/classes/PdfStandardSecurityHandler.md +0 -694
- package/docs/security/handlers/base/type-aliases/PdfSecurityHandlerOptions.md +0 -27
- package/docs/security/handlers/base/type-aliases/PdfStandardSecurityHandlerOptions.md +0 -43
- package/docs/security/handlers/pubSec/README.md +0 -11
- package/docs/security/handlers/pubSec/classes/PdfPublicKeySecurityHandler.md +0 -503
- package/docs/security/handlers/utils/README.md +0 -14
- package/docs/security/handlers/utils/functions/createFromDictionary.md +0 -56
- package/docs/security/handlers/utils/functions/createFromEncryptionOptions.md +0 -40
- package/docs/security/handlers/utils/functions/createStandardSecurityHandlerFromDictionary.md +0 -55
- package/docs/security/handlers/utils/functions/getCryptFilter.md +0 -35
- package/docs/security/handlers/v1/README.md +0 -11
- package/docs/security/handlers/v1/classes/PdfV1SecurityHandler.md +0 -779
- package/docs/security/handlers/v2/README.md +0 -11
- package/docs/security/handlers/v2/classes/PdfV2SecurityHandler.md +0 -783
- package/docs/security/handlers/v4/README.md +0 -11
- package/docs/security/handlers/v4/classes/PdfV4SecurityHandler.md +0 -907
- package/docs/security/handlers/v5/README.md +0 -11
- package/docs/security/handlers/v5/classes/PdfV5SecurityHandler.md +0 -926
- package/docs/security/types/README.md +0 -19
- package/docs/security/types/type-aliases/CryptFilterType.md +0 -15
- package/docs/security/types/type-aliases/PdfCryptFilterDictionary.md +0 -12
- package/docs/security/types/type-aliases/PdfEncryptionAlgorithmOptions.md +0 -11
- package/docs/security/types/type-aliases/PdfEncryptionAlgorithmType.md +0 -17
- package/docs/security/types/type-aliases/PdfEncryptionDictionary.md +0 -13
- package/docs/security/types/type-aliases/PdfEncryptionDictionaryObject.md +0 -11
- package/docs/security/types/type-aliases/PdfEncryptionOptions.md +0 -90
- package/docs/security/types/type-aliases/PdfEncryptionRecipient.md +0 -24
- package/docs/security/types/type-aliases/PdfId.md +0 -13
- package/docs/signing/README.md +0 -127
- package/docs/signing/document-security-store/README.md +0 -19
- package/docs/signing/document-security-store/classes/PdfCertObject.md +0 -443
- package/docs/signing/document-security-store/classes/PdfCrlObject.md +0 -443
- package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreDictionary.md +0 -416
- package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreObject.md +0 -563
- package/docs/signing/document-security-store/classes/PdfOcspObject.md +0 -443
- package/docs/signing/document-security-store/type-aliases/PdfVriObject.md +0 -12
- package/docs/signing/signatures/README.md +0 -55
- package/docs/signing/signatures/adbe-pkcs7-detached/README.md +0 -11
- package/docs/signing/signatures/adbe-pkcs7-detached/classes/PdfAdbePkcs7DetachedSignatureObject.md +0 -669
- package/docs/signing/signatures/adbe-pkcs7-sha1/README.md +0 -11
- package/docs/signing/signatures/adbe-pkcs7-sha1/classes/PdfAdbePkcs7Sha1SignatureObject.md +0 -667
- package/docs/signing/signatures/adbe-x509-rsa-sha1/README.md +0 -11
- package/docs/signing/signatures/adbe-x509-rsa-sha1/classes/PdfAdbePkcsX509RsaSha1SignatureObject.md +0 -651
- package/docs/signing/signatures/base/README.md +0 -16
- package/docs/signing/signatures/base/classes/PdfSignatureDictionary.md +0 -420
- package/docs/signing/signatures/base/classes/PdfSignatureObject.md +0 -584
- package/docs/signing/signatures/base/type-aliases/PdfSignatureSignOptions.md +0 -51
- package/docs/signing/signatures/etsi-cades-detached/README.md +0 -11
- package/docs/signing/signatures/etsi-cades-detached/classes/PdfEtsiCadesDetachedSignatureObject.md +0 -693
- package/docs/signing/signatures/etsi-rfc3161/README.md +0 -11
- package/docs/signing/signatures/etsi-rfc3161/classes/PdfEtsiRfc3161SignatureObject.md +0 -614
- package/docs/signing/signer/README.md +0 -11
- package/docs/signing/signer/classes/PdfSigner.md +0 -58
- package/docs/signing/types/README.md +0 -16
- package/docs/signing/types/type-aliases/PdfSignatureDictionaryEntries.md +0 -95
- package/docs/signing/types/type-aliases/PdfSignatureSubType.md +0 -17
- package/docs/signing/types/type-aliases/PdfSignatureType.md +0 -14
- package/docs/signing/types/type-aliases/RevocationInfo.md +0 -43
- package/docs/signing/types/type-aliases/SignaturePolicyDocument.md +0 -35
- package/docs/signing/types/type-aliases/TimeStampAuthority.md +0 -35
- package/docs/signing/utils/README.md +0 -11
- package/docs/signing/utils/functions/fetchRevocationInfo.md +0 -70
- package/docs/types/README.md +0 -21
- package/docs/types/type-aliases/ByteArray.md +0 -9
- package/docs/types/type-aliases/ChangeType.md +0 -9
- package/docs/types/type-aliases/DecodeParms.md +0 -33
- package/docs/types/type-aliases/HashAlgorithm.md +0 -9
- package/docs/types/type-aliases/PdfEncryptionAlgorithm.md +0 -9
- package/docs/types/type-aliases/PdfPermissions.md +0 -63
- package/docs/types/type-aliases/PdfVersion.md +0 -9
- package/docs/types/variables/PERMISSION_FLAGS.md +0 -9
- package/docs/utils/IterableReadableStream/README.md +0 -11
- package/docs/utils/IterableReadableStream/classes/IterableReadableStream.md +0 -103
- package/docs/utils/algos/README.md +0 -28
- package/docs/utils/algos/functions/aes128CbcNoPaddingEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes128cbcDecrypt.md +0 -47
- package/docs/utils/algos/functions/aes128cbcEncrypt.md +0 -47
- package/docs/utils/algos/functions/aes256CbcNoPaddingDecrypt.md +0 -43
- package/docs/utils/algos/functions/aes256CbcNoPaddingEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes256cbcDecrypt.md +0 -43
- package/docs/utils/algos/functions/aes256cbcEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes256ecbDecrypt.md +0 -41
- package/docs/utils/algos/functions/aes256ecbEncrypt.md +0 -41
- package/docs/utils/algos/functions/deflateData.md +0 -31
- package/docs/utils/algos/functions/getRandomBytes.md +0 -35
- package/docs/utils/algos/functions/hash.md +0 -41
- package/docs/utils/algos/functions/inflateData.md +0 -35
- package/docs/utils/algos/functions/md5.md +0 -31
- package/docs/utils/algos/functions/sha1.md +0 -31
- package/docs/utils/algos/functions/sha256.md +0 -31
- package/docs/utils/algos/functions/sha384.md +0 -31
- package/docs/utils/algos/functions/sha512.md +0 -31
- package/docs/utils/assert/README.md +0 -12
- package/docs/utils/assert/functions/assert.md +0 -39
- package/docs/utils/assert/functions/assertIfDefined.md +0 -46
- package/docs/utils/bytesToHex/README.md +0 -11
- package/docs/utils/bytesToHex/functions/bytesToHex.md +0 -31
- package/docs/utils/bytesToHexBytes/README.md +0 -11
- package/docs/utils/bytesToHexBytes/functions/bytesToHexBytes.md +0 -32
- package/docs/utils/bytesToString/README.md +0 -11
- package/docs/utils/bytesToString/functions/bytesToString.md +0 -31
- package/docs/utils/concatUint8Arrays/README.md +0 -11
- package/docs/utils/concatUint8Arrays/functions/concatUint8Arrays.md +0 -31
- package/docs/utils/escapeString/README.md +0 -11
- package/docs/utils/escapeString/functions/escapeString.md +0 -32
- package/docs/utils/hexBytesToBytes/README.md +0 -11
- package/docs/utils/hexBytesToBytes/functions/hexBytesToBytes.md +0 -33
- package/docs/utils/hexBytesToString/README.md +0 -11
- package/docs/utils/hexBytesToString/functions/hexBytesToString.md +0 -31
- package/docs/utils/hexToBytes/README.md +0 -11
- package/docs/utils/hexToBytes/functions/hexToBytes.md +0 -31
- package/docs/utils/padBytes/README.md +0 -11
- package/docs/utils/padBytes/functions/padBytes.md +0 -41
- package/docs/utils/predictors/README.md +0 -11
- package/docs/utils/predictors/classes/Predictor.md +0 -306
- package/docs/utils/replaceInBuffer/README.md +0 -11
- package/docs/utils/replaceInBuffer/functions/replaceInBuffer.md +0 -65
- package/docs/utils/stringToBytes/README.md +0 -11
- package/docs/utils/stringToBytes/functions/stringToBytes.md +0 -32
- package/docs/utils/stringToHexBytes/README.md +0 -11
- package/docs/utils/stringToHexBytes/functions/stringToHexBytes.md +0 -33
- package/docs/utils/unescapeString/README.md +0 -11
- package/docs/utils/unescapeString/functions/unescapeString.md +0 -34
- package/examples/001-create-pdf.ts +0 -112
- package/examples/002-create-encrypted-pdf.ts +0 -121
- package/examples/003-sign-pdf.ts +0 -347
- package/examples/004-incremental-update.ts +0 -206
- package/examples/005-modify-acroform.ts +0 -374
- package/examples/006-tokeniser-example.ts +0 -131
- package/examples/007-decoder-example.ts +0 -197
- package/packages/pdf-lite/README.md +0 -3
- package/packages/pdf-lite/node_modules/.bin/playwright +0 -16
- package/packages/pdf-lite/node_modules/.bin/tsc +0 -16
- package/packages/pdf-lite/node_modules/.bin/tsserver +0 -16
- package/packages/pdf-lite/node_modules/.bin/vitest +0 -16
- package/packages/pdf-lite/package.json +0 -68
- package/packages/pdf-lite/scripts/create-encryption-tests.sh +0 -41
- package/packages/pdf-lite/scripts/gen-signing-keys.sh +0 -290
- package/packages/pdf-lite/scripts/generate-all-signing-keys.sh +0 -70
- package/packages/pdf-lite/src/core/decoder.ts +0 -454
- package/packages/pdf-lite/src/core/index.ts +0 -2
- package/packages/pdf-lite/src/core/objects/pdf-array.ts +0 -54
- package/packages/pdf-lite/src/core/objects/pdf-boolean.ts +0 -19
- package/packages/pdf-lite/src/core/objects/pdf-comment.ts +0 -50
- package/packages/pdf-lite/src/core/objects/pdf-date.ts +0 -74
- package/packages/pdf-lite/src/core/objects/pdf-dictionary.ts +0 -171
- package/packages/pdf-lite/src/core/objects/pdf-hexadecimal.ts +0 -54
- package/packages/pdf-lite/src/core/objects/pdf-indirect-object.ts +0 -137
- package/packages/pdf-lite/src/core/objects/pdf-name.ts +0 -19
- package/packages/pdf-lite/src/core/objects/pdf-null.ts +0 -15
- package/packages/pdf-lite/src/core/objects/pdf-number.ts +0 -98
- package/packages/pdf-lite/src/core/objects/pdf-object-reference.ts +0 -30
- package/packages/pdf-lite/src/core/objects/pdf-object.ts +0 -107
- package/packages/pdf-lite/src/core/objects/pdf-start-xref.ts +0 -39
- package/packages/pdf-lite/src/core/objects/pdf-stream.ts +0 -687
- package/packages/pdf-lite/src/core/objects/pdf-string.ts +0 -38
- package/packages/pdf-lite/src/core/objects/pdf-trailer.ts +0 -57
- package/packages/pdf-lite/src/core/objects/pdf-xref-table.ts +0 -264
- package/packages/pdf-lite/src/core/streams/object-stream.ts +0 -20
- package/packages/pdf-lite/src/core/tokeniser.ts +0 -687
- package/packages/pdf-lite/src/core/tokens/boolean-token.ts +0 -20
- package/packages/pdf-lite/src/core/tokens/byte-offset-token.ts +0 -20
- package/packages/pdf-lite/src/core/tokens/comment-token.ts +0 -32
- package/packages/pdf-lite/src/core/tokens/end-array-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-dictionary-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-object-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-stream-token.ts +0 -11
- package/packages/pdf-lite/src/core/tokens/hexadecimal-token.ts +0 -22
- package/packages/pdf-lite/src/core/tokens/name-token.ts +0 -19
- package/packages/pdf-lite/src/core/tokens/null-token.ts +0 -9
- package/packages/pdf-lite/src/core/tokens/number-token.ts +0 -164
- package/packages/pdf-lite/src/core/tokens/object-reference-token.ts +0 -24
- package/packages/pdf-lite/src/core/tokens/start-array-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/start-dictionary-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/start-object-token.ts +0 -28
- package/packages/pdf-lite/src/core/tokens/start-stream-token.ts +0 -52
- package/packages/pdf-lite/src/core/tokens/start-xref-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/stream-chunk-token.ts +0 -8
- package/packages/pdf-lite/src/core/tokens/string-token.ts +0 -17
- package/packages/pdf-lite/src/core/tokens/token.ts +0 -43
- package/packages/pdf-lite/src/core/tokens/trailer-token.ts +0 -12
- package/packages/pdf-lite/src/core/tokens/whitespace-token.ts +0 -43
- package/packages/pdf-lite/src/core/tokens/xref-table-entry-token.ts +0 -65
- package/packages/pdf-lite/src/core/tokens/xref-table-section-start-token.ts +0 -31
- package/packages/pdf-lite/src/core/tokens/xref-table-start-token.ts +0 -13
- package/packages/pdf-lite/src/crypto/key-derivation/key-derivation-aes256.ts +0 -213
- package/packages/pdf-lite/src/crypto/types.ts +0 -6
- package/packages/pdf-lite/src/filters/lzw.ts +0 -144
- package/packages/pdf-lite/src/index.ts +0 -4
- package/packages/pdf-lite/src/pdf/index.ts +0 -4
- package/packages/pdf-lite/src/pdf/pdf-xref-lookup.ts +0 -527
- package/packages/pdf-lite/src/security/handlers/base.ts +0 -625
- package/packages/pdf-lite/src/security/handlers/pubSec.ts +0 -413
- package/packages/pdf-lite/src/security/handlers/utils.ts +0 -304
- package/packages/pdf-lite/src/security/handlers/v1.ts +0 -225
- package/packages/pdf-lite/src/security/handlers/v4.ts +0 -379
- package/packages/pdf-lite/src/security/handlers/v5.ts +0 -298
- package/packages/pdf-lite/src/signing/document-security-store.ts +0 -224
- package/packages/pdf-lite/src/signing/index.ts +0 -3
- package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-detached.ts +0 -154
- package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-sha1.ts +0 -161
- package/packages/pdf-lite/src/signing/signatures/adbe-x509-rsa-sha1.ts +0 -106
- package/packages/pdf-lite/src/signing/signatures/base.ts +0 -229
- package/packages/pdf-lite/src/signing/signatures/etsi-cades-detached.ts +0 -229
- package/packages/pdf-lite/src/signing/signatures/index.ts +0 -6
- package/packages/pdf-lite/src/signing/signer.ts +0 -120
- package/packages/pdf-lite/src/types.ts +0 -44
- package/packages/pdf-lite/src/utils/escapeString.ts +0 -49
- package/packages/pdf-lite/src/utils/unescapeString.ts +0 -123
- package/packages/pdf-lite/test/acceptance/__snapshots__/versions.node.test.ts.snap +0 -60766
- package/packages/pdf-lite/test/acceptance/fixtures/1.3/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-128.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-256.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-128.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-40.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.5/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.6/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.7/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-128.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-256.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-128.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-40.pdf +0 -44
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic.pdf +0 -79
- package/packages/pdf-lite/test/acceptance/versions.node.test.ts +0 -41
- package/packages/pdf-lite/test/unit/__snapshots__/decoder.node.test.ts.snap +0 -86947
- package/packages/pdf-lite/test/unit/__snapshots__/tokeniser.node.test.ts.snap +0 -131829
- package/packages/pdf-lite/test/unit/ciphers.test.ts +0 -61
- package/packages/pdf-lite/test/unit/decoder.node.test.ts +0 -21
- package/packages/pdf-lite/test/unit/decoder.test.ts +0 -567
- package/packages/pdf-lite/test/unit/filters.test.ts +0 -67
- package/packages/pdf-lite/test/unit/fixtures/basic.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-128.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-256.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-128.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-40.pdf +0 -43
- package/packages/pdf-lite/test/unit/fixtures/protectedAdobeLivecycle.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/rsa-2048/index.ts +0 -187
- package/packages/pdf-lite/test/unit/fixtures/template.pdf +0 -0
- package/packages/pdf-lite/test/unit/incremental-update.test.ts +0 -0
- package/packages/pdf-lite/test/unit/objects.test.ts +0 -0
- package/packages/pdf-lite/test/unit/pdf-document-signing.test.ts +0 -0
- package/packages/pdf-lite/test/unit/pdf-revision.test.ts +0 -195
- package/packages/pdf-lite/test/unit/pdf.browser.test.ts +0 -0
- package/packages/pdf-lite/test/unit/predictors.test.ts +0 -226
- package/packages/pdf-lite/test/unit/ref.test.ts +0 -158
- package/packages/pdf-lite/test/unit/security-handlers.test.ts +0 -645
- package/packages/pdf-lite/test/unit/serializer.test.ts +0 -81
- package/packages/pdf-lite/test/unit/signature-objects.test.ts +0 -814
- package/packages/pdf-lite/test/unit/string-escaping.test.ts +0 -84
- package/packages/pdf-lite/test/unit/tokeniser.node.test.ts +0 -38
- package/packages/pdf-lite/test/unit/tokeniser.test.ts +0 -1213
- package/packages/pdf-lite/test/unit/utils.test.ts +0 -248
- package/packages/pdf-lite/test/unit/xref-lookup.test.ts +0 -72
- package/packages/pdf-lite/tsconfig.json +0 -4
- package/packages/pdf-lite/tsconfig.prod.json +0 -8
- package/packages/pdf-lite/typedoc.json +0 -14
- package/packages/pdf-lite/vitest.config.ts +0 -43
- package/pnpm-workspace.yaml +0 -2
- package/renovate.json +0 -34
- package/scripts/build-examples.ts +0 -30
- package/scripts/bump-version.sh +0 -56
- package/scripts/gen-html-docs.sh +0 -21
- package/scripts/gen-md-docs.sh +0 -15
- package/scripts/prepare-release.sh +0 -33
- package/tsconfig.json +0 -22
- package/tsconfig.prod.json +0 -12
- package/typedoc.json +0 -34
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { PdfIndirectObject } from '../core/objects/pdf-indirect-object';
|
|
2
|
+
import { PdfXRefTable, PdfXRefTableEntry } from '../core/objects/pdf-xref-table';
|
|
3
|
+
import { PdfStartXRef } from '../core/objects/pdf-start-xref';
|
|
4
|
+
import { PdfTrailer } from '../core/objects/pdf-trailer';
|
|
5
|
+
import { PdfNumber } from '../core/objects/pdf-number';
|
|
6
|
+
import { PdfComment } from '../core/objects/pdf-comment';
|
|
7
|
+
import { PdfObjStream, PdfStream, PdfXRefStream, PdfXRefStreamCompressedEntry, } from '../core/objects/pdf-stream';
|
|
8
|
+
import { PdfDictionary } from '../core/objects/pdf-dictionary';
|
|
9
|
+
import { PdfObjectReference } from '../core/objects/pdf-object-reference';
|
|
10
|
+
/**
|
|
11
|
+
* Manages cross-reference (xref) lookup for PDF objects.
|
|
12
|
+
* Handles both traditional xref tables and xref streams, including hybrid documents.
|
|
13
|
+
* Supports linking multiple revisions through the Prev chain.
|
|
14
|
+
*/
|
|
15
|
+
export class PdfXrefLookup {
|
|
16
|
+
/** The underlying xref object (either a table or stream) */
|
|
17
|
+
object;
|
|
18
|
+
/** Map of object numbers to their xref entries */
|
|
19
|
+
entries;
|
|
20
|
+
/** Trailer dictionary containing document metadata references */
|
|
21
|
+
trailerDict;
|
|
22
|
+
/** Reference to the previous xref lookup in the revision chain */
|
|
23
|
+
prev;
|
|
24
|
+
type;
|
|
25
|
+
hybridXRefStream;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new xref lookup instance.
|
|
28
|
+
*
|
|
29
|
+
* @param options - Configuration options
|
|
30
|
+
* @param options.type - Type of xref ('table' or 'stream')
|
|
31
|
+
* @param options.object - Pre-existing xref table or stream object
|
|
32
|
+
* @param options.trailerDict - Pre-existing trailer dictionary
|
|
33
|
+
* @param options.prev - Previous xref lookup to link to
|
|
34
|
+
*/
|
|
35
|
+
constructor(options) {
|
|
36
|
+
this.type = options?.type;
|
|
37
|
+
this.entries = new Map();
|
|
38
|
+
this.prev = options?.prev;
|
|
39
|
+
this.trailerDict = options?.trailerDict ?? new PdfDictionary();
|
|
40
|
+
if (options?.object) {
|
|
41
|
+
if (options.object instanceof PdfXRefTable) {
|
|
42
|
+
this.object = options.object;
|
|
43
|
+
}
|
|
44
|
+
else if (options.object.content instanceof PdfXRefStream) {
|
|
45
|
+
this.object = options.object;
|
|
46
|
+
}
|
|
47
|
+
else if (options.object.content instanceof PdfStream) {
|
|
48
|
+
this.object = options.object;
|
|
49
|
+
this.object.content =
|
|
50
|
+
options.object.content.parseAs(PdfXRefStream);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
throw new Error('Provided object is not a valid XRef table or stream');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.object = this.update();
|
|
58
|
+
}
|
|
59
|
+
this.size++;
|
|
60
|
+
if (this.object instanceof PdfIndirectObject)
|
|
61
|
+
this.object.orderIndex = PdfIndirectObject.MAX_ORDER_INDEX;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Links this xref to a previous xref lookup.
|
|
65
|
+
* Copies missing trailer entries from the previous xref.
|
|
66
|
+
*
|
|
67
|
+
* @param xref - The previous xref lookup to link to
|
|
68
|
+
* @throws Error if trying to set self as previous (would create circular reference) or if offsets match (would create ambiguous or invalid xref chain)
|
|
69
|
+
*/
|
|
70
|
+
setPrev(xref) {
|
|
71
|
+
if (xref === this) {
|
|
72
|
+
throw new Error('Cannot set XRef lookup as its own previous lookup');
|
|
73
|
+
}
|
|
74
|
+
if (xref.offset === this.offset) {
|
|
75
|
+
throw new Error('Cannot set XRef lookup previous to another lookup with the same offset');
|
|
76
|
+
}
|
|
77
|
+
this.prev = xref;
|
|
78
|
+
const prevDict = xref.trailerDict;
|
|
79
|
+
const dict = this.trailerDict;
|
|
80
|
+
!dict.has('Info') && dict.set('Info', prevDict.get('Info')?.clone());
|
|
81
|
+
!dict.has('Root') && dict.set('Root', prevDict.get('Root')?.clone());
|
|
82
|
+
!dict.has('Encrypt') &&
|
|
83
|
+
dict.set('Encrypt', prevDict.get('Encrypt')?.clone());
|
|
84
|
+
!dict.has('ID') && dict.set('ID', prevDict.get('ID')?.clone());
|
|
85
|
+
!dict.has('Prev') && dict.set('Prev', new PdfNumber(xref.offset));
|
|
86
|
+
const prev = dict.get('Prev');
|
|
87
|
+
if (prev) {
|
|
88
|
+
prev.isByteOffset = true;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Sets the byte offset of the xref object.
|
|
93
|
+
*/
|
|
94
|
+
set offset(value) {
|
|
95
|
+
this.object.offset = value;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Gets the byte offset of the xref object.
|
|
99
|
+
*/
|
|
100
|
+
get offset() {
|
|
101
|
+
return this.object.offset;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Creates xref lookups from an array of PDF objects.
|
|
105
|
+
* Parses both xref tables and xref streams, linking them via the Prev chain.
|
|
106
|
+
*
|
|
107
|
+
* @param objects - Array of PDF objects to parse
|
|
108
|
+
* @returns The most recent xref lookup with linked previous lookups
|
|
109
|
+
*/
|
|
110
|
+
static fromObjects(objects) {
|
|
111
|
+
const lookups = [];
|
|
112
|
+
for (let i = 0; i < objects.length; i++) {
|
|
113
|
+
const obj = objects[i];
|
|
114
|
+
if (obj instanceof PdfXRefTable) {
|
|
115
|
+
const trailer = objects[i + 1];
|
|
116
|
+
if (!(trailer instanceof PdfTrailer)) {
|
|
117
|
+
throw new Error('Expected PdfTrailer after PdfXRefTable in objects');
|
|
118
|
+
}
|
|
119
|
+
lookups.push(PdfXrefLookup.fromXrefTable(obj, trailer, objects));
|
|
120
|
+
}
|
|
121
|
+
else if (obj instanceof PdfIndirectObject &&
|
|
122
|
+
obj.content instanceof PdfStream &&
|
|
123
|
+
obj.content.isType('XRef')) {
|
|
124
|
+
lookups.push(PdfXrefLookup.fromXrefStream(obj));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (!lookups.length) {
|
|
128
|
+
return new PdfXrefLookup();
|
|
129
|
+
}
|
|
130
|
+
const startXref = objects.findLast((x) => x instanceof PdfStartXRef);
|
|
131
|
+
if (!startXref) {
|
|
132
|
+
throw new Error('No PdfStartXRef found in provided objects');
|
|
133
|
+
}
|
|
134
|
+
let lookup = lookups.find((x) => x.offset.equals(startXref.offset.ref));
|
|
135
|
+
if (!lookup) {
|
|
136
|
+
return lookups[0];
|
|
137
|
+
}
|
|
138
|
+
const initialLookup = lookup;
|
|
139
|
+
while (lookup) {
|
|
140
|
+
lookup.prev = lookups.find((x) => x.offset.equals(lookup?.trailerDict.get('Prev')?.value));
|
|
141
|
+
lookup = lookup.prev;
|
|
142
|
+
}
|
|
143
|
+
return initialLookup;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Creates an xref lookup from a traditional xref table and trailer.
|
|
147
|
+
* Handles hybrid xref documents with both table and stream entries.
|
|
148
|
+
*
|
|
149
|
+
* @param xrefTable - The xref table object
|
|
150
|
+
* @param trailer - The trailer object
|
|
151
|
+
* @param objects - Optional array of objects for resolving hybrid xref streams
|
|
152
|
+
* @returns A new PdfXrefLookup instance
|
|
153
|
+
*/
|
|
154
|
+
static fromXrefTable(xrefTable, trailer, objects) {
|
|
155
|
+
const lookup = new PdfXrefLookup({ object: xrefTable });
|
|
156
|
+
lookup.trailerDict = trailer.dict;
|
|
157
|
+
xrefTable.entries.forEach((entry) => {
|
|
158
|
+
lookup.entries.set(entry.objectNumber.value, entry);
|
|
159
|
+
});
|
|
160
|
+
// Handle hybrid xref: check for XRefStm in trailer
|
|
161
|
+
const xrefStmOffset = trailer.dict.get('XRefStm');
|
|
162
|
+
if (xrefStmOffset instanceof PdfNumber && objects) {
|
|
163
|
+
// Find the xref stream object at this offset
|
|
164
|
+
const xrefStreamObj = objects.find((obj) => obj instanceof PdfIndirectObject &&
|
|
165
|
+
obj.content instanceof PdfStream &&
|
|
166
|
+
obj.content.isType('XRef') &&
|
|
167
|
+
obj.offset.equals(xrefStmOffset.value));
|
|
168
|
+
if (xrefStreamObj) {
|
|
169
|
+
const stream = xrefStreamObj.content.parseAs(PdfXRefStream);
|
|
170
|
+
// Add entries from the xref stream (these are typically compressed objects)
|
|
171
|
+
for (const entry of stream.getEntryStream()) {
|
|
172
|
+
// Only add if not already present in the table
|
|
173
|
+
if (!lookup.entries.has(entry.objectNumber.value)) {
|
|
174
|
+
lookup.entries.set(entry.objectNumber.value, entry);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return lookup;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Creates an xref lookup from an xref stream object.
|
|
183
|
+
*
|
|
184
|
+
* @param streamObject - The indirect object containing the xref stream
|
|
185
|
+
* @returns A new PdfXrefLookup instance
|
|
186
|
+
*/
|
|
187
|
+
static fromXrefStream(streamObject) {
|
|
188
|
+
const stream = streamObject.content.parseAs(PdfXRefStream);
|
|
189
|
+
const lookup = new PdfXrefLookup({ object: streamObject });
|
|
190
|
+
for (const entry of stream.getEntryStream()) {
|
|
191
|
+
lookup.entries.set(entry.objectNumber.value, entry);
|
|
192
|
+
}
|
|
193
|
+
lookup.trailerDict = stream.header;
|
|
194
|
+
return lookup;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Gets the size of the xref table (highest object number + 1).
|
|
198
|
+
* Ensures size is at least as large as the previous revision.
|
|
199
|
+
*/
|
|
200
|
+
get size() {
|
|
201
|
+
const trailerSize = this.trailerDict.get('Size')?.value ?? 0;
|
|
202
|
+
const prevSize = this.prev?.size ?? 0;
|
|
203
|
+
if (trailerSize < prevSize) {
|
|
204
|
+
this.trailerDict.set('Size', new PdfNumber(prevSize));
|
|
205
|
+
}
|
|
206
|
+
const size = Math.max(trailerSize, prevSize);
|
|
207
|
+
this.trailerDict.set('Size', new PdfNumber(size));
|
|
208
|
+
return size;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Sets the size of the xref table.
|
|
212
|
+
*/
|
|
213
|
+
set size(value) {
|
|
214
|
+
this.trailerDict.set('Size', new PdfNumber(value));
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Gets all xref entries as an array.
|
|
218
|
+
*/
|
|
219
|
+
get entriesValues() {
|
|
220
|
+
return Array.from(this.entries.values());
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Links xref entries to their corresponding indirect objects.
|
|
224
|
+
* Updates byte offset references to point to actual object offsets.
|
|
225
|
+
*
|
|
226
|
+
* @param objects - Array of indirect objects to link
|
|
227
|
+
*/
|
|
228
|
+
linkIndirectObjects(objects) {
|
|
229
|
+
for (const entry of this.entriesValues) {
|
|
230
|
+
if (entry instanceof PdfXRefStreamCompressedEntry) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (!entry.inUse) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
const [matchedObject] = objects.filter((obj) => obj.offset.equals(entry.byteOffset.value));
|
|
237
|
+
if (!matchedObject ||
|
|
238
|
+
matchedObject.objectNumber !== entry.objectNumber.value) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
entry.byteOffset.ref.update(matchedObject.offset);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Links this xref to a previous xref lookup based on the Prev trailer entry.
|
|
246
|
+
*
|
|
247
|
+
* @param objects - Array of xref lookups to search for the previous one
|
|
248
|
+
*/
|
|
249
|
+
linkPrev(objects) {
|
|
250
|
+
const prevOffset = this.trailerDict.get('Prev')?.value;
|
|
251
|
+
if (prevOffset === undefined) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const prevLookup = objects.filter((obj) => obj.offset.equals(prevOffset));
|
|
255
|
+
if (prevLookup.length === 0) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
else if (prevLookup.length > 1) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (prevLookup[0].offset.equals(0))
|
|
262
|
+
return;
|
|
263
|
+
this.setPrev(prevLookup[0]);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Updates the xref object with current entries.
|
|
267
|
+
* Handles both table and stream formats, including hybrid documents.
|
|
268
|
+
*
|
|
269
|
+
* @returns The updated xref object
|
|
270
|
+
*/
|
|
271
|
+
update() {
|
|
272
|
+
if (this.object instanceof PdfXRefTable) {
|
|
273
|
+
const tableEntries = this.entriesValues.filter((entry) => entry instanceof PdfXRefTableEntry);
|
|
274
|
+
const compressedEntries = this.entriesValues.filter((entry) => entry instanceof PdfXRefStreamCompressedEntry);
|
|
275
|
+
this.object.entries = tableEntries;
|
|
276
|
+
// If there are compressed entries, create a hybrid xref with an XRefStm
|
|
277
|
+
if (compressedEntries.length > 0) {
|
|
278
|
+
this.hybridXRefStream = new PdfIndirectObject({
|
|
279
|
+
content: PdfXRefStream.fromEntries(compressedEntries),
|
|
280
|
+
});
|
|
281
|
+
// Store reference to the xref stream offset
|
|
282
|
+
this.trailerDict.set('XRefStm', new PdfNumber(this.hybridXRefStream.offset));
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Remove XRefStm if no compressed entries exist
|
|
286
|
+
this.trailerDict.delete('XRefStm');
|
|
287
|
+
this.hybridXRefStream = undefined;
|
|
288
|
+
}
|
|
289
|
+
return this.object;
|
|
290
|
+
}
|
|
291
|
+
else if (this.object instanceof PdfIndirectObject) {
|
|
292
|
+
this.object.content = PdfXRefStream.fromEntries(this.entriesValues, this.trailerDict);
|
|
293
|
+
return this.object;
|
|
294
|
+
}
|
|
295
|
+
let newObject;
|
|
296
|
+
if (this.type === 'table') {
|
|
297
|
+
newObject = new PdfXRefTable();
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
newObject = new PdfIndirectObject({
|
|
301
|
+
content: PdfXRefStream.fromEntries(this.entriesValues, this.trailerDict),
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
this.object = newObject;
|
|
305
|
+
return this.object;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Adds an indirect object to the xref lookup.
|
|
309
|
+
* Assigns an object number if not already set.
|
|
310
|
+
*
|
|
311
|
+
* @param newObject - The indirect object to add
|
|
312
|
+
* @param options - Options for compressed objects
|
|
313
|
+
* @param options.parentObjectNumber - Object number of the containing object stream
|
|
314
|
+
* @param options.indexInStream - Index within the object stream
|
|
315
|
+
* @throws Error if trying to add compressed object with non-zero generation number
|
|
316
|
+
*/
|
|
317
|
+
addObject(newObject, options) {
|
|
318
|
+
if (!newObject.inPdf()) {
|
|
319
|
+
newObject.objectNumber = this.size++;
|
|
320
|
+
}
|
|
321
|
+
if (options?.indexInStream !== undefined &&
|
|
322
|
+
options?.parentObjectNumber !== undefined) {
|
|
323
|
+
if (newObject.generationNumber !== 0) {
|
|
324
|
+
throw new Error('Object streams cannot contain objects with generation number other than 0');
|
|
325
|
+
}
|
|
326
|
+
this.entries.set(newObject.objectNumber, new PdfXRefStreamCompressedEntry({
|
|
327
|
+
objectNumber: newObject.objectNumber,
|
|
328
|
+
objectStreamNumber: options.parentObjectNumber,
|
|
329
|
+
index: options.indexInStream,
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
this.entries.set(newObject.objectNumber, new PdfXRefTableEntry({
|
|
334
|
+
objectNumber: newObject.objectNumber,
|
|
335
|
+
generationNumber: newObject.generationNumber,
|
|
336
|
+
byteOffset: newObject.offset,
|
|
337
|
+
inUse: true,
|
|
338
|
+
}));
|
|
339
|
+
}
|
|
340
|
+
this.update();
|
|
341
|
+
if (newObject.content instanceof PdfObjStream) {
|
|
342
|
+
let index = 0;
|
|
343
|
+
for (const child of newObject.content.getObjectStream()) {
|
|
344
|
+
this.addObject(child, {
|
|
345
|
+
parentObjectNumber: newObject.objectNumber,
|
|
346
|
+
indexInStream: index++,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Removes an indirect object from the xref lookup.
|
|
353
|
+
* Also removes any trailer references to the object.
|
|
354
|
+
*
|
|
355
|
+
* @param object - The indirect object to remove
|
|
356
|
+
*/
|
|
357
|
+
removeObject(object) {
|
|
358
|
+
this.entries.delete(object.objectNumber);
|
|
359
|
+
const trailerValues = this.trailerDict.values;
|
|
360
|
+
for (const entry of Object.keys(trailerValues)) {
|
|
361
|
+
const value = trailerValues[entry];
|
|
362
|
+
if (value instanceof PdfObjectReference &&
|
|
363
|
+
value.equals(object.reference)) {
|
|
364
|
+
this.trailerDict.delete(entry);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
this.update();
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Gets an xref entry by object number.
|
|
371
|
+
* Falls back to the previous xref if not found in current entries.
|
|
372
|
+
*
|
|
373
|
+
* @param objectNumber - The object number to look up
|
|
374
|
+
* @returns The xref entry or undefined if not found
|
|
375
|
+
*/
|
|
376
|
+
getObject(objectNumber) {
|
|
377
|
+
if (!this.entries.has(objectNumber) && this.prev) {
|
|
378
|
+
return this.prev.getObject(objectNumber);
|
|
379
|
+
}
|
|
380
|
+
return this.entries.get(objectNumber);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Generates the trailer section objects for this xref.
|
|
384
|
+
* Includes xref table/stream, trailer (if using table), startxref, and EOF.
|
|
385
|
+
*
|
|
386
|
+
* @returns Array of objects forming the trailer section
|
|
387
|
+
*/
|
|
388
|
+
toTrailerSection() {
|
|
389
|
+
const objects = [];
|
|
390
|
+
// If this is a hybrid xref table with compressed entries, add the xref stream first
|
|
391
|
+
if (this.object instanceof PdfXRefTable && this.hybridXRefStream) {
|
|
392
|
+
objects.push(this.hybridXRefStream);
|
|
393
|
+
}
|
|
394
|
+
objects.push(this.object);
|
|
395
|
+
if (this.object instanceof PdfXRefTable) {
|
|
396
|
+
objects.push(new PdfTrailer(this.trailerDict));
|
|
397
|
+
}
|
|
398
|
+
objects.push(new PdfStartXRef(this.object.offset));
|
|
399
|
+
objects.push(PdfComment.EOF);
|
|
400
|
+
return objects;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { PdfCryptFilter, CryptFilterOptions } from './base';
|
|
2
|
+
import { Cipher } from '../../crypto/types';
|
|
3
|
+
/**
|
|
4
|
+
* AESV2 crypt filter using AES-128-CBC encryption.
|
|
5
|
+
* Implements 128-bit AES encryption in CBC mode for PDF content.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const filter = new AesV2CryptFilter({
|
|
10
|
+
* authEvent: 'DocOpen',
|
|
11
|
+
* securityHandler
|
|
12
|
+
* })
|
|
13
|
+
* const encrypted = await filter.encrypt(data, objectNumber, generationNumber)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class AesV2CryptFilter extends PdfCryptFilter {
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new AES-128 crypt filter.
|
|
19
|
+
*
|
|
20
|
+
* @param options - Configuration options with authentication event and security handler.
|
|
21
|
+
*/
|
|
22
|
+
constructor(options: {
|
|
23
|
+
authEvent: CryptFilterOptions['authEvent'];
|
|
24
|
+
securityHandler?: CryptFilterOptions['securityHandler'];
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Gets an AES-128 cipher for encryption/decryption.
|
|
28
|
+
*
|
|
29
|
+
* @param objectNumber - The PDF object number for key derivation.
|
|
30
|
+
* @param generationNumber - The PDF generation number for key derivation.
|
|
31
|
+
* @returns An AES-128 cipher instance.
|
|
32
|
+
* @throws Error if security handler is not set.
|
|
33
|
+
*/
|
|
34
|
+
getCipher(objectNumber?: number, generationNumber?: number): Promise<Cipher>;
|
|
35
|
+
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { PdfCryptFilter
|
|
2
|
-
import { aes128 } from '../../crypto/ciphers/aes128'
|
|
3
|
-
import { Cipher } from '../../crypto/types'
|
|
4
|
-
|
|
1
|
+
import { PdfCryptFilter } from './base';
|
|
2
|
+
import { aes128 } from '../../crypto/ciphers/aes128';
|
|
5
3
|
/**
|
|
6
4
|
* AESV2 crypt filter using AES-128-CBC encryption.
|
|
7
5
|
* Implements 128-bit AES encryption in CBC mode for PDF content.
|
|
@@ -21,13 +19,9 @@ export class AesV2CryptFilter extends PdfCryptFilter {
|
|
|
21
19
|
*
|
|
22
20
|
* @param options - Configuration options with authentication event and security handler.
|
|
23
21
|
*/
|
|
24
|
-
constructor(options
|
|
25
|
-
|
|
26
|
-
securityHandler?: CryptFilterOptions['securityHandler']
|
|
27
|
-
}) {
|
|
28
|
-
super({ ...options, cfm: 'AESV2', length: 128 })
|
|
22
|
+
constructor(options) {
|
|
23
|
+
super({ ...options, cfm: 'AESV2', length: 128 });
|
|
29
24
|
}
|
|
30
|
-
|
|
31
25
|
/**
|
|
32
26
|
* Gets an AES-128 cipher for encryption/decryption.
|
|
33
27
|
*
|
|
@@ -36,23 +30,12 @@ export class AesV2CryptFilter extends PdfCryptFilter {
|
|
|
36
30
|
* @returns An AES-128 cipher instance.
|
|
37
31
|
* @throws Error if security handler is not set.
|
|
38
32
|
*/
|
|
39
|
-
async getCipher(
|
|
40
|
-
|
|
41
|
-
generationNumber?: number,
|
|
42
|
-
): Promise<Cipher> {
|
|
43
|
-
const securityHandler = this.securityHandler
|
|
33
|
+
async getCipher(objectNumber, generationNumber) {
|
|
34
|
+
const securityHandler = this.securityHandler;
|
|
44
35
|
if (!securityHandler) {
|
|
45
|
-
throw new Error('Missing security handler for AESV2 crypt filter')
|
|
36
|
+
throw new Error('Missing security handler for AESV2 crypt filter');
|
|
46
37
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
objectNumber,
|
|
50
|
-
generationNumber,
|
|
51
|
-
'AES-128-CBC',
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
return aes128(
|
|
55
|
-
objectKey.slice(0, 16), // AES-128 needs a 16-byte key
|
|
56
|
-
)
|
|
38
|
+
const objectKey = await securityHandler.computeObjectKey(objectNumber, generationNumber, 'AES-128-CBC');
|
|
39
|
+
return aes128(objectKey.slice(0, 16));
|
|
57
40
|
}
|
|
58
41
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Cipher } from '../../crypto/types';
|
|
2
|
+
import { PdfCryptFilter, CryptFilterOptions } from './base';
|
|
3
|
+
/**
|
|
4
|
+
* AESV3 crypt filter using AES-256-CBC encryption.
|
|
5
|
+
* Implements 256-bit AES encryption in CBC mode for PDF content.
|
|
6
|
+
* This is the recommended encryption method for new documents.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const filter = new AesV3CryptFilter({
|
|
11
|
+
* authEvent: 'DocOpen',
|
|
12
|
+
* securityHandler
|
|
13
|
+
* })
|
|
14
|
+
* const encrypted = await filter.encrypt(data, objectNumber, generationNumber)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class AesV3CryptFilter extends PdfCryptFilter {
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new AES-256 crypt filter.
|
|
20
|
+
*
|
|
21
|
+
* @param options - Configuration options with authentication event and security handler.
|
|
22
|
+
*/
|
|
23
|
+
constructor(options: {
|
|
24
|
+
authEvent: CryptFilterOptions['authEvent'];
|
|
25
|
+
securityHandler?: CryptFilterOptions['securityHandler'];
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Gets an AES-256 cipher for encryption/decryption.
|
|
29
|
+
*
|
|
30
|
+
* @param objectNumber - The PDF object number (unused for AESV3).
|
|
31
|
+
* @param generationNumber - The PDF generation number (unused for AESV3).
|
|
32
|
+
* @returns An AES-256 cipher instance.
|
|
33
|
+
* @throws Error if security handler is not set.
|
|
34
|
+
*/
|
|
35
|
+
getCipher(objectNumber?: number, generationNumber?: number): Promise<Cipher>;
|
|
36
|
+
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { aes256 } from '../../crypto/ciphers/aes256'
|
|
2
|
-
import {
|
|
3
|
-
import { PdfCryptFilter, CryptFilterOptions } from './base'
|
|
4
|
-
|
|
1
|
+
import { aes256 } from '../../crypto/ciphers/aes256';
|
|
2
|
+
import { PdfCryptFilter } from './base';
|
|
5
3
|
/**
|
|
6
4
|
* AESV3 crypt filter using AES-256-CBC encryption.
|
|
7
5
|
* Implements 256-bit AES encryption in CBC mode for PDF content.
|
|
@@ -22,13 +20,9 @@ export class AesV3CryptFilter extends PdfCryptFilter {
|
|
|
22
20
|
*
|
|
23
21
|
* @param options - Configuration options with authentication event and security handler.
|
|
24
22
|
*/
|
|
25
|
-
constructor(options
|
|
26
|
-
|
|
27
|
-
securityHandler?: CryptFilterOptions['securityHandler']
|
|
28
|
-
}) {
|
|
29
|
-
super({ ...options, cfm: 'AESV3', length: 256 })
|
|
23
|
+
constructor(options) {
|
|
24
|
+
super({ ...options, cfm: 'AESV3', length: 256 });
|
|
30
25
|
}
|
|
31
|
-
|
|
32
26
|
/**
|
|
33
27
|
* Gets an AES-256 cipher for encryption/decryption.
|
|
34
28
|
*
|
|
@@ -37,20 +31,12 @@ export class AesV3CryptFilter extends PdfCryptFilter {
|
|
|
37
31
|
* @returns An AES-256 cipher instance.
|
|
38
32
|
* @throws Error if security handler is not set.
|
|
39
33
|
*/
|
|
40
|
-
async getCipher(
|
|
41
|
-
|
|
42
|
-
generationNumber?: number,
|
|
43
|
-
): Promise<Cipher> {
|
|
44
|
-
const securityHandler = this.securityHandler
|
|
34
|
+
async getCipher(objectNumber, generationNumber) {
|
|
35
|
+
const securityHandler = this.securityHandler;
|
|
45
36
|
if (!securityHandler) {
|
|
46
|
-
throw new Error('Missing security handler for AESV3 crypt filter')
|
|
37
|
+
throw new Error('Missing security handler for AESV3 crypt filter');
|
|
47
38
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
objectNumber,
|
|
51
|
-
generationNumber,
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
return aes256(objectKey)
|
|
39
|
+
const objectKey = await securityHandler.computeObjectKey(objectNumber, generationNumber);
|
|
40
|
+
return aes256(objectKey);
|
|
55
41
|
}
|
|
56
42
|
}
|