Merge pull request #5363 from yurydelendik/pdfviewecomponent
Packages PDFViewer as a UI component.
This commit is contained in:
commit
5c56cdc544
48
examples/components/simpleviewer.html
Normal file
48
examples/components/simpleviewer.html
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!--
|
||||||
|
Copyright 2014 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.
|
||||||
|
-->
|
||||||
|
<html dir="ltr" mozdisallowselectionprint moznomarginboxes>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
|
<meta name="google" content="notranslate">
|
||||||
|
<title>PDF.js viewer using built components</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: #808080;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../../build/components/pdf_viewer.css"/>
|
||||||
|
|
||||||
|
<!-- for legacy browsers -->
|
||||||
|
<script src="../../build/components/compatibility.js"></script>
|
||||||
|
<script src="../../build/pdf.js"></script>
|
||||||
|
<script src="../../build/components/pdf_viewer.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body tabindex="1">
|
||||||
|
<div id="viewerContainer">
|
||||||
|
<div id="viewer" class="pdfViewer"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="simpleviewer.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
49
examples/components/simpleviewer.js
Normal file
49
examples/components/simpleviewer.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* Copyright 2014 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
if (!PDFJS.PDFViewer || !PDFJS.getDocument) {
|
||||||
|
alert('Please built the library and components using\n' +
|
||||||
|
' `node make generic components`');
|
||||||
|
}
|
||||||
|
|
||||||
|
// If pdf.js must be execute via eval or pdf.worker.js is located at the
|
||||||
|
// different location than pdf.js, specify workerSrc.
|
||||||
|
//
|
||||||
|
// PDFJS.workerSrc = '../../build/pdf.worker.js';
|
||||||
|
|
||||||
|
// Some PDFs need external cmaps
|
||||||
|
//
|
||||||
|
// PDFJS.cMapUrl = '../../external/bcmaps/';
|
||||||
|
// PDFJS.cMapPacked = true;
|
||||||
|
|
||||||
|
var DEFAULT_URL = '../../web/compressed.tracemonkey-pldi-09.pdf';
|
||||||
|
|
||||||
|
var container = document.getElementById('viewerContainer');
|
||||||
|
var pdfViewer = new PDFJS.PDFViewer({
|
||||||
|
container: container
|
||||||
|
});
|
||||||
|
|
||||||
|
container.addEventListener('pagesinit', function () {
|
||||||
|
// we can use pdfViewer now, e.g. let's change default scale.
|
||||||
|
pdfViewer.currentScaleValue = 'page-width';
|
||||||
|
});
|
||||||
|
|
||||||
|
// Loading document.
|
||||||
|
PDFJS.getDocument(DEFAULT_URL).then(function (pdfDocument) {
|
||||||
|
// Document loaded, specifying document for the viewer.
|
||||||
|
pdfViewer.setDocument(pdfDocument);
|
||||||
|
});
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// If pdf.js must be execute via eval or pdf.worker.js is located at the
|
// If pdf.js must be execute via eval or pdf.worker.js is located at the
|
||||||
// different location that pdf.js, specify workerSrc.
|
// different location than pdf.js, specify workerSrc.
|
||||||
//
|
//
|
||||||
// PDFJS.workerSrc = '../../build/pdf.worker.js';
|
// PDFJS.workerSrc = '../../build/pdf.worker.js';
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// If pdf.js must be execute via eval or pdf.worker.js is located at the
|
// If pdf.js must be execute via eval or pdf.worker.js is located at the
|
||||||
// different location that pdf.js, specify workerSrc.
|
// different location than pdf.js, specify workerSrc.
|
||||||
//
|
//
|
||||||
// PDFJS.workerSrc = '../../build/pdf.worker.js';
|
// PDFJS.workerSrc = '../../build/pdf.worker.js';
|
||||||
|
|
||||||
|
46
make.js
46
make.js
@ -49,7 +49,8 @@ var ROOT_DIR = __dirname + '/', // absolute path to project's root
|
|||||||
GH_PAGES_DIR = BUILD_DIR + 'gh-pages/',
|
GH_PAGES_DIR = BUILD_DIR + 'gh-pages/',
|
||||||
GENERIC_DIR = BUILD_DIR + 'generic/',
|
GENERIC_DIR = BUILD_DIR + 'generic/',
|
||||||
MINIFIED_DIR = BUILD_DIR + 'minified/',
|
MINIFIED_DIR = BUILD_DIR + 'minified/',
|
||||||
SINGLE_FILE_DIR = BUILD_DIR + '/singlefile/',
|
SINGLE_FILE_DIR = BUILD_DIR + 'singlefile/',
|
||||||
|
COMPONENTS_DIR = BUILD_DIR + 'components/',
|
||||||
REPO = 'git@github.com:mozilla/pdf.js.git',
|
REPO = 'git@github.com:mozilla/pdf.js.git',
|
||||||
MOZCENTRAL_PREF_PREFIX = 'pdfjs',
|
MOZCENTRAL_PREF_PREFIX = 'pdfjs',
|
||||||
FIREFOX_PREF_PREFIX = 'extensions.uriloader@pdf.js',
|
FIREFOX_PREF_PREFIX = 'extensions.uriloader@pdf.js',
|
||||||
@ -65,7 +66,8 @@ var DEFINES = {
|
|||||||
B2G: false,
|
B2G: false,
|
||||||
CHROME: false,
|
CHROME: false,
|
||||||
MINIFIED: false,
|
MINIFIED: false,
|
||||||
SINGLE_FILE: false
|
SINGLE_FILE: false,
|
||||||
|
COMPONENTS: false
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -146,6 +148,43 @@ target.generic = function() {
|
|||||||
cleanupCSSSource(GENERIC_DIR + '/web/viewer.css');
|
cleanupCSSSource(GENERIC_DIR + '/web/viewer.css');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
target.components = function() {
|
||||||
|
cd(ROOT_DIR);
|
||||||
|
echo();
|
||||||
|
echo('### Creating generic components');
|
||||||
|
|
||||||
|
rm('-rf', COMPONENTS_DIR);
|
||||||
|
mkdir('-p', COMPONENTS_DIR);
|
||||||
|
mkdir('-p', COMPONENTS_DIR + 'images');
|
||||||
|
|
||||||
|
var defines = builder.merge(DEFINES, {COMPONENTS: true});
|
||||||
|
|
||||||
|
var COMPONENTS_IMAGES = [
|
||||||
|
'web/images/annotation-*.svg',
|
||||||
|
'web/images/loading-icon.gif',
|
||||||
|
'web/images/shadow.png',
|
||||||
|
'web/images/texture.png',
|
||||||
|
];
|
||||||
|
|
||||||
|
var setup = {
|
||||||
|
defines: defines,
|
||||||
|
copy: [
|
||||||
|
[COMPONENTS_IMAGES, COMPONENTS_DIR + 'images'],
|
||||||
|
['web/compatibility.js', COMPONENTS_DIR],
|
||||||
|
],
|
||||||
|
preprocess: [
|
||||||
|
['web/pdf_viewer.component.js', COMPONENTS_DIR + 'pdf_viewer.js'],
|
||||||
|
],
|
||||||
|
preprocessCSS: [
|
||||||
|
['components', 'web/pdf_viewer.css', COMPONENTS_DIR + 'pdf_viewer.css'],
|
||||||
|
]
|
||||||
|
};
|
||||||
|
builder.build(setup);
|
||||||
|
|
||||||
|
cleanupJSSource(COMPONENTS_DIR + 'pdf_viewer.js');
|
||||||
|
cleanupCSSSource(COMPONENTS_DIR + 'pdf_viewer.css');
|
||||||
|
};
|
||||||
|
|
||||||
target.jsdoc = function() {
|
target.jsdoc = function() {
|
||||||
echo();
|
echo();
|
||||||
echo('### Generating jsdoc');
|
echo('### Generating jsdoc');
|
||||||
@ -233,6 +272,7 @@ target.web = function() {
|
|||||||
target.dist = function() {
|
target.dist = function() {
|
||||||
target.generic();
|
target.generic();
|
||||||
target.singlefile();
|
target.singlefile();
|
||||||
|
target.components();
|
||||||
|
|
||||||
var DIST_DIR = BUILD_DIR + 'dist/';
|
var DIST_DIR = BUILD_DIR + 'dist/';
|
||||||
var DIST_REPO_URL = 'https://github.com/mozilla/pdfjs-dist';
|
var DIST_REPO_URL = 'https://github.com/mozilla/pdfjs-dist';
|
||||||
@ -262,7 +302,7 @@ target.dist = function() {
|
|||||||
|
|
||||||
mkdir('-p', DIST_DIR + 'web/');
|
mkdir('-p', DIST_DIR + 'web/');
|
||||||
cp('-R', [
|
cp('-R', [
|
||||||
GENERIC_DIR + 'web/compatibility.js',
|
COMPONENTS_DIR + '*',
|
||||||
], DIST_DIR + 'web/');
|
], DIST_DIR + 'web/');
|
||||||
|
|
||||||
echo();
|
echo();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
/* Copyright 2012 Mozilla Foundation
|
/* Copyright 2014 Mozilla Foundation
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -47,6 +47,10 @@ IPDFLinkService.prototype = {
|
|||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
*/
|
*/
|
||||||
setHash: function (hash) {},
|
setHash: function (hash) {},
|
||||||
|
/**
|
||||||
|
* @param {string} action
|
||||||
|
*/
|
||||||
|
executeNamedAction: function (action) {},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
32
web/pdf_viewer.component.js
Normal file
32
web/pdf_viewer.component.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
|
||||||
|
/* Copyright 2014 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.
|
||||||
|
*/
|
||||||
|
/*jshint globalstrict: false */
|
||||||
|
/* globals PDFJS, PDFViewer */
|
||||||
|
|
||||||
|
// Initializing PDFJS global object (if still undefined)
|
||||||
|
if (typeof PDFJS === 'undefined') {
|
||||||
|
(typeof window !== 'undefined' ? window : this).PDFJS = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
(function pdfViewerWrapper() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
//#include ui_utils.js
|
||||||
|
//#include pdf_viewer.js
|
||||||
|
|
||||||
|
PDFJS.PDFViewer = PDFViewer;
|
||||||
|
}).call((typeof window === 'undefined') ? this : window);
|
@ -57,7 +57,7 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
function PDFViewer(options) {
|
function PDFViewer(options) {
|
||||||
this.container = options.container;
|
this.container = options.container;
|
||||||
this.viewer = options.viewer || options.container.firstElementChild;
|
this.viewer = options.viewer || options.container.firstElementChild;
|
||||||
this.linkService = options.linkService;
|
this.linkService = options.linkService || new SimpleLinkService(this);
|
||||||
|
|
||||||
this.defaultRenderingQueue = !options.renderingQueue;
|
this.defaultRenderingQueue = !options.renderingQueue;
|
||||||
if (this.defaultRenderingQueue) {
|
if (this.defaultRenderingQueue) {
|
||||||
@ -270,8 +270,12 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var event = document.createEvent('CustomEvent');
|
||||||
|
event.initCustomEvent('pagesinit', true, true, null);
|
||||||
|
self.container.dispatchEvent(event);
|
||||||
|
|
||||||
if (this.defaultRenderingQueue) {
|
if (this.defaultRenderingQueue) {
|
||||||
firstPagePromise.then(this.update.bind(this));
|
this.update();
|
||||||
}
|
}
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
@ -642,6 +646,53 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
return PDFViewer;
|
return PDFViewer;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
var SimpleLinkService = (function SimpleLinkServiceClosure() {
|
||||||
|
function SimpleLinkService(pdfViewer) {
|
||||||
|
this.pdfViewer = pdfViewer;
|
||||||
|
}
|
||||||
|
SimpleLinkService.prototype = {
|
||||||
|
/**
|
||||||
|
* @returns {number}
|
||||||
|
*/
|
||||||
|
get page() {
|
||||||
|
return this.pdfViewer.currentPageNumber;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @param {number} value
|
||||||
|
*/
|
||||||
|
set page(value) {
|
||||||
|
this.pdfViewer.currentPageNumber = value;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @param dest - The PDF destination object.
|
||||||
|
*/
|
||||||
|
navigateTo: function (dest) {},
|
||||||
|
/**
|
||||||
|
* @param dest - The PDF destination object.
|
||||||
|
* @returns {string} The hyperlink to the PDF object.
|
||||||
|
*/
|
||||||
|
getDestinationHash: function (dest) {
|
||||||
|
return '#';
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @param hash - The PDF parameters/hash.
|
||||||
|
* @returns {string} The hyperlink to the PDF object.
|
||||||
|
*/
|
||||||
|
getAnchorUrl: function (hash) {
|
||||||
|
return '#';
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @param {string} hash
|
||||||
|
*/
|
||||||
|
setHash: function (hash) {},
|
||||||
|
/**
|
||||||
|
* @param {string} action
|
||||||
|
*/
|
||||||
|
executeNamedAction: function (action) {},
|
||||||
|
};
|
||||||
|
return SimpleLinkService;
|
||||||
|
})();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PDFPage object source.
|
* PDFPage object source.
|
||||||
* @class
|
* @class
|
||||||
|
Loading…
x
Reference in New Issue
Block a user