Commit Graph

1867 Commits

Author SHA1 Message Date
Tim van der Meij
a2cac8fa71 Use default line height for the text layer
Fixes #6614.
2015-12-02 23:00:12 +01:00
Yury Delendik
c9cb6a3025 Replaces UnsupportedManager with callback. 2015-11-30 14:42:47 -06:00
Jonas Jenwald
6dfe53b976 [api-minor] Add a parameter to PDFPageProxy_getTextContent that enables replacing of all whitespace with standard spaces in the textLayer (issue 6612)
This patch goes a bit further than issue 6612 requires, and replaces all kinds of whitespace with standard spaces.

When testing this locally, it actually seemed to slightly improve two existing test-cases (`tracemonkey-text` and `taro-text`).

Fixes 6612.
2015-11-25 17:28:40 +01:00
Jonas Jenwald
b05652ca97 [api-minor] Let getAnnotations fetch all annotations by default, unless an intent is specified
Currently `getAnnotations` will *only* fetch annotations that are either `viewable` or `printable`. This is "hidden" inside the `core.js` file, meaning that API consumers might be confused as to why they are not recieving *all* the annotations present for a page.

I thus think that the API should, by default, return *all* available annotations unless specifically told otherwise. In e.g. the default viewer, we obviously only want to display annotations that are `viewable`, hence this patch adds an `intent` parameter to `getAnnotations` that makes it possible to decide if only `viewable` or `printable` annotations should be fetched.
2015-11-22 15:51:37 +01:00
Sebastian Hengst
27577a714f Issue #6569 - document_colors_disabled shouldn't escape quotes (compare-locales warning) 2015-11-22 10:14:25 +01:00
Jonas Jenwald
93f4f7a649 Use DEFAULT_SCALE instead of 1.0 as the default value if the scale option isn't specified when initializing PDFPageView
A small piece of cleanup, in order to avoid unnecessarily hardcoding a default value.
2015-11-20 13:30:04 +01:00
Yury Delendik
bd7f121c83 Better "text" testing. 2015-11-19 11:03:52 -06:00
Yury Delendik
56ccaea99b Move text layer building logic into src/display/text_layer.js 2015-11-19 10:50:27 -06:00
Yury Delendik
2f34fd46cb Move CustomStyle. 2015-11-19 10:47:17 -06:00
Jonas Jenwald
f341d81ae8 Ensure that the hidden attribute is always removed from the canvas when rendering is complete (issue 6661)
Fixes 6661.
2015-11-19 12:31:49 +01:00
Yury Delendik
194994a289 Merge pull request #6551 from yurydelendik/subaa
[api-minor] Enables subpixel anti-aliasing for most of the content.
2015-11-17 19:45:32 -06:00
Yury Delendik
99f9b523c2 Merge pull request #6627 from prometheansacrifice/use-editorconfig
Uses editorconfig to maintain consistent coding styles
2015-11-16 13:51:45 -06:00
Yury Delendik
1d8800370a Allow subpixel anti-aliasing for most of the content. 2015-11-16 10:50:02 -06:00
Manas
a2ba1b8189 Uses editorconfig to maintain consistent coding styles
Removes the following as they unnecessary
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
2015-11-14 07:32:18 +05:30
Tony Jin
570f144fc3 Fix minor capitalization issue in viewer 2015-11-12 13:33:34 -08:00
Jonas Jenwald
2646f27434 Dispatch the pagerendered event when zooming is only done with CSS (issue 6463)
In my opinion, this event shouldn't be dispatched in `PDFPageView.cssTransform`, since that would cause *two* events to be fired when "normal" zooming is used (once in `PDFPageView.cssTransform`, and once in `PDFPageView.draw`).

Fixes 6463.
2015-11-12 16:46:50 +01:00
Yury Delendik
a4ca9986e1 Merge pull request #6318 from Snuffleupagus/bug-1191279
For documents with different page sizes, ensure that the correct page becomes visible on load when e.g. the 'page' hash parameter was provided (bug 1191279, issue 6393)
2015-11-10 17:51:02 -06:00
Jonas Jenwald
e629882f2a Correctly handle /FitH destinations with null as the parameter
According to http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf#G11.2095870, the vertical position shouldn't change if the parameter is `null`.

Fixes 6615.
2015-11-10 14:22:24 +01:00
Jonas Jenwald
1e0bd07d8d Merge pull request #6595 from yurydelendik/currentscript
Uses document.currentScript for pdf.worker.js path.
2015-11-06 17:28:20 +01:00
Yury Delendik
28d340679a Uses document.currentScript for pdf.worker.js path. 2015-11-06 07:50:21 -06:00
Jonas Jenwald
dbc611ac9d Ensure that the textLayer has the same dimensions as the canvasWrapper (issue 6596)
This is a quick fix to get `scrollIntoView` working again for search results, but we really ought to re-write that function since it seems way too brittle.

Fixes 6596.
2015-11-06 12:43:22 +01:00
Jonas Jenwald
8079bdddb9 Merge pull request #6591 from yurydelendik/select
Non/less flashing text layer during selection.
2015-11-05 17:50:49 +01:00
Yury Delendik
b8ad68af25 Non/less flashing text layer during selection. 2015-11-05 10:48:22 -06:00
Jonas Jenwald
0f50147ba8 Create a new indeterminate loading bar animation for the default viewer
This patch contains an alternative solution (see the referenced PRs in 4718), in order for the indeterminate loading bar to have a consistent speed regardless of width.

Fixes 4718.
2015-11-04 17:44:51 +01:00
Tim van der Meij
55870788e5 Make the view history cache size configurable during initialization 2015-11-02 14:56:50 +01:00
Tim van der Meij
7681def0de Move VIEW_HISTORY_MEMORY constant to view_history.js
Currently this constant is present in `viewer.js`, but it is not used there at all. Instead, it is used in `view_history.js` where we have a global for it. We might as well move the constant to `view_history.js` as that is the only place where it is used, thereby removing a global and an unused constant from `viewer.js`.
2015-11-01 15:45:12 +01:00
Yury Delendik
c8c211602b Merge pull request #6073 from Snuffleupagus/bug-1170063
[Firefox] Handle the user modifying the "mousewheel.with_meta.action" and "mousewheel.with_control.action" prefs (bug 1170063)
2015-10-30 11:54:04 -05:00
Yury Delendik
b8b922196c Moves match counter from find UI to the controller. 2015-10-30 11:20:29 -05:00
Andy Parisi
17fe0b1470 Added find match counter 2015-10-30 10:21:26 -05:00
Yury Delendik
15b00eacc2 Merge pull request #6445 from KamiHQ/fix-pages-rotation
Fix exception when rotate page without a document
2015-10-30 08:31:14 -05:00
Yury Delendik
b1515fdd10 Merge pull request #6374 from WilliamRClark/master
Update viewer.html for Internet Explorer Compatibility
2015-10-30 08:21:38 -05:00
WilliamRClark
59104a2863 Update viewer.html for Internet Explorer Compatibility
If your Internet Explorer 11 default compatibility settings are set to "I.E 7 Compatibility", the PDF plugin will not load.  This fix is the same one used by AngularJS to force the browser to use HTML5 mode.
2015-10-30 08:19:19 -05:00
Yury Delendik
7cb32759ed Better CSS scaling for deviceRixelRatio != 1. 2015-10-28 17:27:42 -05:00
Yury Delendik
62afa9f695 Fixes PDFViewerApplication.open/close methods signature. 2015-10-23 09:06:32 -05:00
Yury Delendik
5135aa9bec Adds deprecation warning for the API calls. 2015-10-23 09:06:32 -05:00
Yury Delendik
59c13b32aa Adds destroy method to the document loading task.
Also renames PDFPageProxy.destroy method to cleanup.
2015-10-23 08:57:14 -05:00
Jonas Jenwald
610df45bad Prevent external links from "replacing" the viewer when it's embedded (bug 976541)
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=976541.

This patch also adds a `externalLinkTarget` preference, to make the behaviour user configurable.
2015-10-13 22:18:08 +02:00
Jonas Jenwald
9fc8e1ea25 Fix a regression, from PR 5356, that breaks all scrolling in PresentationMode
*This regressed in PR 5356.*

Rather than just backing out the offending code, this patch restores scrolling in PresentationMode by making the `overflow: hidden;` check optional and letting the callers that need it (e.g. `PDFFindController`) opt-in to use it.
2015-10-13 16:27:50 +02:00
Rob Wu
7e345b223c [CRX] Call callback instead of onCompleted 2015-10-11 17:35:16 +02:00
Brendan Dahl
42ddb7151b Merge pull request #5356 from Rob--W/scroll-issue-5355
scrollIntoView: Skip overflow:hidden elements
2015-10-05 11:15:34 -07:00
Tim van der Meij
dd9d0b8770 Merge pull request #5480 from CodingFabian/issue-5458
Remove TryCatch in canvas for EvenOdd winding rule.
2015-10-04 15:31:34 +02:00
Tim van der Meij
e28ad20d15 Merge pull request #6475 from Snuffleupagus/PDFPageView-annotationLayer-div
Tweak `PDFPageView` to reflect that `this.annotationLayer` is an `AnnotationsLayerBuilder` instance, instead of a DOM element (PR 5552 follow-up)
2015-09-29 23:38:04 +02:00
Brendan Dahl
7cdc6f3c12 Merge pull request #6468 from Snuffleupagus/issue-6467
Don't clear the `canvas` until re-rendering is finished when the `scale` or `rotation` is changed (issue 6467)
2015-09-29 11:09:44 -07:00
Jonas Jenwald
7a8b0fb107 Merge pull request #6200 from Rob--W/hashchange-use-newURL
Refactor the previous history rewriting logic
2015-09-27 17:59:01 +02:00
Rob Wu
cdea75dc39 Refactor the previous history rewriting logic
When the user edits the URL and changes the reference fragment (hash),
PDF.js intercepts this action, and saves the then-current history state
in the previous history entry. This is implemented by navigating back,
editing the history and navigating forward again.

The current logic has a flaw: It assumes that calling history.back() and
history.forward() immediately updates the history state. This is however
not guaranteed by the web standards, which states that calling e.g.
history.back "must traverse the history by a delta -1", which means that
the browser must QUEUE a task to traverse the session history, per spec:
http://w3.org/TR/2011/WD-html5-20110113/history.html#dom-history-back
https://html.spec.whatwg.org/multipage/browsers.html#dom-history-back

Firefox and Internet Explorer deviate from the standards by immediately
changing the history state instead of queuing the navigation.
WebKit derived browsers (Chrome, Opera, Safari) and Opera presto do not.

The user-visible consequence of strictly adhering to the standards in
PDF.js can be shown as follows:

1. Edit the URL.
2. Append #page=2 for example.
3. Press Enter.
   -> Presto and WebKit: PDF.js reverts to the previous URL.
   -> Gecko and Trident: PDF.js keeps the new URL, as expected.

To fix the issue, modification of the previous history item happens in
a few asynchronous steps, guided by the popstate event to detect when
the history navigation request has been committed.

--
Some more implementation notes:

I have removed the preventDefault and stopPropagation calls, because
popstate is not cancelable, and window is already the last target of the
event propagation.

The previous allowHashChange logic was hard to follow, because it did
not explain that hashchange will be called twice; once during the
popstate handler for history.back() (which will reset allowHashChange),
and again for history.forward() (where allowHashChange will be false).
The purpose of allowHashChange is now more explicit, by incorporating
the logic in the replacePreviousHistoryState helper function.
2015-09-26 23:15:29 +02:00
Jonas Jenwald
5e7ce9d62d Fix incorrect indentation, and remove else after return, in PDFPageView_update 2015-09-26 15:41:02 +02:00
Jonas Jenwald
1ae9ba1d64 Don't clear the canvas until re-rendering is finished when the scale or rotation is changed (issue 6467)
*This regressed in PR 4920.*

The main motivation for PR 4920 was to quickly get rid of old canvases when pages are evicted from the `PDFPageViewBuffer` cache. However it inadvertently broke the use-case where the `canvas` is used as a preview, on scale or rotation changes, until the re-rendering is finished.

Fixes 6467.
2015-09-26 15:40:59 +02:00
Jonas Jenwald
c7fd7f898f Tweak PDFPageView to reflect that this.annotationLayer is an AnnotationsLayerBuilder instance, instead of a DOM element (PR 5552 follow-up)
In PR 5552, specifically commit 9f384bbb41, the meaning of `this.annotationLayer` changed in `PDFPageView`. Previously it referred directly to a DOM element, but now it's instead an instance of `AnnotationsLayerBuilder`.
This patch tweaks things so that we won't try to hide a non-existent `annotationLayer` div in `PDFPageView_reset`, and also so that we don't attempt to insert empty (`null`) DOM elements in `PDFPageView_draw`.
2015-09-24 12:24:47 +02:00
Xiliang Chen
a059f9fcbb Fix exception when rotate page without a document 2015-09-14 10:42:53 +12:00
Jonas Jenwald
1b50932eaa Don't show thumbnails until the canvas to image conversion is done (issue 6442) 2015-09-12 12:05:40 +02:00
Jonas Jenwald
d7a90d83de Delete, and clear, the image in PDFThumbnailView_reset
*Follow-up to PR 6299.*
2015-09-11 14:12:58 +02:00
Jonas Jenwald
555c7925a0 Prevent setImage from failing to display small thumbnails, by adding a missing canvas to image conversion
*Follow-up to PR 6299.*
2015-09-11 14:12:57 +02:00
Jonas Jenwald
ebce928149 Extract the conversion from canvas to image into a helper function in PDFThumbnailView
*Follow-up to PR 6299.*

This patch reduces unnecessary code duplication for the `canvas` to `image` conversion. It also does a bit of re-ordering (and adds new lines) in `_getPageDrawContext`, since that function currently is a bit hard to read.
2015-09-11 14:12:48 +02:00
Tim van der Meij
dffb2efe9e Merge pull request #6299 from zinking/6035_png_thumb_nail
Convert canvas thumbnails to PNG
2015-09-10 23:54:27 +02:00
Jonas Jenwald
b7d1bed463 Add a utility function, for the viewer, that removes null (\x00) characters (issue 6416)
Since some browsers render `null` characters, and others don't, this patch adds a way to remove them to prevent display issues in the viewer UI.

Given that documents may contain very long outlines, I've added a utility function to avoid creating a lot of unnecessary `RegExp` objects.
To avoid any future issues, this utility function is used for both the outline and the attachments.

Fixes 6416.
2015-09-09 23:49:03 +02:00
Rob Wu
9f80060a18 Add mirrored triangle (TOC item icon) 2015-09-06 15:35:58 +02:00
Jonas Jenwald
da1b9df74a Adjust the min-width of outline items and use more consistent border-radius (PR 6242 follow-up)
Prior to PR 6242, the width of all outline items was set such that their right (or left, in RTL locales) edges lined up vertically. In my opinion that looked more consistent, therefore this patch adjusts the CSS to make sure that this will be the case again.

The patch also makes the `border-radius` values of outline items a bit more consistent.
2015-09-06 13:01:30 +02:00
Jonas Jenwald
59548921d1 For documents with different page sizes, ensure that the correct page becomes visible on load when e.g. the 'page' hash parameter was provided (bug 1191279, issue 6393)
This issue is actually, in a sense, "caused" by the fact that the API/viewer supports partial loading/rendering. Previously when the *entire* document was always fetched before rendering begun, we knew all page sizes in advance and this issue didn't exist.

Now we use the size of *one* page in order to set the initial size of every page, until we've fetched the pages and thus know their correct sizes.
This means that during loading the size of the pages can change, which may cause the initial position to become scrolled out of view.

The most naive solution to this problem would perhaps be to delay setting the initial position on load for all documents, until all pages are fetched. However I think that would be a *really* bad idea, since doing so would make the initial rendering slower and make it feel sluggish for most documents.

Since there is generally no way of knowing if a document has different sized pages prior to loading it, we can only check once the pages are available.
Hence this patch, which treats documents with different sized pages as a special case, by re-applying the initial position when all pages have become available.
2015-09-06 12:09:22 +02:00
Fabian Lange
063ca95f5f Remove TryCatch in canvas fill
As verified by @Rob--W, the evenodd fill rule works correctly in all supported browsers. This now allows optimization by JS engines.

This fixes #5458
2015-09-05 11:10:51 +02:00
awang
161def7f4e Convert canvas thumbnails to PNG #6299 2015-09-04 09:58:47 +08:00
Jonas Jenwald
2df1b7b3cd Switch expanded/collapsed in the names of the treeitem-* assets
It appears to me that the `expanded/collapsed` part of the names got switched around, since I'd expect the following convention:
 - `v` == expanded
 - `>` == collapsed
2015-08-27 23:21:34 +02:00
Jonas Jenwald
b1950d3657 Use the Retina assets for outlineItemToggler when in HiDPI mode 2015-08-27 17:50:35 +02:00
Yury Delendik
70fd360d51 Merge pull request #6242 from Rob--W/outline-collapsible
Allow outline to be collapsed / shown via +/-.
2015-08-27 08:41:34 -05:00
Rob Wu
7c992243fd Allow outline to be collapsed / shown via icon.
- This commit adds a '>' before every outline item that has subitems.
- Click on the '>' to collapse all subitems under that item (which turns
  the '>' in a 'v').
- Shift + click expands/collapses all descendant items under that tree.
- Double-clicking on the "Show Document Outline" button in the toolbar
  expands/collapses all outline items.
2015-08-22 18:49:08 +02:00
Jonas Jenwald
a6d10af3b4 Add disableStream to the list of preferences read by PDFViewerApplication.initialize (issue 6361)
Fixes 6361.
2015-08-18 12:35:42 +02:00
Jonas Jenwald
421289c7bc Merge pull request #6233 from Rob--W/crx-local-files
Improve support for viewing PDFs from file://-URLs in the Chrome extension
2015-08-15 14:15:36 +02:00
Rob Wu
4ac8863e30 Restore extension tab after reload
Work-around for https://crbug.com/511670
2015-08-14 19:00:12 +02:00
Rob Wu
cf1d398bd2 Add translations of "Allow access to file URLs"
The JSON file is generated as follows.

1. Go to the src/chrome/app/resources directory of Chromium's source.

2. Find the translation ID of the "Allow access to file URLs" string:

grep 'Allow access to file URLs' generated_resources_en-GB.xtb

3. With the ID that you've found, locate the other translations.

grep 3341703758641437857 generated_resources_*.xtb

4. If the result looks OK, serialize the result as JSON and save it.

> path/to/pdf.js/web/chrome-i18n-allow-access-to-file-urls.json \
python -c "import json;print(json.dumps({ \
$(grep 3341703758641437857 generated_resources_*.xtb | \
 sed "s@generated_resources_\([^.]\+\)\.xtb:<translation[^>]\+>\(.\+\)</translation>@'\1':'''\2''',@" \
)}, sort_keys=True, indent=2))"

(Strings are taken from Chromium 45.0.2448.0 (ccrev.com/337313).
2015-08-14 18:59:55 +02:00
Rob Wu
775d4e69cf Teach users how to enable access to local files. 2015-08-14 18:59:30 +02:00
Tim van der Meij
26b9205c7e Merge pull request #6327 from Snuffleupagus/viewer-sidebar-prevent-switching-to-disabled-views
Prevent switching to disabled views (i.e. outline or attachments) in the sidebar
2015-08-07 22:54:08 +02:00
Jonas Jenwald
f063c78cbf Prevent switching to disabled views (i.e. outline or attachments) in the sidebar
Currently in `switchSidebarView` there is code that attempts to handle the `outline` or `attachments` being disabled. However, given the placement of it, that code does not actually accomplish anything. Even more strange is the fact that the way that the buttons are disabled, that code won't ever be hit.
(Looking back with `git blame`, it seems that it has never worked as you'd expect.)

Hence this patch, which correctly disables switching to the `outline` or `attachments` views when they are disabled.
Once PR 6314 restores the 'pagemode' hash parameter, this patch thus makes it impossible to switch to a disabled sidebar view by modifying the 'pagemode' hash of an already loaded document.
2015-08-07 13:45:32 +02:00
Jonas Jenwald
76cfd106d5 Fix 'namedaction' regression that breaks the 'Find' action
This regressed in 0ef6212b64.
2015-08-07 12:05:21 +02:00
Jonas Jenwald
5c26e5e2cd Move handling of the 'pagemode' hash parameter into viewer.js to restore the functionality
This regressed in 0ef6212b64.

Since the 'pagemode' hash parameter requires certain viewer functionality (e.g. thumbnails and an outline) in order to work, it seemed reasonable to move the functionality from `pdf_link_service.js` into `viewer.js`.
Similar to `namedaction`, this patch makes use of an event to forward the 'pagemode' parameter.
2015-08-07 12:05:17 +02:00
Daan Sprenkels
c3b7ed4541 Apply hover style to .overlayButton not only when hovered, but also when focused (issue #6261) 2015-08-04 14:20:43 +02:00
Tim van der Meij
a9d0e42871 Keep the Link annotation's data URL on one line
Fixes #6278.
2015-07-30 17:18:42 +02:00
Tim van der Meij
d08895d659 Merge pull request #6236 from Rob--W/print-javascript-action
Detect scripted auto-print requests
2015-07-25 19:42:31 +02:00
Tim van der Meij
0c15f8a777 Merge pull request #6268 from Rob--W/text-layer-optimize-access
Optimize text layer: Avoid unneeded .textContent access
2015-07-25 16:33:17 +02:00
Rob Wu
47f2c14723 Optimize text layer: Avoid unneeded .textContent
Built-in DOM properties are slower than plain JS properties.
A few lines before, textContent is assigned as follows:
  textDiv.textContent = geom.str;
So replacing textDiv.textContent.length with geom.str.length slightly
improves performance without side effects.
2015-07-25 10:55:00 +02:00
Tim van der Meij
9c510bd6e6 Remove unused globals and updateViewarea function from viewer.js 2015-07-23 16:02:39 +02:00
Tim van der Meij
d162dba85e Merge pull request #6256 from Snuffleupagus/bug-1186842
Ensure that the viewer always receives focus when the HOME/END keys are pressed (bug 1186842)
2015-07-23 14:46:32 +02:00
Jonas Jenwald
8275dff1b1 Reduce code duplication in the 'keydown' event handler in viewer.js, by re-factoring the code which ensures that the viewerContainer is focused 2015-07-23 13:01:55 +02:00
Jonas Jenwald
d5232f5b5a Ensure that the viewer always receives focus when the HOME/END keys are pressed (bug 1186842)
It appears that I broke this with PR 4941.

Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1186842.
2015-07-23 12:04:49 +02:00
Jonas Jenwald
fa53cd6ca3 Use DEFAULT_SCALE_VALUE as default when fetching the zoom parameter from PDFViewerApplication.store (i.e. ViewHistory)
Since the zoom value should be in percent, using `PDFViewer.currentScale` will be wrong by a factor of 100, potentially causing the zoom level of the document to become wrong on load.
2015-07-22 23:58:30 +02:00
Jonas Jenwald
299d05eaa5 Prevent documents from intermittently opening with the zoom level set to 1% (issue 6253)
*This fixes a regression from PR 6192.*

Under some circumstances, the `resize` event handler in `viewer.js` is fired before the scale has been set. This can lead to PDF documents being rendered at the wrong zoom level when they are opened.
It seems that a way to reliably trigger this is to, using the Firefox addon, open a PDF file that triggers the `fallback` bar, in a new background tab (i.e. middle clicking on a link, or use the context menu).

Prior to PR 6192, we checked the selected option in the `scaleSelect` dropdown instead. Since `pageAutoOption` is selected by default in `viewer.html`, this should explain why the issue wasn't visible previously.
2015-07-22 23:45:33 +02:00
Rob Wu
c676ecb5a0 Detect scripted auto-print requests
Fixes #6106

To avoid future regressions, two new unit tests were added:
1. A new PDF based on the report from #6106, which contains an
   OpenAction of type JavaScript and a string "this.print({...}".
2. An existing PDF from https://bugzil.la/1001080 (from #4698).

Although it does not matter, since we don't execute the JavaScript code,
I have also changed "print(true)" to "print({})" since the print method
takes an object (not a boolean). See "Printing PDF documents", page 62:
http://adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_developer_guide.pdf
2015-07-20 18:25:02 +02:00
Jonas Jenwald
93d82e21d5 Move handling of the 'custom' scale value from pdf_viewer.js to viewer.js
The special handling of the 'custom' scale value is only relevant for the `scaleSelect` dropdown in the standard viewer, hence I think that it should be placed in `viewer.js` instead.
2015-07-19 20:02:47 +02:00
Rob Wu
2d6b15d0d9 [CRX] Do not load local files in non-local frames
Ordinarily, local files cannot be embedded in a non-local website. Until
this commit, the extension allowed websites to embed local PDF files on
non-local (e.g. http(s)) websites. This unintended feature is now
disabled, to align better with Chrome's existing security policies
(=local file:-URLs cannot be loaded in a tab unless expicitly allowed).
2015-07-18 00:07:02 +02:00
Jonas Jenwald
d5772fa3ca Merge pull request #6221 from Thunderforge/{find-toolbar-checkbox-keyboard-accessibility}
Fixing find toolbar checkboxes not being accessible through keyboard
2015-07-17 13:24:08 +02:00
Tim van der Meij
b35cbaa32c Merge pull request #6157 from Snuffleupagus/components-update-on-setScale-and-pagesRotation
Make sure that the document is rendered on zooming and rotation for `PDFViewer` instances using the `defaultRenderingQueue`
2015-07-16 23:06:32 +02:00
Will Herrmann
cbc715ed0f Fixing find toolbar checkboxes not being accessible through keyboard navigation 2015-07-16 13:23:14 -05:00
Jonas Jenwald
0c08113e39 Remove PDFViewerApplication.setScale and further simplify the scalechange event handler (issue 6158)
This finally fixes 6158.
2015-07-14 10:06:59 +02:00
Rob Wu
3e363ae307 scrollIntoView: Skip overflow:hidden elements 2015-07-14 00:23:29 +02:00
Jonas Jenwald
2608757620 Simplify the code that resets the value of the pageNumber element in PDFViewerApplication.setInitialView
After the creation of `PDFViewer`, its `_resetView` method takes care of resetting, among other things, the page number property. Hence we don't need to set `pdfViewer.currentPageNumber = 1;` here any more, and the comment is no longer accurate either.
2015-07-12 16:24:07 +02:00
Tim van der Meij
535b7c236e Merge pull request #6110 from Snuffleupagus/issue-6056
Refactor viewer code to fix issues with the "pageviewer" components example (issue 6056)
2015-07-12 16:02:37 +02:00
Jonas Jenwald
5cb15874fa Remove PDFViewerApplication.updateScaleControls (issue 6158)
*With this patch we're getting very close to fixing 6158.*

The only use-case for `PDFViewerApplication.updateScaleControls` is to try and avoid calling `selectScaleOption` from the `scalechange` event handler in viewer.js.
This will *only* happen when the user has manually changed the scale by using the `<select>` dropdown, which means that in reality this is just a micro optimization. Furthermore, `selectScaleOption` is only skipped for the "named" scale values (e.g. `auto`, `page-actual`, `page-fit`, `page-width`), thus further reducing the value of this code.

Also, since we're updating the scale `<select>` dropdown from an event handler, we're currently depending on the event being dispatched (and handled) completely before the next `scalechange` event. Relying on the execution order of the code in this way, even though it currently works, seems unfortunate since it *could* potentially cause the internal scale value and the UI from getting out of sync.
2015-07-11 11:25:32 +02:00
Jonas Jenwald
35ee1e1b0a Refactor the 'resize' event handler in viewer.js (issue 6158)
*This is the next step towards fixing 6158.*

This patch removes the dependency on the state of the scale `<select>` dropdown from the `resize` event handler, and instead uses the (in `PDFViewer`) stored `currentScaleValue`.
I believe that the way this code is currently written is purely for historical reasons, since originally *only* the numerical scale was stored internally (hence there was no other way to access the scale value).
However, since we now store the scale value, we should use it instead of quering the DOM. This helps ensure that the internally stored scale value is always accurately displayed in the UI (which should be good since, after the creation of `PDFViewer`, the `<select>` DOM element is now updated by an event handler).
2015-07-10 11:50:54 +02:00
Tim van der Meij
ccfafea20b Merge pull request #6182 from Snuffleupagus/remove-PDFViewerApplication-get-currentScaleValue
Remove the `currentScaleValue` getter from `PDFViewerApplication` (issue 6158)
2015-07-09 15:48:08 +02:00
Jonas Jenwald
1c0115a7e4 Remove the currentScaleValue getter from PDFViewerApplication (issue 6158)
*The next step towards fixing issue 6158.*

We can just as well access `pdfViewer.currentScaleValue` directly in `PDFViewerApplication`, instead of having a helper function which just acts as a wrapper for it.
2015-07-07 09:17:05 +02:00
Jonas Jenwald
d0c071a40d Prevent re-rendering of pages because of rounding errors when computing the scale value
Currently if the zoom level is reset multiple times in a row, i.e. by pressing <kbd>Ctrl</kbd>+<kbd>0</kbd>, the pages can be re-rendered each time even though their size shouldn't change. Whether this happens can depend on the size of the viewer, but documents with pages in landscape mode seem to be very susceptible to this. (An example is: https://wiki.mozilla.org/images/5/55/MobileOpportunity.pdf.)
This can also effect documents with pages in portrait mode, when they are displayed in Presentation Mode.

The reason for this unnecessary re-rendering is that due to limited numerical precision, the new scale value may change in *only* the last decimal place.
2015-07-06 17:22:03 +02:00
Jonas Jenwald
d9975ea778 Move annotation related CSS rules from pdf_viewer.css to its own file
This is similar to the already existing, separate, CSS file used for the `textLayer`, and it's necessary in order for the `pageviewer` components example to actually show annotations correctly.
2015-07-06 16:37:33 +02:00
Jonas Jenwald
4364b37e55 Simplify the SimpleLinkService and use it to pass in a linkService instance in DefaultAnnotationsLayerFactory
Considering that most methods of `SimpleLinkService` are complete stubs, or practically "useless" considering what they return, we can actually simplify it even more.

*Note:* This depends on the previous patch, that did a small amount of refactoring of `PDFViewer_scrollPageIntoView`, since `PDFViewer.linkService.page` is no longer accessed.

----------

Currently the `pageviewer` components example doesn't work correctly (an error is printed in the console), since no `linkService` is present when the `AnnotationsLayerBuilder` is created.

*Note:* Given that this uses the `SimpleLinkService`, clicking on e.g. internal links won't actually do anything. However, given that internal links (and similar features) are pretty much useless when only *one* page is loaded the `pageviewer` example, I don't think that really matters.
Also, using the complete `PDFLinkService` would require a `PDFViewer` instance. That would significantly complicate the example, thus making it both less clear and less self contained.
2015-07-06 16:34:55 +02:00
Jonas Jenwald
ac3233bfa4 Use "private" properties in PDFViewer_scrollPageIntoView
Currently in `PDFViewer_scrollPageIntoView`, we're accessing a number of properties in an indirect and overly complicated way. In particular, using `this.linkService.page` is a *very* roundabout way to access `this.currentPageNumber`.

The reason for this appears to be entirely historical, since prior to PR 5361 the code was placed in `PDFPageView` (or `PageView` as it was called at the time).
2015-07-06 16:33:01 +02:00
Jonas Jenwald
6b2810f1f0 Pass in a PDFViewer instance to PDFPresentationMode and use it to eliminate all references to PDFViewerApplication
This patch is the the first step towards to addressing issue 6158, which will be done by refactoring the code for setting/getting the current scale in `viewer.js`.
2015-07-06 09:49:51 +02:00
Rob Wu
2932f7c676 Zoom relative to cursor position via mouse wheel
Before this patch, zooming in/out via the scroll wheel caused the page
to be zoomed relative to the upper-left corner of the page, i.e. the
upper-left corner of the page stays at a fixed position.

After this patch, the page is zoomed relative to the cursor position,
i.e. after zooming in/out, the part under the cursor 'has not moved'.

This only applies when the page does not fit in the viewport, because
pages smaller than the viewpoer are always centered.
2015-07-02 23:20:37 +02:00
Brendan Dahl
9bb2908d67 Merge pull request #6155 from LilyBin/cmap
Update Adobe CMaps URL and license
2015-07-01 11:03:42 -07:00
Yury Delendik
f3c3b1fc2d Removes B2G preprocessing directives. 2015-06-30 16:53:32 -05:00
Yury Delendik
1b847df2f3 Using pdfjs-dist as a library for b2g viewer. 2015-06-30 16:53:32 -05:00
Jonas Jenwald
d940078d95 Make sure that the document is rendered on zooming and rotation for PDFViewer instances using the defaultRenderingQueue
In `viewer.js` we have code that ensures that the document is re-rendered on zooming and rotation. However, for `components` based viewers this might not work correctly, since there's currently no code which handles that.

Note that there is a good chance that this "just works" in many `components` viewers already, thanks to the `watchScroll` function.
The explanation is that zooming or rotation, most of the time, causes the viewer to change its (scrollable) size, thus triggering `PDFViewer_update` through `PDFViewer_scrollUpdate`.

However, in general there's no guarantee that this will actually work (since zooming and rotation doesn't necessarily change the size of the viewer for all documents), and requiring every viewer `components` implementer to provide methods for this doesn't seem like a great idea.
2015-06-30 23:09:17 +02:00
Timothy Gu
a5cfb0a73b Update Adobe CMaps URL and license
They are now using Apache 2.0 as well.
2015-06-30 00:42:21 -07:00
Jonas Jenwald
ffeba9c630 Move the page switching code into set currentPageNumber in PDFViewer instead of placing it in the pagechange event handler
The reason that this code can be moved is that the `if (this.loading && page === 1)` check, in the `pagechange` event handler in viewer.js, is never satisfied since `this.loading` is not defined in that scope.
This *could* be considered a regression from PR 5295, since prior to that `this.loading` was using the `PDFViewerApplication` scope (or `PDFView` as it were).
However, I don't think that we need to fix that since we've been shipping this code in no less than *three* Firefox releases (uplifted in https://bugzilla.mozilla.org/show_bug.cgi?id=1084158), without breaking the world.

An explanation of why the `pagechange` code works, despite `this.loading === undefined`, is that `set currentPageNumber` (in `PDFViewer`) returns early whenever `this.pdfDocument` isn't set. This check is, for all intents and purposes, functionally equivalent to checking `PDFViewerApplication.loading`.
Hence we can move the page switching code into `PDFViewer`, and also remove `PDFViewerApplication.loading` since it's not used any more.
(The `this.loading` property was added in PR 686, which was before the current viewer even existed.)

*Note:* The changes in this patch should also be beneficial to the viewer `components`, since requiring every implementer to provide their own `pagechange` event handler just to get `PDFViewer.currentPageNumber` to actually work seems like an unnecessary complication.
2015-06-24 14:07:07 +02:00
Jonas Jenwald
633d51fc22 [Firefox] Handle the user modifying the "mousewheel.with_meta.action" and "mousewheel.with_control.action" prefs (bug 1170063)
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1170063.

The bug only mentions the <kbd>Meta</kbd> key, but given that a similar situation can occur for <kbd>Ctrl</kbd>, it seemed reasonable to also handle that case in the same patch.

The only possible caveat with the patch is that because of the use of `shadow`, things won't work perfectly if either of the prefs are changed *while* the viewer is active. In this case a reload is required in order for it to work correctly, but given that the issue this patch fixes should be quite rare anyway, that seems OK.
2015-06-19 14:57:32 +02:00
Jonas Jenwald
7cb62089ad Fix a typo causing a TypeError when attempting to call pdfHistory_clearHistoryState (issue 6121)
Fixes 6121.

Note: This "regressed" in PR 5823.
2015-06-16 13:16:12 +02:00
Tim van der Meij
5a6ab1502b Merge pull request #6076 from LilyBin/button-fix
Apply padding on <select>, not the button
2015-06-09 23:43:40 +02:00
Rob Wu
f4ba0e342e Check availability of canvas & PDF before printing 2015-06-05 23:55:08 +02:00
Rob Wu
adb2f8ae21 [CRX] Add Referer request header if needed
This patch adds the Referer request header to PDF requests if
the original PDF request included the Referer header.
2015-06-05 23:24:40 +02:00
Jonas Jenwald
27713f9454 Ensure that PDFHistory does not incorrectly replace the initial document hash (issue 6079)
This is fallout from PR 5971; fixes 6079.
2015-06-04 13:58:45 +02:00
Timothy Gu
099f99d6ad Apply padding on <select> and not the button 2015-06-03 12:16:12 -07:00
Jonas Jenwald
3d9a8022ce Fix a couple of function names in error messages in PDFLinkService 2015-05-29 13:47:28 +02:00
Jonas Jenwald
20881dc99a Make PDFHistory optional in PDFLinkService
Currently `PDFLinkService` requires access to a `PDFHistory` instance in order for it to work correctly (and to avoid errors). If we want `PDFLinkService` to be more useful in custom viewers, I don't think that we actually want to force it to have a `PDFHistory` instance.
Hence this patch, which contains a very simply approach to make `PDFHistory` optional.
2015-05-29 13:37:28 +02:00
Jonas Jenwald
189ef974b1 Merge pull request #5971 from yurydelendik/refact-hist-link
Extracts PDFLinkService and PDFHistory APIs
2015-05-29 12:38:01 +02:00
Tim van der Meij
82536f8fa6 Merge pull request #6025 from mcorb/retina-thumbnails
viewer: Support Retina/HiDPI thumbnails
2015-05-19 21:38:45 +02:00
Mike Corbin
357ee6cbb2 viewer: Support Retina/HiDPI thumbnails
Reuse the existing getOutputScale() machinery to render and/or rescale
thumbnail images to the native display resolution. Fixes blurry thumbnails on
HiDPI displays making it a lot easier to make out the content.
2015-05-18 15:13:46 +01:00
Yury Delendik
5cff06e52a Refactors PDFHistory.
# Conflicts:
#	extensions/b2g/viewer.js
#	web/pdf_history.js
#	web/pdf_viewer.component.js
#	web/viewer.js
2015-05-16 11:20:36 -05:00
Yury Delendik
0ef6212b64 Refactors PDFLinkService.
# Conflicts:
#	web/viewer.js
2015-05-16 11:20:36 -05:00
Mike Corbin
a22319b98a Eliminate transition effects from thumbnail loader
During A/B testing we found a significant preference (increased engagement
time, reduced downloads of original PDF for local viewing) for the version that
doesn't animate loading thumbnails.

Profiling shows that the transition effects hit at a pessimal time when the
compositor is busy rendering the main PDF page view, and rendering thumbnail
previews, causing the main scroll view to stutter. With the transition removed
scrolling is perceptibly smoother in Chrome and Firefox. We also hypothesize
that the transition effects added to a perception of slowness but presumably
the aforementioned stutter is the primary issue here.
2015-05-16 15:08:10 +01:00
Jonas Jenwald
4dc52cf92c Tweak the :focus/:hover CSS rules of the .toolbarField class used in Overlay dialogs
Having recently spent some time staring at the PasswordPrompt, while fixing issue 6010, I felt that the current border style does not really give a good visual  indication that the input field actually has focus.

The current appearance was first introduced in PR 3527; but I don't know if having a different border style in Overlay dialogs was intentional, or if it just "happened".
However, given the colour palette used in the viewer UI, I think that using the same border style for all .toolbarFields makes sense.
2015-05-15 13:52:18 +02:00
Jonas Jenwald
9deae0eb6d Merge pull request #6014 from NotablePDF/fix_scroll_zoom
Fix scroll to zoom jump between 25% and 1000%
2015-05-15 01:18:47 +02:00
Xiliang Chen
ed540a8d00 Fix scroll to zoom jump between 25% and 1000% 2015-05-15 10:16:52 +12:00
Tim van der Meij
d7aa95d6b1 Merge pull request #5857 from Rob--W/print-page-size
Set page size via @page + size
2015-05-14 16:52:40 +02:00
Tim van der Meij
39d5031832 Merge pull request #5989 from Snuffleupagus/updateviewarea-location
Add the |location| to the |updateviewarea| UI event
2015-05-14 13:14:34 +02:00
Yury Delendik
00f3756d02 Merge pull request #5867 from Snuffleupagus/pdfViewer-pages-private
Change |pages| to be a "private" property of |PDFViewer|
2015-05-11 12:33:59 -05:00
Jonas Jenwald
ba0eb7fdc6 Add the |location| to the |updateviewarea| UI event
*This patch addresses an issue I stumbled upon while working on rewriting the history implementation.*

Currently the `updateviewarea` UI event doesn't include the `location`, and in the event handler in viewer.js we instead reach into `PDFViewer` to retrieve it. Not only does this seem conceptually wrong, it also makes the `updateviewarea` event less useful in general since it's currently only possible to access the `location` if you have a reference to the `PDFViewer`.

To me, this simply appears to be an oversight in the implementation, hence this patch which adds `location` to the `updateviewarea` event. It also changes `location` to be a "private" property of `PDFViewer`.
2015-05-08 12:15:50 +02:00
David Flanagan
ae740768b0 Bug 1152841 - make pdf.js viewer app handle open requests from file viewers 2015-05-05 01:04:45 +02:00
Tim van der Meij
12be47c57c Merge pull request #5598 from CodingFabian/chrome39-range-disable
Disable Range Support for Chrome 39+40 (#5512)
2015-04-30 22:31:50 +02:00
Fabian Lange
1d4758dadf Disable Range Support for Chrome 39+40 (#5512)
Disabling Range Support for Chrome 39 and 40, due to regression in
Chromium. https://crbug.com/442318
2015-04-29 23:25:58 +02:00
Tim van der Meij
6f3024f366 Merge pull request #5977 from Snuffleupagus/pr-5966-followup
Prevent Firefox from warning about |unreachable code after return statement|
2015-04-29 21:28:47 +02:00
Tim van der Meij
6159da0598 Merge pull request #5828 from Rob--W/mozCurrentTransform-fix
Fix flaw in mozCurrentTransform polyfill
2015-04-29 19:27:02 +02:00
Jonas Jenwald
66b12974c9 Prevent Firefox from warning about |unreachable code after return statement|
*This is a follow-up to PR 5966.*

Now that https://bugzilla.mozilla.org/show_bug.cgi?id=1151931 has landed, we're unfortunately in a situation where Firefox warns about `unreachable code after return statement` multiple times when using the PDF.js code in `node make server` mode.

I'm really sorry about the churn in this code!
However I don't think it's a good idea to let Firefox continue to printing these warnings in the console, since it increases the risk of missing actual errors.
2015-04-29 19:26:05 +02:00
Tim van der Meij
080ab204d6 Merge pull request #5953 from Snuffleupagus/issue-3498
Remove no longer needed hacks that enable spacebar scrolling in Firefox (issue 3498)
2015-04-27 19:10:49 +02:00
Tim van der Meij
c91f736db7 Merge pull request #5966 from Snuffleupagus/lint-viewer-preprocesser-code
Enable linting of Firefox specific code in viewer.js
2015-04-27 18:59:55 +02:00
Tim van der Meij
6abf3d6ba3 Simplify document properties field logic
This patch:
- Simplifies the way fields are passed to the document properties overlay
- Simplifies the way fields are filled internally in the document properties overlay
- Avoids passing a document properties reference to the secondary toolbar
2015-04-27 15:25:40 +02:00
Jonas Jenwald
91ce16bc1d Enable linting of Firefox specific code in viewer.js
- This patch uncomments a large portion of the Firefox specific code in viewer.js, by using a preprocessor "trick", to enable linting. Doing this actually uncovered some issues, e.g. variables defined multiple times.

 - This patch also fixes a spelling error, `adobe pdfwritter` -> `abobe pdfwriter`, in the `KNOWN_GENERATORS` list used when reporting telemetry data in Firefox.

*Please note:* there's still some Firefox specific code that is commented out, but it's usually just one (or two) lines of code. Hence the risk that errors creep in should be much lower, compared to entire code-blocks.
2015-04-26 19:52:09 +02:00
Tim van der Meij
1a5de56675 Group public/private methods and add comments
This patch:
- Puts public methods at the top of the file
- Puts private methods below the public methods and marks them with an underscore
- Adds JSDoc comments to the class
- Adds setDocumentAndUrl to avoid having to handle that in `viewer.js`
2015-04-26 15:50:28 +02:00
Tim van der Meij
7cf440c560 Refactor PDFDocumentProperties to be more class-like 2015-04-24 20:47:38 +02:00
Tim van der Meij
ca8f842d87 Rename DocumentProperties to PDFDocumentProperties 2015-04-24 20:35:11 +02:00
Jonas Jenwald
b1c4b85d4f Change |pages| to be a "private" property of |PDFViewer|
As suggested by yurydelendik: http://logs.glob.uno/?c=mozilla%23pdfjs&s=30+Sep+2014&e=30+Sep+2014&h=4150#c26119, this patch renames `pages` -> `_pages` to indicate that it's a "private" property.
Accessing pages from outside `PDFViewer` should instead be done by using `getPageView`.
2015-04-21 22:40:11 +02:00
Jonas Jenwald
10f134bcc2 Remove no longer needed hacks that enable spacebar scrolling in Firefox (issue 3498)
Now that [bug 915962](https://bugzilla.mozilla.org/show_bug.cgi?id=915962) has landed, we no longer need any hacks to enable <kbd>spacebar</kbd> scrolling in Firefox.

Fixes 3498.
2015-04-21 22:26:50 +02:00
Jonas Jenwald
601bd4a930 Preface all "fullscreen" CSS rules with a |pdfPresentationMode| class, and add it to the |viewerContainer| while Presentation Mode is active 2015-04-21 16:28:50 +02:00
Jonas Jenwald
4211df63eb Refactor PDFPresentationMode to be more class-like 2015-04-21 16:28:50 +02:00
Jonas Jenwald
4edee12e92 Re-ordering the PDFPresentationMode code so that the "public" functions are placed towards the top of the file 2015-04-21 16:28:49 +02:00
Jonas Jenwald
d5089f42fa Initial refactoring of the PDFPresentationMode code
Noteworthy changes:

 - Adds JSDoc comments to PDFPresentationMode.

 - Removes a couple of, no longer necessary, helper functions.
2015-04-21 16:28:49 +02:00
Jonas Jenwald
f15d5c8cfe Rename the presentation_mode.js file and adjust the function names
Also moves the |fullscreenchange| event listeners into PDFPresentationMode.
2015-04-21 16:28:48 +02:00
Jonas Jenwald
e7fd5b4d4d Refactor the options passed to |PresentationMode.initialize| and clean-up some code in viewer.js and presentation_mode.js
This patch:
 - Passes in a reference to the current PDFThumbnailViewer, which is used to ensure that the current thumbnail becomes visible when exiting PresentationMode.

 - Changes the way that the event listeners for the contextmenu items are defined, to avoid passing in a reference to the SecondaryToolbar.

 - Ensures that |supportsFullscreen| always returns a boolean.
   Currently `supportsFullscreen` will, when the browser supports the fullscreen API, return e.g. `function mozRequestFullScreen()` instead of `true`.

 - Simplifies the |click| handler code when PresentationMode is active.
   This code has been obsolete ever since PR 2919 landed.

 - Removes hack used to workaround a bug in WebKit browsers, which caused |mousemove| events to be fired when the cursor changed.
   This was fixed close to a year ago, see http://code.google.com/p/chromium/issues/detail?id=103041.
2015-04-21 16:27:41 +02:00
Jonas Jenwald
95b2ec124b Move the PresentationMode-specific scrollWheel code from PDFViewerApplication 2015-04-21 16:08:37 +02:00
Jonas Jenwald
2dc1af8028 Break dependencies between PresentationMode and other code, and add PresentationMode related utility methods to PDFViewer
This patch:
 - Adds a couple of utility methods to `PDFViewer` to enable checking `presentationModeState` without cumbersome comparisons.

 - Disentangles `PresentationMode` from `PDFHistory` and `HandTool`, by adding event listeners for `presentationmodechanged` to both of them.

 - Adds a utility function to `PDFViewerApplication` for requesting PresentationMode.

 - Prevents initialization of `PresentationMode` if the browser does not support the fullscreen API.
2015-04-21 16:02:32 +02:00
arai
5c4e3c31b8 Bug 1156287 - Do not extract unreachable code after return 2015-04-21 00:22:45 +09:00
Tim van der Meij
e4e9a2adea Merge pull request #5926 from browtayl/1018932
prevent viewer from zooming on cmd+mousewheel (bug 1018932)
2015-04-13 20:57:23 +02:00
Jonas Jenwald
bc0d55bf43 Remove commented out code from viewer.html
The line that this patch removes has been commented out since 2012 (!), see commit c8a6a9ba00.

Also, since the patch is trivial, I'm fixing the formatting of a comment to stop [GitHub from marking it with a red color](https://github.com/mozilla/pdf.js/blob/master/web/viewer.html#L394) (and IE from complaining).
2015-04-13 12:44:05 +02:00
Taylor Brown
34d3b96b52 prevent viewer from zooming on cmd+mousewheel 2015-04-10 15:08:32 -07:00
Jonas Jenwald
48242abe72 [B2G] Stub the |DownloadManager| to avoid error
After the refactoring in PR 5678, the B2G viewer now prints the following in the console:
```
ReferenceError: DownloadManager is not defined
```

This will obviously not matter once the B2G viewer is replaced with the new components-based one. But until that happens, I think it makes sense to just stub the class to suppress the error.
2015-04-04 21:26:33 +02:00
Tim van der Meij
01f1761a8b Merge pull request #5881 from mbbaig/master
Added the data-page-number dom attribute to the page rendered in the browser
2015-04-01 20:57:07 +02:00
Jonas Jenwald
e5c4819601 Small refactoring of the code that calls |PDFViewerApplication.setInitialView|
This is a minor cleanup, to avoid an unnecessary `Promise.all` and to simplify catching |ViewHistory| errors.
2015-03-31 20:35:00 +02:00
Jonas Jenwald
6091e7bd6b Move the code that resets the history state when the |showPreviousViewOnLoad| preference is set to |false|
Since this code is *only* necessary if/when the history is actually enabled, this patch refactors it to actually reflect that.
2015-03-31 18:12:15 +02:00
Jonas Jenwald
03497eabd5 Move fetching of the |defaultZoomValue| preference value to |PDFViewerApplication.initialize|
For consistency, this preference should be placed amongst the others. The current position is purely for "historical" reasons, since it was one of the first preferences that was added to the code.
2015-03-31 15:33:21 +02:00
Jonas Jenwald
3974adcc22 Remove reference to GNUpdf from comment in |DocumentProperties.parseDate|
Since the link is no longer valid, we should remove it from the comment.

(Using the Internet Archive, it seems that the contents of that page was basically identical to the PDF specification.)
2015-03-28 11:53:20 +01:00
Mohamed Baig
6d8adb31ad Added the data-page-number dom attribute to the page rendered in the browser
Added data-page-id attribute to page container divs

Updated the attribute with a better label
2015-03-27 18:23:39 -04:00
Rob Wu
d34e6ddd60 Set page size via @page + size
In Blink-based browsers, there is a mismatch between document size and
paper size. Even if exactly the same values and unit are used, it is
possible that the printed results takes more pages than expected.

To solve the issue, the page size is set via @page size, and the canvas
and ancestor nodes are assigned a width+height of 100% (=relative to the
page). This change resolves bugs such as blank pages and split pages.
2015-03-23 11:19:48 +01:00
Jonas Jenwald
94cc731616 Add custom |outlineloaded| and |attachmentsloaded| events to the viewer (bug 1112947) 2015-03-21 17:49:34 +01:00
Tim van der Meij
2d11266a52 Merge pull request #5866 from Snuffleupagus/scalechange-evt-pageActualOption
Add |pageActualOption| to the list of predefined zoom options in the |scalechange| event handler in viewer.js
2015-03-20 22:26:07 +01:00
Jonas Jenwald
36400ae48d Add |pageActualOption| to the list of predefined zoom options in the |scalechange| event handler in viewer.js
This patch also rearrange the order of the references to the DOM elements of the predefined zoom values, in viewer.js, to correspond with the element order in the current viewer UI. (The previous ordering is a leftover from the previous viewer UI.)
2015-03-20 22:09:34 +01:00
Jonas Jenwald
4a3b0d9c64 Add a |PDFViewer| option to remove the border shadow around pages (issue 5559) 2015-03-16 12:28:28 +01:00
Jonas Jenwald
65a5543efe Disable PresentationMode for certain problematic configurations
Instead of trying to hack around various browser defects, let's just disable PresentationMode in the affected browsers. This patch:

- Disables PresentationMode in IE11+ when the viewer is embedded; fixes 4711.
2015-03-13 22:09:36 +01:00
Tim van der Meij
230d8c40e4 Make presentation mode work again in Safari 2015-03-13 21:41:14 +01:00
Tim van der Meij
ac5d1fbb2d Merge pull request #5785 from Snuffleupagus/bug-1138993
Revert PR 5510, except in WebKit browsers, for breaking print preview in Firefox
2015-03-12 21:16:29 +01:00
Rob Wu
6eb9e6a6a4 Fix flaw in mozCurrentTransform polyfill
Set transformation matrix in (polyfilled) mozPrintCallback when a scale
is applied. Removed _scaleX and _scaleY in favor of _transformMatrix to
emphasize that the caller MUST ensure that the state of the matrix is
correct before `addContextCurrentTransform` is called.
2015-03-11 20:55:26 +01:00
Yury Delendik
da258f8972 Merge pull request #5692 from Rob--W/webl10n-fix
[l10n] Treat language as case-insensitive
2015-03-09 23:24:57 -05:00
Yury Delendik
c2dc665332 Merge pull request #5582 from Snuffleupagus/setHash-Fit-values
Fix handling of "Fit" zoom values in setHash (issue 5581)
2015-03-09 23:20:23 -05:00
Yury Delendik
f4dbd69e06 Merge pull request #5595 from fkaelberer/useBinarySearchToFindVisibleElements
Use binary search in getVisibleElements()
2015-03-09 23:11:50 -05:00
Jonas Jenwald
f0d538d7cf Revert PR 5510, except in WebKit browsers, for breaking print preview in Firefox
See https://bugzilla.mozilla.org/show_bug.cgi?id=1138993.
2015-03-07 00:16:55 +01:00
speedplane
80d85b5fe7 Embedded PDF viewers should not be changing their parent page's title. 2015-03-05 22:36:08 -05:00
Jonas Jenwald
43e6de7e38 Merge pull request #5680 from Rob--W/forget-showPreviousViewOnLoad
Reset state upon load if showPreviousViewOnLoad
2015-03-02 21:49:34 +01:00
Rob Wu
6a16d7dd44 Reset state upon load if showPreviousViewOnLoad
And moved showPreviousViewOnLoad up to PDFViewerApplication.initialize
2015-03-02 21:35:44 +01:00
fkaelberer
a78bb6b946 Use binary search in getVisibleElements() 2015-03-01 17:41:20 +01:00
Tim van der Meij
a033b4bf3d Merge pull request #5769 from dumyan/findcontroller-nbsp
nbsp normalization
2015-02-28 14:50:25 +01:00
Jonas Jenwald
00ee6bd6b6 Merge pull request #5693 from collinanderson/whitespace
cleaned whitespace
2015-02-28 10:09:21 +01:00
Damjan Velickovski
29290f3277 added nbsp normalization 2015-02-28 02:57:08 +01:00
Yury Delendik
ce122591b9 Merge pull request #5586 from fkaelberer/updateThumbnailClassesOnlyWhenVisible
Update thumbnails only when they are visible (to improve scrolling through large documents)
2015-02-27 06:56:32 -06:00
Yury Delendik
6ead5c4731 Merge pull request #5711 from Snuffleupagus/deprecate-el-property
Remove the |el| property in PDFPageView and PDFThumbnailView
2015-02-27 06:39:00 -06:00
Yury Delendik
a0a94344d7 Merge pull request #5721 from Snuffleupagus/move-findController-resolveFirstPage
Move the call to |PDFFindController.resolveFirstPage| into PDFViewer
2015-02-27 06:33:15 -06:00
Jonas Jenwald
eed67ea8bb Remove the |el| property in PDFPageView and PDFThumbnailView 2015-02-27 00:26:02 +01:00
Jonas Jenwald
a495ab0d13 Fix regression that prevents resetting the zoom level to "Automatic" when using the |Ctrl + 0| keys 2015-02-19 17:37:02 +01:00
Collin Anderson
54e984c763 cleaned whitespace 2015-02-17 11:07:37 -05:00
Jonas Jenwald
8131440f9e Move the call to |PDFFindController.resolveFirstPage| into PDFViewer
From reading IRC scrollback, it became clear that having to manually call `PDFFindController.resolveFirstPage` in order for the find functionality to work isn't particulary good. Hence this PR, which moves that code into `PDFViewer.setDocument` to make life easier for third-party implementations.
2015-02-11 14:22:24 +01:00
Rob Wu
ac5a8bcdda [l10n] Treat language as case-insensitive
See "Case-insensitive language comparisons per RFC 4646"
https://github.com/fabi1cazenave/webL10n/pull/51

Removed the "patch" in compatibility.js and fixed the bug in webL10n,
because the logic belongs to webL10n instead of PDF.js.
The immediate motivation for this patch is that Chrome 40 converts
navigator.language to lower case: https://crbug.com/454331
2015-02-02 22:02:18 +01:00
Jonas Jenwald
d53fa1884b Simplify a couple of preprocessor tags in viewer.js 2015-01-31 22:45:20 +01:00
Jonas Jenwald
bb16475070 Use the |shadow| function from src/shared/util.js in viewer.js 2015-01-31 22:43:30 +01:00
Tim van der Meij
b72395d5ce Determine filename only once and reduce code for _bindLink 2015-01-28 20:53:03 +01:00
Tim van der Meij
818b7fc306 Add JSDoc comments to PDFAttachmentView 2015-01-28 20:53:02 +01:00
Tim van der Meij
4c6ca1c78f Remove DownloadManager dependency
We can pass it in using the options object. Note that that this also avoids creating a DownloadManager object for each separate link (instead, having only one is enough).
2015-01-28 20:53:01 +01:00
Tim van der Meij
733882ac25 Refactor PDFAttachmentView to be more class-like and to separate functionality into methods 2015-01-28 20:53:00 +01:00
Tim van der Meij
609e2a30e9 Rename DocumentAttachmentsView to PDFAttachmentView 2015-01-28 20:52:59 +01:00
Tim van der Meij
2c19d99a2e Rename document_attachments_view.js to pdf_attachment_view.js 2015-01-28 20:52:22 +01:00
Tim van der Meij
f4dbc99483 Add JSDoc comments to PDFOutlineView 2015-01-27 23:04:48 +01:00
Tim van der Meij
ea1d37eb0d Refactor PDFAttachmentView to be more class-like and to separate functionality into methods 2015-01-27 22:51:39 +01:00
Tim van der Meij
b17da309ed Rename DocumentOutlineView to PDFOutlineView 2015-01-27 22:40:12 +01:00
Tim van der Meij
3eeb571425 Rename document_outline_view.js to pdf_outline_view.js 2015-01-27 22:38:45 +01:00
fkaelberer
d3022e1e70 Update thumbnail images only when sidebar is visible 2015-01-27 21:13:34 +01:00
fkaelberer
047d61ed1f Update thumbnail style only when sidebar is visible 2015-01-27 21:08:36 +01:00
Tim van der Meij
a544aed2b0 Merge pull request #5673 from Snuffleupagus/thumbnail-refactor
Refactor the thumbnail code
2015-01-26 21:33:32 +01:00
Jonas Jenwald
777d69b52e Remove dead code from PDFThumbnailView 2015-01-26 20:52:46 +01:00
Jonas Jenwald
b7041f81f4 Enable cancelling of thumbnail drawing
This is useful if thumbnails are being rendered when the document is rotated, since it let us abort the current rendering.
2015-01-26 20:52:45 +01:00
Jonas Jenwald
878aa76c15 Refactor PDFThumbnailView to look more similar to PDFPageView
This includes an optimization to zero the height and width of existing thumbnail canvases, when they are removed and recreated during rotation of the document. (Credit goes to nnethercote, who initially found this in PR 4920.)
2015-01-26 20:52:45 +01:00
Jonas Jenwald
7f8f404536 Rename ThumbnailView to PDFThumbnailView and refactor it to be more class-like 2015-01-26 20:52:44 +01:00
Jonas Jenwald
4294fb18d8 Merge pull request #5675 from timvandermeij/cleanup-gitignore
Remove obselete file from .gitignore
2015-01-26 16:52:10 +01:00
Jonas Jenwald
9a8d1ce4fc Merge pull request #5672 from timvandermeij/remove-b2g-header
Remove unused viewer-snippet-b2g-activity-header.html
2015-01-26 16:47:58 +01:00
Tim van der Meij
2524c4dee7 Remove obselete file from .gitignore 2015-01-26 16:44:45 +01:00
Tim van der Meij
5db9ebea19 Merge pull request #5674 from Snuffleupagus/avoid-double-childNodes-in-PDFPageView_reset
Avoid getting |childNodes| twice in PDFPageView_reset, by using the variable instead
2015-01-26 16:39:31 +01:00
Jonas Jenwald
8471bb3206 Avoid getting |childNodes| twice in PDFPageView_reset, by using the variable instead 2015-01-26 12:22:09 +01:00
Tim van der Meij
c278d65dfd Remove unused viewer-snippet-b2g-activity-header.html 2015-01-25 20:55:20 +01:00
Tim van der Meij
f89d1ca2e7 Remove unused index.html.template 2015-01-25 20:44:21 +01:00
Jonas Jenwald
64ba38008f Rename the thumbnail_view.js file 2015-01-25 17:21:53 +01:00
Jonas Jenwald
dfa993d13d Fix function names in PDFThumbnailViewer
Also updates a couple of the JSDoc comments.
2015-01-25 17:21:29 +01:00
Jonas Jenwald
c55dcf19a0 Move PDFThumbnailViewer to its own file 2015-01-24 15:41:18 +01:00
Tim van der Meij
dd7fd0b665 Merge pull request #5588 from Snuffleupagus/remove-pageView-anchor
Remove unused anchor links placed before every page
2015-01-23 22:38:09 +01:00
Tim van der Meij
997c2b9d94 Merge pull request #5596 from fkaelberer/fixBordersAroundThumbnails
Fix border sizes around thumbnails
2015-01-23 21:29:49 +01:00
Tim van der Meij
6f36df79a1 Merge pull request #5610 from fkaelberer/betterThumbnailScaling
Better thumbnail image scaling
2015-01-23 20:45:37 +01:00
Jonas Jenwald
385b07c2ab Merge pull request #5660 from timvandermeij/thumbnails-setimage
Fill temporary canvases with a white background too
2015-01-22 20:20:27 +01:00
Tim van der Meij
879f3d2c5a Fill temporary canvases with a white background too 2015-01-19 22:01:55 +01:00
Jonas Jenwald
c149d4d75e Fix thumbnail rendering regression, when using |draw|, for PDF files with blend modes (issue 5637) 2015-01-19 21:55:59 +01:00
Jonas Jenwald
af6170ffd0 Attempt to display the File size quicker in the Document Properties dialog (PR 5554 followup) 2015-01-13 09:38:34 +01:00
Jonas Jenwald
c466a9e034 Fix thumbnail scaling regression for files with different page sizes (issue 5637) 2015-01-13 01:03:54 +01:00
Jonas Jenwald
8d0c442004 Merge pull request #5632 from yurydelendik/b2g-start
Fixes B2G file open sequence.
2015-01-09 18:00:39 +01:00
Yury Delendik
d52289d8fd Fixes B2G file open sequence. 2015-01-09 07:46:34 -06:00
Brendan Dahl
6ceb652abb Merge pull request #5554 from yurydelendik/apiref
Refactors getDocument and adds PDFDataRangeTransport.
2015-01-08 14:24:38 -08:00
Jonas Jenwald
95dd9ee185 Move the |pagerendered| event to pdf_page_view.js
Also deprecates the |pagerender| event, except for GENERIC builds.
2015-01-06 21:44:22 +01:00
Jonas Jenwald
3f061cef86 Add a |textlayerrendered| event 2015-01-06 17:57:32 +01:00
Yury Delendik
3a61edfcae Refactors getDocument and adds PDFDataRangeTransport. 2015-01-05 21:45:01 -06:00
Jonas Jenwald
42a00394b0 Remove unused anchor links placed before every page
In old versions of the viewer, anchor links were used to be able to scroll a page into view. Since we for quite some time have had a `scrollIntoView` function which handles this, the anchor links are no longer necessary and I believe that they can be removed. Doing so will reduce the total number of DOM elements in the viewer.

For most documents this patch will probably not make much of a difference performance wise, but for very long (1000+ pages) documents this could help performance especially on lower powered hardware.
2015-01-05 20:42:56 +01:00
Brendan Dahl
e93cf5ca97 Merge pull request #5552 from yurydelendik/pdfpageview
Creates/refactors PDFPageView class
2015-01-05 11:26:36 -08:00
fkaelberer
32c32c18e3 Better thumbnail image scaling 2015-01-02 15:40:30 +01:00
fkaelberer
1d31018c7d Make thumbnail CSS size independent of data-loaded tag 2014-12-30 15:07:20 +01:00
fkaelberer
2bb981a835 Ensure constant 7px thumbnail border width 2014-12-30 15:07:20 +01:00
Jonas Jenwald
86edb8687d Fix the placement of arrows in the zoom box
Now that [bug 649849](https://bugzilla.mozilla.org/show_bug.cgi?id=649849) has been fixed, adding support for `-moz-appearance: none`, the arrow is now too close to the text in the zoom box. This is currently only an issue in Nightly, but assuming the patch doesn't get backed out, this will soon affect all versions of Firefox.

The only simple solution I could find seems to be removing `*-appearance: none` rules from the CSS. I haven't been able to find any easier solutions that still looks the same with/without bug 649849.
2014-12-30 11:37:21 +01:00
Jonas Jenwald
5aad040735 Fix handling of "Fit" zoom values in setHash (issue 5581) 2014-12-27 12:54:29 +01:00
Tim van der Meij
c67ad28673 Remove unused annotation highlight div
This is now done using CSS. For annotation-heavy documents this change makes the DOM much lighter.
2014-12-21 17:38:22 +01:00
Yury Delendik
513a3d8c91 Replaces text selection example 2014-12-20 23:41:34 -06:00
Yury Delendik
2565e627a3 Refactors draw method in PDFPageView; makes optional some PDFPageViewOptions options 2014-12-20 23:41:34 -06:00
Yury Delendik
2ac7ac4678 Removes lastScrollSource and isViewerInPresentationMode from TextLayerBuilderOptions 2014-12-20 11:14:13 -06:00
Yury Delendik
b930228788 Refactors Cache into PDFPageViewBuffer 2014-12-19 16:54:32 -06:00
Yury Delendik
22c62685b0 Removes Stats dependency from PDFPageView. 2014-12-19 13:07:28 -06:00