2016-04-02 00:29:44 +09:00
|
|
|
/* Copyright 2016 Mozilla Foundation
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
2016-04-09 02:34:27 +09:00
|
|
|
/*globals require, chrome */
|
2016-04-02 00:29:44 +09:00
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf';
|
|
|
|
|
2016-04-09 04:15:48 +09:00
|
|
|
//#if PRODUCTION
|
|
|
|
//var pdfjsWebLibs = {
|
|
|
|
// pdfjsWebPDFJS: window.pdfjsDistBuildPdf
|
|
|
|
//};
|
|
|
|
//
|
|
|
|
//(function () {
|
2016-04-09 02:34:27 +09:00
|
|
|
//#expand __BUNDLE__
|
2016-04-09 04:15:48 +09:00
|
|
|
//}).call(pdfjsWebLibs);
|
|
|
|
//#endif
|
2016-04-09 02:34:27 +09:00
|
|
|
|
|
|
|
//#if FIREFOX || MOZCENTRAL
|
|
|
|
//// FIXME the l10n.js file in the Firefox extension needs global FirefoxCom.
|
|
|
|
//window.FirefoxCom = pdfjsWebLibs.pdfjsWebFirefoxCom.FirefoxCom;
|
|
|
|
//#endif
|
2016-04-02 00:29:44 +09:00
|
|
|
|
|
|
|
//#if CHROME
|
|
|
|
//(function rewriteUrlClosure() {
|
|
|
|
// // Run this code outside DOMContentLoaded to make sure that the URL
|
|
|
|
// // is rewritten as soon as possible.
|
|
|
|
// var queryString = document.location.search.slice(1);
|
2016-04-09 02:34:27 +09:00
|
|
|
// var m = /(^|&)file=([^&]*)/.exec(queryString);
|
|
|
|
// DEFAULT_URL = m ? decodeURIComponent(m[2]) : '';
|
2016-04-02 00:29:44 +09:00
|
|
|
//
|
|
|
|
// // Example: chrome-extension://.../http://example.com/file.pdf
|
|
|
|
// var humanReadableUrl = '/' + DEFAULT_URL + location.hash;
|
|
|
|
// history.replaceState(history.state, '', humanReadableUrl);
|
|
|
|
// if (top === window) {
|
|
|
|
// chrome.runtime.sendMessage('showPageAction');
|
|
|
|
// }
|
|
|
|
//})();
|
|
|
|
//#endif
|
|
|
|
|
2016-04-22 01:39:11 +09:00
|
|
|
function getViewerConfiguration() {
|
|
|
|
return {
|
|
|
|
appContainer: document.body,
|
|
|
|
mainContainer: document.getElementById('viewerContainer'),
|
|
|
|
viewerContainer: document.getElementById('viewer'),
|
2016-04-26 07:57:15 +09:00
|
|
|
eventBus: null, // using global event bus with DOM events
|
2016-04-22 01:39:11 +09:00
|
|
|
toolbar: {
|
2016-04-29 05:04:09 +09:00
|
|
|
container: document.getElementById('toolbarViewer'),
|
2016-04-22 01:39:11 +09:00
|
|
|
numPages: document.getElementById('numPages'),
|
|
|
|
pageNumber: document.getElementById('pageNumber'),
|
|
|
|
scaleSelectContainer: document.getElementById('scaleSelectContainer'),
|
|
|
|
scaleSelect: document.getElementById('scaleSelect'),
|
|
|
|
customScaleOption: document.getElementById('customScaleOption'),
|
|
|
|
previous: document.getElementById('previous'),
|
|
|
|
next: document.getElementById('next'),
|
|
|
|
firstPage: document.getElementById('firstPage'),
|
|
|
|
lastPage: document.getElementById('lastPage'),
|
|
|
|
zoomIn: document.getElementById('zoomIn'),
|
|
|
|
zoomOut: document.getElementById('zoomOut'),
|
|
|
|
viewFind: document.getElementById('viewFind'),
|
|
|
|
openFile: document.getElementById('openFile'),
|
|
|
|
print: document.getElementById('print'),
|
|
|
|
presentationModeButton: document.getElementById('presentationMode'),
|
|
|
|
download: document.getElementById('download'),
|
|
|
|
viewBookmark: document.getElementById('viewBookmark'),
|
|
|
|
},
|
|
|
|
secondaryToolbar: {
|
|
|
|
toolbar: document.getElementById('secondaryToolbar'),
|
|
|
|
toggleButton: document.getElementById('secondaryToolbarToggle'),
|
|
|
|
presentationModeButton:
|
|
|
|
document.getElementById('secondaryPresentationMode'),
|
2016-05-11 08:31:03 +09:00
|
|
|
openFileButton: document.getElementById('secondaryOpenFile'),
|
|
|
|
printButton: document.getElementById('secondaryPrint'),
|
|
|
|
downloadButton: document.getElementById('secondaryDownload'),
|
|
|
|
viewBookmarkButton: document.getElementById('secondaryViewBookmark'),
|
|
|
|
firstPageButton: document.getElementById('firstPage'),
|
|
|
|
lastPageButton: document.getElementById('lastPage'),
|
|
|
|
pageRotateCwButton: document.getElementById('pageRotateCw'),
|
|
|
|
pageRotateCcwButton: document.getElementById('pageRotateCcw'),
|
|
|
|
toggleHandToolButton: document.getElementById('toggleHandTool'),
|
2016-04-22 01:39:11 +09:00
|
|
|
documentPropertiesButton: document.getElementById('documentProperties'),
|
|
|
|
},
|
|
|
|
fullscreen: {
|
|
|
|
contextFirstPage: document.getElementById('contextFirstPage'),
|
|
|
|
contextLastPage: document.getElementById('contextLastPage'),
|
|
|
|
contextPageRotateCw: document.getElementById('contextPageRotateCw'),
|
|
|
|
contextPageRotateCcw: document.getElementById('contextPageRotateCcw'),
|
|
|
|
},
|
|
|
|
sidebar: {
|
|
|
|
// Divs (and sidebar button)
|
|
|
|
mainContainer: document.getElementById('mainContainer'),
|
|
|
|
outerContainer: document.getElementById('outerContainer'),
|
|
|
|
toggleButton: document.getElementById('sidebarToggle'),
|
|
|
|
// Buttons
|
|
|
|
thumbnailButton: document.getElementById('viewThumbnail'),
|
|
|
|
outlineButton: document.getElementById('viewOutline'),
|
|
|
|
attachmentsButton: document.getElementById('viewAttachments'),
|
|
|
|
// Views
|
|
|
|
thumbnailView: document.getElementById('thumbnailView'),
|
|
|
|
outlineView: document.getElementById('outlineView'),
|
|
|
|
attachmentsView: document.getElementById('attachmentsView'),
|
|
|
|
},
|
|
|
|
findBar: {
|
|
|
|
bar: document.getElementById('findbar'),
|
|
|
|
toggleButton: document.getElementById('viewFind'),
|
|
|
|
findField: document.getElementById('findInput'),
|
|
|
|
highlightAllCheckbox: document.getElementById('findHighlightAll'),
|
|
|
|
caseSensitiveCheckbox: document.getElementById('findMatchCase'),
|
|
|
|
findMsg: document.getElementById('findMsg'),
|
|
|
|
findResultsCount: document.getElementById('findResultsCount'),
|
|
|
|
findStatusIcon: document.getElementById('findStatusIcon'),
|
|
|
|
findPreviousButton: document.getElementById('findPrevious'),
|
|
|
|
findNextButton: document.getElementById('findNext')
|
|
|
|
},
|
|
|
|
passwordOverlay: {
|
|
|
|
overlayName: 'passwordOverlay',
|
|
|
|
container: document.getElementById('passwordOverlay'),
|
|
|
|
label: document.getElementById('passwordText'),
|
|
|
|
input: document.getElementById('password'),
|
|
|
|
submitButton: document.getElementById('passwordSubmit'),
|
|
|
|
cancelButton: document.getElementById('passwordCancel')
|
|
|
|
},
|
|
|
|
documentProperties: {
|
|
|
|
overlayName: 'documentPropertiesOverlay',
|
|
|
|
container: document.getElementById('documentPropertiesOverlay'),
|
|
|
|
closeButton: document.getElementById('documentPropertiesClose'),
|
|
|
|
fields: {
|
|
|
|
'fileName': document.getElementById('fileNameField'),
|
|
|
|
'fileSize': document.getElementById('fileSizeField'),
|
|
|
|
'title': document.getElementById('titleField'),
|
|
|
|
'author': document.getElementById('authorField'),
|
|
|
|
'subject': document.getElementById('subjectField'),
|
|
|
|
'keywords': document.getElementById('keywordsField'),
|
|
|
|
'creationDate': document.getElementById('creationDateField'),
|
|
|
|
'modificationDate': document.getElementById('modificationDateField'),
|
|
|
|
'creator': document.getElementById('creatorField'),
|
|
|
|
'producer': document.getElementById('producerField'),
|
|
|
|
'version': document.getElementById('versionField'),
|
|
|
|
'pageCount': document.getElementById('pageCountField')
|
|
|
|
}
|
|
|
|
},
|
|
|
|
errorWrapper: {
|
|
|
|
container: document.getElementById('errorWrapper'),
|
|
|
|
errorMessage: document.getElementById('errorMessage'),
|
|
|
|
closeButton: document.getElementById('errorClose'),
|
|
|
|
errorMoreInfo: document.getElementById('errorMoreInfo'),
|
|
|
|
moreInfoButton: document.getElementById('errorShowMore'),
|
|
|
|
lessInfoButton: document.getElementById('errorShowLess'),
|
|
|
|
},
|
|
|
|
printContainer: document.getElementById('printContainer'),
|
|
|
|
openFileInputName: 'fileInput',
|
2016-05-10 08:18:43 +09:00
|
|
|
debuggerScriptPath: './debugger.js',
|
2016-04-22 01:39:11 +09:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2016-04-02 00:29:44 +09:00
|
|
|
function webViewerLoad() {
|
2016-04-22 01:39:11 +09:00
|
|
|
var config = getViewerConfiguration();
|
2016-04-02 00:29:44 +09:00
|
|
|
//#if !PRODUCTION
|
2016-04-09 02:34:27 +09:00
|
|
|
require.config({paths: {'pdfjs': '../src', 'pdfjs-web': '.'}});
|
2016-04-16 06:40:41 +09:00
|
|
|
require(['pdfjs-web/app', 'mozPrintCallback_polyfill.js'], function (web) {
|
2016-04-09 02:34:27 +09:00
|
|
|
window.PDFViewerApplication = web.PDFViewerApplication;
|
2016-04-22 01:39:11 +09:00
|
|
|
web.PDFViewerApplication.run(config);
|
2016-04-02 00:29:44 +09:00
|
|
|
});
|
|
|
|
//#else
|
2016-04-09 02:34:27 +09:00
|
|
|
//window.PDFViewerApplication = pdfjsWebLibs.pdfjsWebApp.PDFViewerApplication;
|
2016-04-22 01:39:11 +09:00
|
|
|
//pdfjsWebLibs.pdfjsWebApp.PDFViewerApplication.run(config);
|
2016-04-02 00:29:44 +09:00
|
|
|
//#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', webViewerLoad, true);
|