mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-19 22:58:07 +02:00
Merge pull request #5363 from yurydelendik/pdfviewecomponent
Packages PDFViewer as a UI component.
This commit is contained in:
commit
5c56cdc544
8 changed files with 232 additions and 8 deletions
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
|
||||
// different location that pdf.js, specify workerSrc.
|
||||
// different location than pdf.js, specify workerSrc.
|
||||
//
|
||||
// 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
|
||||
// different location that pdf.js, specify workerSrc.
|
||||
// different location than pdf.js, specify workerSrc.
|
||||
//
|
||||
// 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/',
|
||||
GENERIC_DIR = BUILD_DIR + 'generic/',
|
||||
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',
|
||||
MOZCENTRAL_PREF_PREFIX = 'pdfjs',
|
||||
FIREFOX_PREF_PREFIX = 'extensions.uriloader@pdf.js',
|
||||
|
@ -65,7 +66,8 @@ var DEFINES = {
|
|||
B2G: false,
|
||||
CHROME: false,
|
||||
MINIFIED: false,
|
||||
SINGLE_FILE: false
|
||||
SINGLE_FILE: false,
|
||||
COMPONENTS: false
|
||||
};
|
||||
|
||||
//
|
||||
|
@ -146,6 +148,43 @@ target.generic = function() {
|
|||
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() {
|
||||
echo();
|
||||
echo('### Generating jsdoc');
|
||||
|
@ -233,6 +272,7 @@ target.web = function() {
|
|||
target.dist = function() {
|
||||
target.generic();
|
||||
target.singlefile();
|
||||
target.components();
|
||||
|
||||
var DIST_DIR = BUILD_DIR + 'dist/';
|
||||
var DIST_REPO_URL = 'https://github.com/mozilla/pdfjs-dist';
|
||||
|
@ -262,7 +302,7 @@ target.dist = function() {
|
|||
|
||||
mkdir('-p', DIST_DIR + 'web/');
|
||||
cp('-R', [
|
||||
GENERIC_DIR + 'web/compatibility.js',
|
||||
COMPONENTS_DIR + '*',
|
||||
], DIST_DIR + 'web/');
|
||||
|
||||
echo();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* -*- 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");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -47,6 +47,10 @@ IPDFLinkService.prototype = {
|
|||
* @param {string} 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) {
|
||||
this.container = options.container;
|
||||
this.viewer = options.viewer || options.container.firstElementChild;
|
||||
this.linkService = options.linkService;
|
||||
this.linkService = options.linkService || new SimpleLinkService(this);
|
||||
|
||||
this.defaultRenderingQueue = !options.renderingQueue;
|
||||
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) {
|
||||
firstPagePromise.then(this.update.bind(this));
|
||||
this.update();
|
||||
}
|
||||
}.bind(this));
|
||||
},
|
||||
|
@ -642,6 +646,53 @@ var PDFViewer = (function 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.
|
||||
* @class
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue