[api-minor] Add an optional param to DocumentInitParameters for specifying the range request chunk size to use. Defaults to 2^16 = 65536.

This commit is contained in:
Tony Jin 2015-10-21 16:56:27 -07:00
parent aae82ec4c5
commit ef667823dd
3 changed files with 11 additions and 6 deletions

View File

@ -19,9 +19,6 @@
'use strict'; '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 // TODO(mack): Make use of PDFJS.Util.inherit() when it becomes available
var BasePdfManager = (function BasePdfManagerClosure() { var BasePdfManager = (function BasePdfManagerClosure() {
function BasePdfManager() { function BasePdfManager() {
@ -153,7 +150,8 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() {
disableAutoFetch: args.disableAutoFetch, disableAutoFetch: args.disableAutoFetch,
initialData: args.initialData initialData: args.initialData
}; };
this.streamManager = new ChunkedStreamManager(args.length, RANGE_CHUNK_SIZE, this.streamManager = new ChunkedStreamManager(args.length,
args.rangeChunkSize,
args.url, params); args.url, params);
this.pdfDocument = new PDFDocument(this, this.streamManager.getStream(), this.pdfDocument = new PDFDocument(this, this.streamManager.getStream(),

View File

@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
/* globals PDFJS, createPromiseCapability, LocalPdfManager, NetworkPdfManager, /* globals PDFJS, createPromiseCapability, LocalPdfManager, NetworkPdfManager,
NetworkManager, isInt, RANGE_CHUNK_SIZE, MissingPDFException, NetworkManager, isInt, MissingPDFException,
UnexpectedResponseException, PasswordException, Promise, warn, UnexpectedResponseException, PasswordException, Promise, warn,
PasswordResponses, InvalidPDFException, UnknownErrorException, PasswordResponses, InvalidPDFException, UnknownErrorException,
XRefParseException, Ref, info, globalScope, error, MessageHandler */ XRefParseException, Ref, info, globalScope, error, MessageHandler */
@ -160,7 +160,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
return; return;
} }
source.length = length; 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 // 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 // not make any sense to abort the request and retry with a range
// request. // request.

View File

@ -23,6 +23,8 @@
'use strict'; 'use strict';
var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536
/** /**
* The maximum allowed image size in total pixels e.g. width * height. Images * 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. * 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 * @property {number} length - The PDF file length. It's used for progress
* reports and range requests operations. * reports and range requests operations.
* @property {PDFDataRangeTransport} range * @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[key] = source[key];
} }
params.rangeChunkSize = source.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
workerInitializedCapability = createPromiseCapability(); workerInitializedCapability = createPromiseCapability();
transport = new WorkerTransport(workerInitializedCapability, source.range); transport = new WorkerTransport(workerInitializedCapability, source.range);
workerInitializedCapability.promise.then(function transportInitialized() { workerInitializedCapability.promise.then(function transportInitialized() {