1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
8 * Creates a new OpenPDFParamsParser. This parses the open pdf parameters
9 * passed in the url to set initial viewport settings for opening the pdf.
10 * @param {string} url to be parsed.
12 function OpenPDFParamsParser(url
) {
15 this.parseOpenPDFParams_();
18 OpenPDFParamsParser
.prototype = {
21 * Parse zoom parameter of open PDF parameters. If this
22 * parameter is passed while opening PDF then PDF should be opened
23 * at the specified zoom level.
24 * @param {number} zoom value.
26 parseZoomParam_: function(paramValue
) {
27 var paramValueSplit
= paramValue
.split(',');
28 if ((paramValueSplit
.length
!= 1) && (paramValueSplit
.length
!= 3))
31 // User scale of 100 means zoom value of 100% i.e. zoom factor of 1.0.
32 var zoomFactor
= parseFloat(paramValueSplit
[0]) / 100;
33 if (isNaN(zoomFactor
))
36 // Handle #zoom=scale.
37 if (paramValueSplit
.length
== 1) {
38 this.urlParams
['zoom'] = zoomFactor
;
42 // Handle #zoom=scale,left,top.
43 var position
= {x
: parseFloat(paramValueSplit
[1]),
44 y
: parseFloat(paramValueSplit
[2])};
45 this.urlParams
['position'] = position
;
46 this.urlParams
['zoom'] = zoomFactor
;
51 * Parse open PDF parameters. These parameters are mentioned in the url
52 * and specify actions to be performed when opening pdf files.
53 * See http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/
54 * pdfs/pdf_open_parameters.pdf for details.
56 parseOpenPDFParams_: function() {
57 var originalUrl
= this.url_
;
58 var paramIndex
= originalUrl
.search('#');
62 var paramTokens
= originalUrl
.substring(paramIndex
+ 1).split('&');
63 var paramsDictionary
= {};
64 for (var i
= 0; i
< paramTokens
.length
; ++i
) {
65 var keyValueSplit
= paramTokens
[i
].split('=');
66 if (keyValueSplit
.length
!= 2)
68 paramsDictionary
[keyValueSplit
[0]] = keyValueSplit
[1];
71 if ('page' in paramsDictionary
) {
72 // |pageNumber| is 1-based, but goToPage() take a zero-based page number.
73 var pageNumber
= parseInt(paramsDictionary
['page']);
74 if (!isNaN(pageNumber
))
75 this.urlParams
['page'] = pageNumber
- 1;
78 if ('zoom' in paramsDictionary
)
79 this.parseZoomParam_(paramsDictionary
['zoom']);