Limit image size to 1024*1024 for b2g.

This commit is contained in:
Brendan Dahl 2013-07-10 09:52:37 -07:00
parent d71948038f
commit bcc085ec52
5 changed files with 26 additions and 2 deletions

View File

@ -25,7 +25,6 @@ limitations under the License.
<link rel="resource" type="application/l10n" href="locale.properties"/> <link rel="resource" type="application/l10n" href="locale.properties"/>
<link rel="stylesheet" href="/shared/style/headers.css" type="text/css" /> <link rel="stylesheet" href="/shared/style/headers.css" type="text/css" />
<link rel="stylesheet" href="viewer-b2g.css" type="text/css" /> <link rel="stylesheet" href="viewer-b2g.css" type="text/css" />
<link rel="stylesheet" href="/shared/style/responsive.css" type="text/css" />
<script type="text/javascript" src="l10n.js"></script> <script type="text/javascript" src="l10n.js"></script>
<script type="text/javascript" src="../build/pdf.js"></script> <script type="text/javascript" src="../build/pdf.js"></script>
<script type="text/javascript" src="/shared/js/async_storage.js"></script> <script type="text/javascript" src="/shared/js/async_storage.js"></script>

View File

@ -21,6 +21,13 @@
'use strict'; 'use strict';
/**
* 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.
* @var {Number}
*/
PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize;
/** /**
* This is the main entry point for loading a PDF and interacting with it. * This is the main entry point for loading a PDF and interacting with it.
* NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR) * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)
@ -760,7 +767,8 @@ var WorkerTransport = (function WorkerTransportClosure() {
source.chunkedViewerLoading = !!this.pdfDataRangeTransport; source.chunkedViewerLoading = !!this.pdfDataRangeTransport;
this.messageHandler.send('GetDocRequest', { this.messageHandler.send('GetDocRequest', {
source: source, source: source,
disableRange: PDFJS.disableRange disableRange: PDFJS.disableRange,
maxImageSize: PDFJS.maxImageSize
}); });
}, },

View File

@ -234,6 +234,11 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
var w = dict.get('Width', 'W'); var w = dict.get('Width', 'W');
var h = dict.get('Height', 'H'); var h = dict.get('Height', 'H');
if (PDFJS.maxImageSize !== -1 && w * h > PDFJS.maxImageSize) {
warn('Image exceeded maximum allowed size and was removed.');
return null;
}
var dependencies = {}; var dependencies = {};
var retData = { var retData = {
dependencies: dependencies dependencies: dependencies
@ -706,6 +711,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
} else if ('Image' == type.name) { } else if ('Image' == type.name) {
var data = self.buildPaintImageXObject( var data = self.buildPaintImageXObject(
resources, xobj, false); resources, xobj, false);
if (!data) {
args = [];
continue;
}
Util.extendObj(dependencies, data.dependencies); Util.extendObj(dependencies, data.dependencies);
self.insertDependencies(queue, data.dependencies); self.insertDependencies(queue, data.dependencies);
fn = data.fn; fn = data.fn;
@ -720,6 +729,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
} else if (cmd == 'EI') { } else if (cmd == 'EI') {
var data = self.buildPaintImageXObject( var data = self.buildPaintImageXObject(
resources, args[0], true); resources, args[0], true);
if (!data) {
args = [];
continue;
}
Util.extendObj(dependencies, data.dependencies); Util.extendObj(dependencies, data.dependencies);
self.insertDependencies(queue, data.dependencies); self.insertDependencies(queue, data.dependencies);
fn = data.fn; fn = data.fn;

View File

@ -307,6 +307,9 @@ var WorkerMessageHandler = {
} }
}; };
PDFJS.maxImageSize = data.maxImageSize === undefined ?
-1 : data.maxImageSize;
getPdfManager(data).then(function pdfManagerReady() { getPdfManager(data).then(function pdfManagerReady() {
loadDocument(false).then(onSuccess, function loadFailure(ex) { loadDocument(false).then(onSuccess, function loadFailure(ex) {
// Try again with recoveryMode == true // Try again with recoveryMode == true

View File

@ -3201,6 +3201,7 @@ window.addEventListener('afterprint', function afterPrint(evt) {
//#if B2G //#if B2G
//window.navigator.mozSetMessageHandler('activity', function(activity) { //window.navigator.mozSetMessageHandler('activity', function(activity) {
// var url = activity.source.data.url; // var url = activity.source.data.url;
// PDFJS.maxImageSize = 1024 * 1024;
// PDFView.open(url); // PDFView.open(url);
// var cancelButton = document.getElementById('activityClose'); // var cancelButton = document.getElementById('activityClose');
// cancelButton.addEventListener('click', function() { // cancelButton.addEventListener('click', function() {