UNPKG

@cantoo/pdf-lib

Version:

Create and modify PDF files with JavaScript

62 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.decodePDFRawStream = void 0; const tslib_1 = require("tslib"); const errors_1 = require("../errors"); const PDFArray_1 = tslib_1.__importDefault(require("../objects/PDFArray")); const PDFDict_1 = tslib_1.__importDefault(require("../objects/PDFDict")); const PDFName_1 = tslib_1.__importDefault(require("../objects/PDFName")); const PDFNumber_1 = tslib_1.__importDefault(require("../objects/PDFNumber")); const Ascii85Stream_1 = tslib_1.__importDefault(require("./Ascii85Stream")); const AsciiHexStream_1 = tslib_1.__importDefault(require("./AsciiHexStream")); const FlateStream_1 = tslib_1.__importDefault(require("./FlateStream")); const LZWStream_1 = tslib_1.__importDefault(require("./LZWStream")); const RunLengthStream_1 = tslib_1.__importDefault(require("./RunLengthStream")); const Stream_1 = tslib_1.__importDefault(require("./Stream")); const decodeStream = (stream, encoding, params) => { if (encoding === PDFName_1.default.of('FlateDecode')) { return new FlateStream_1.default(stream); } if (encoding === PDFName_1.default.of('LZWDecode')) { let earlyChange = 1; if (params instanceof PDFDict_1.default) { const EarlyChange = params.lookup(PDFName_1.default.of('EarlyChange')); if (EarlyChange instanceof PDFNumber_1.default) { earlyChange = EarlyChange.asNumber(); } } return new LZWStream_1.default(stream, undefined, earlyChange); } if (encoding === PDFName_1.default.of('ASCII85Decode')) { return new Ascii85Stream_1.default(stream); } if (encoding === PDFName_1.default.of('ASCIIHexDecode')) { return new AsciiHexStream_1.default(stream); } if (encoding === PDFName_1.default.of('RunLengthDecode')) { return new RunLengthStream_1.default(stream); } throw new errors_1.UnsupportedEncodingError(encoding.asString()); }; const decodePDFRawStream = ({ dict, contents, transform, }) => { let stream = new Stream_1.default(contents); if (transform) { stream = transform.createStream(stream, contents.length); } const Filter = dict.lookup(PDFName_1.default.of('Filter')); const DecodeParms = dict.lookup(PDFName_1.default.of('DecodeParms')); if (Filter instanceof PDFName_1.default) { stream = decodeStream(stream, Filter, DecodeParms); } else if (Filter instanceof PDFArray_1.default) { for (let idx = 0, len = Filter.size(); idx < len; idx++) { stream = decodeStream(stream, Filter.lookup(idx, PDFName_1.default), DecodeParms && DecodeParms.lookupMaybe(idx, PDFDict_1.default)); } } else if (Filter) { throw new errors_1.UnexpectedObjectTypeError([PDFName_1.default, PDFArray_1.default], Filter); } return stream; }; exports.decodePDFRawStream = decodePDFRawStream; //# sourceMappingURL=decode.js.map