From ef667823dd9d0f4d318f48c10263bb5d809b98be Mon Sep 17 00:00:00 2001 From: Tony Jin Date: Wed, 21 Oct 2015 16:56:27 -0700 Subject: [PATCH] [api-minor] Add an optional param to DocumentInitParameters for specifying the range request chunk size to use. Defaults to 2^16 = 65536. --- src/core/pdf_manager.js | 6 ++---- src/core/worker.js | 4 ++-- src/display/api.js | 7 +++++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/pdf_manager.js b/src/core/pdf_manager.js index b264fdef9..9ae1b0d4d 100644 --- a/src/core/pdf_manager.js +++ b/src/core/pdf_manager.js @@ -19,9 +19,6 @@ 'use strict'; -// The maximum number of bytes fetched per range request -var RANGE_CHUNK_SIZE = 65536; - // TODO(mack): Make use of PDFJS.Util.inherit() when it becomes available var BasePdfManager = (function BasePdfManagerClosure() { function BasePdfManager() { @@ -153,7 +150,8 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() { disableAutoFetch: args.disableAutoFetch, initialData: args.initialData }; - this.streamManager = new ChunkedStreamManager(args.length, RANGE_CHUNK_SIZE, + this.streamManager = new ChunkedStreamManager(args.length, + args.rangeChunkSize, args.url, params); this.pdfDocument = new PDFDocument(this, this.streamManager.getStream(), diff --git a/src/core/worker.js b/src/core/worker.js index 7440534e7..efd716478 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -15,7 +15,7 @@ * limitations under the License. */ /* globals PDFJS, createPromiseCapability, LocalPdfManager, NetworkPdfManager, - NetworkManager, isInt, RANGE_CHUNK_SIZE, MissingPDFException, + NetworkManager, isInt, MissingPDFException, UnexpectedResponseException, PasswordException, Promise, warn, PasswordResponses, InvalidPDFException, UnknownErrorException, XRefParseException, Ref, info, globalScope, error, MessageHandler */ @@ -160,7 +160,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { return; } source.length = length; - if (length <= 2 * RANGE_CHUNK_SIZE) { + if (length <= 2 * source.rangeChunkSize) { // The file size is smaller than the size of two chunks, so it does // not make any sense to abort the request and retry with a range // request. diff --git a/src/display/api.js b/src/display/api.js index f097bcad6..1c354234e 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -23,6 +23,8 @@ 'use strict'; +var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536 + /** * The maximum allowed image size in total pixels e.g. width * height. Images * above this value will not be drawn. Use -1 for no limit. @@ -217,6 +219,9 @@ PDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ? * @property {number} length - The PDF file length. It's used for progress * reports and range requests operations. * @property {PDFDataRangeTransport} range + * @property {number} rangeChunkSize - Optional parameter to specify + * maximum number of bytes fetched per range request. The default value is + * 2^16 = 65536. */ /** @@ -326,6 +331,8 @@ PDFJS.getDocument = function getDocument(src, params[key] = source[key]; } + params.rangeChunkSize = source.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; + workerInitializedCapability = createPromiseCapability(); transport = new WorkerTransport(workerInitializedCapability, source.range); workerInitializedCapability.promise.then(function transportInitialized() {