pdfjs_viewer-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +77 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/javascripts/pdfjs_viewer/application.js +16 -0
  6. data/app/assets/javascripts/pdfjs_viewer/pdfjs/compatibility.js +574 -0
  7. data/app/assets/javascripts/pdfjs_viewer/pdfjs/l10n.js +1004 -0
  8. data/app/assets/javascripts/pdfjs_viewer/pdfjs/pdf.combined.js +44784 -0
  9. data/app/assets/javascripts/pdfjs_viewer/viewer.js +6883 -0
  10. data/app/assets/stylesheets/pdfjs_viewer/application.css +17 -0
  11. data/app/assets/stylesheets/pdfjs_viewer/full.scss +7 -0
  12. data/app/assets/stylesheets/pdfjs_viewer/minimal.scss +31 -0
  13. data/app/assets/stylesheets/pdfjs_viewer/pdfjs/viewer.css +1990 -0
  14. data/app/controllers/pdfjs_viewer/application_controller.rb +4 -0
  15. data/app/controllers/pdfjs_viewer/viewer_controller.rb +11 -0
  16. data/app/views/pdfjs_viewer/viewer/_viewer.html.erb +406 -0
  17. data/app/views/pdfjs_viewer/viewer/full.html.erb +1 -0
  18. data/app/views/pdfjs_viewer/viewer/minimal.html.erb +1 -0
  19. data/config/routes.rb +4 -0
  20. data/lib/pdfjs_viewer-rails.rb +18 -0
  21. data/lib/pdfjs_viewer-rails/helpers.rb +9 -0
  22. data/lib/pdfjs_viewer-rails/version.rb +5 -0
  23. data/lib/tasks/pdfjs_viewer_tasks.rake +4 -0
  24. data/test/dummy/README.rdoc +28 -0
  25. data/test/dummy/Rakefile +6 -0
  26. data/test/dummy/app/assets/javascripts/application.js +13 -0
  27. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  28. data/test/dummy/app/controllers/application_controller.rb +5 -0
  29. data/test/dummy/app/controllers/sample_controller.rb +8 -0
  30. data/test/dummy/app/helpers/application_helper.rb +2 -0
  31. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  32. data/test/dummy/app/views/sample/helper.html.erb +1 -0
  33. data/test/dummy/app/views/sample/show.html.erb +10 -0
  34. data/test/dummy/bin/bundle +3 -0
  35. data/test/dummy/bin/rails +4 -0
  36. data/test/dummy/bin/rake +4 -0
  37. data/test/dummy/bin/setup +29 -0
  38. data/test/dummy/config.ru +4 -0
  39. data/test/dummy/config/application.rb +37 -0
  40. data/test/dummy/config/boot.rb +5 -0
  41. data/test/dummy/config/database.yml +25 -0
  42. data/test/dummy/config/environment.rb +5 -0
  43. data/test/dummy/config/environments/development.rb +41 -0
  44. data/test/dummy/config/environments/production.rb +79 -0
  45. data/test/dummy/config/environments/test.rb +42 -0
  46. data/test/dummy/config/initializers/assets.rb +11 -0
  47. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  48. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  49. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  50. data/test/dummy/config/initializers/inflections.rb +16 -0
  51. data/test/dummy/config/initializers/mime_types.rb +4 -0
  52. data/test/dummy/config/initializers/session_store.rb +3 -0
  53. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  54. data/test/dummy/config/locales/en.yml +23 -0
  55. data/test/dummy/config/routes.rb +5 -0
  56. data/test/dummy/config/secrets.yml +22 -0
  57. data/test/dummy/db/test.sqlite3 +0 -0
  58. data/test/dummy/log/development.log +2455 -0
  59. data/test/dummy/log/test.log +1720 -0
  60. data/test/dummy/public/404.html +67 -0
  61. data/test/dummy/public/422.html +67 -0
  62. data/test/dummy/public/500.html +66 -0
  63. data/test/dummy/public/favicon.ico +0 -0
  64. data/test/dummy/public/sample.pdf +0 -0
  65. data/test/dummy/tmp/cache/assets/development/sass/f1b3e59e51ba5ccf8dc190375cfc40e8c38f8d16/full.scssc +0 -0
  66. data/test/dummy/tmp/cache/assets/development/sass/f1b3e59e51ba5ccf8dc190375cfc40e8c38f8d16/minimal.scssc +0 -0
  67. data/test/dummy/tmp/cache/assets/development/sprockets/04eae8bca898a65982980c3e50ad7fbd +0 -0
  68. data/test/dummy/tmp/cache/assets/development/sprockets/12f627b3c5f4d1ba551ec15071b146ed +0 -0
  69. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  70. data/test/dummy/tmp/cache/assets/development/sprockets/179e183f4ee9ccca7c8937e398f7e5ba +0 -0
  71. data/test/dummy/tmp/cache/assets/development/sprockets/1a6d33544c20ead8fcebe2042ac1525b +0 -0
  72. data/test/dummy/tmp/cache/assets/development/sprockets/20cfc4824e896a020f7386bd98c340ed +0 -0
  73. data/test/dummy/tmp/cache/assets/development/sprockets/21b502c161a167bfdda0fb06fefe42b7 +0 -0
  74. data/test/dummy/tmp/cache/assets/development/sprockets/24f6c5595a9b6a95fa1a17757c55261c +0 -0
  75. data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  76. data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  77. data/test/dummy/tmp/cache/assets/development/sprockets/395495688f5310d0645ec57873b2759e +0 -0
  78. data/test/dummy/tmp/cache/assets/development/sprockets/41a66f55761db630a20526b0b91e0343 +0 -0
  79. data/test/dummy/tmp/cache/assets/development/sprockets/4509000351818b96fa2e5239cc0e089b +0 -0
  80. data/test/dummy/tmp/cache/assets/development/sprockets/595a531e01ee23e6221c62d6d311aba1 +0 -0
  81. data/test/dummy/tmp/cache/assets/development/sprockets/597414ce2d02f11df6b8f2533b18b142 +0 -0
  82. data/test/dummy/tmp/cache/assets/development/sprockets/6384899a9cb6e830fa5869ffd9de6544 +0 -0
  83. data/test/dummy/tmp/cache/assets/development/sprockets/730fa2b9535ffcaec1cb98f2daa2a15a +0 -0
  84. data/test/dummy/tmp/cache/assets/development/sprockets/7e62f2ade8de8c8d58ca24ea150a4b62 +0 -0
  85. data/test/dummy/tmp/cache/assets/development/sprockets/81bfd70f6ddb31a47b5fd2283f02068d +0 -0
  86. data/test/dummy/tmp/cache/assets/development/sprockets/87ba41d384f696d9f33bcbb6d81cbf38 +0 -0
  87. data/test/dummy/tmp/cache/assets/development/sprockets/940983b263c09cef8a392334a42dc2b7 +0 -0
  88. data/test/dummy/tmp/cache/assets/development/sprockets/9439817fb117375f337c0ad9a46b1f76 +0 -0
  89. data/test/dummy/tmp/cache/assets/development/sprockets/a4b60d7ffa74f207fff9106821cd1759 +0 -0
  90. data/test/dummy/tmp/cache/assets/development/sprockets/a7f3405fc7c670abe82e4e41c64b5a33 +0 -0
  91. data/test/dummy/tmp/cache/assets/development/sprockets/a850909a3c37a59780d49c690374cf65 +0 -0
  92. data/test/dummy/tmp/cache/assets/development/sprockets/ab7f07b8312f30b275efc7203f10ccda +0 -0
  93. data/test/dummy/tmp/cache/assets/development/sprockets/b134e335e41a782ac45a6f0441e5d0ee +0 -0
  94. data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  95. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  96. data/test/dummy/tmp/cache/assets/development/sprockets/f16770b5fd41beb962f620a6f29110f1 +0 -0
  97. data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  98. data/test/dummy/tmp/cache/assets/development/sprockets/fb9ab06a0b93b2a7be41b5ee91378ea2 +0 -0
  99. data/test/dummy/tmp/cache/assets/development/sprockets/ffcc4b97c4cc77c7660fc560d5b9c86d +0 -0
  100. data/test/dummy/tmp/cache/assets/test/sass/f1b3e59e51ba5ccf8dc190375cfc40e8c38f8d16/full.scssc +0 -0
  101. data/test/dummy/tmp/cache/assets/test/sass/f1b3e59e51ba5ccf8dc190375cfc40e8c38f8d16/minimal.scssc +0 -0
  102. data/test/dummy/tmp/cache/assets/test/sprockets/04eae8bca898a65982980c3e50ad7fbd +0 -0
  103. data/test/dummy/tmp/cache/assets/test/sprockets/12f627b3c5f4d1ba551ec15071b146ed +0 -0
  104. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  105. data/test/dummy/tmp/cache/assets/test/sprockets/1a6d33544c20ead8fcebe2042ac1525b +0 -0
  106. data/test/dummy/tmp/cache/assets/test/sprockets/21b502c161a167bfdda0fb06fefe42b7 +0 -0
  107. data/test/dummy/tmp/cache/assets/test/sprockets/24f6c5595a9b6a95fa1a17757c55261c +0 -0
  108. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  109. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  110. data/test/dummy/tmp/cache/assets/test/sprockets/395495688f5310d0645ec57873b2759e +0 -0
  111. data/test/dummy/tmp/cache/assets/test/sprockets/4509000351818b96fa2e5239cc0e089b +0 -0
  112. data/test/dummy/tmp/cache/assets/test/sprockets/595a531e01ee23e6221c62d6d311aba1 +0 -0
  113. data/test/dummy/tmp/cache/assets/test/sprockets/597414ce2d02f11df6b8f2533b18b142 +0 -0
  114. data/test/dummy/tmp/cache/assets/test/sprockets/730fa2b9535ffcaec1cb98f2daa2a15a +0 -0
  115. data/test/dummy/tmp/cache/assets/test/sprockets/7e62f2ade8de8c8d58ca24ea150a4b62 +0 -0
  116. data/test/dummy/tmp/cache/assets/test/sprockets/81bfd70f6ddb31a47b5fd2283f02068d +0 -0
  117. data/test/dummy/tmp/cache/assets/test/sprockets/940983b263c09cef8a392334a42dc2b7 +0 -0
  118. data/test/dummy/tmp/cache/assets/test/sprockets/9439817fb117375f337c0ad9a46b1f76 +0 -0
  119. data/test/dummy/tmp/cache/assets/test/sprockets/a4b60d7ffa74f207fff9106821cd1759 +0 -0
  120. data/test/dummy/tmp/cache/assets/test/sprockets/a7f3405fc7c670abe82e4e41c64b5a33 +0 -0
  121. data/test/dummy/tmp/cache/assets/test/sprockets/a850909a3c37a59780d49c690374cf65 +0 -0
  122. data/test/dummy/tmp/cache/assets/test/sprockets/b134e335e41a782ac45a6f0441e5d0ee +0 -0
  123. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  124. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  125. data/test/dummy/tmp/cache/assets/test/sprockets/f16770b5fd41beb962f620a6f29110f1 +0 -0
  126. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  127. data/test/dummy/tmp/cache/assets/test/sprockets/ffcc4b97c4cc77c7660fc560d5b9c86d +0 -0
  128. data/test/integration/viewer_test.rb +64 -0
  129. data/test/sandbox/full_viewer.png +0 -0
  130. data/test/sandbox/helper.png +0 -0
  131. data/test/sandbox/minimal_viewer.png +0 -0
  132. data/test/test_helper.rb +34 -0
  133. metadata +327 -0
@@ -0,0 +1,4 @@
1
+ module PdfjsViewer
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,11 @@
1
+ module PdfjsViewer
2
+ class ViewerController < ApplicationController
3
+ layout false
4
+
5
+ def full
6
+ end
7
+
8
+ def minimal
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,406 @@
1
+ <% title = local_assigns[:title] || "PDF.js viewer" %>
2
+
3
+ <!DOCTYPE html>
4
+ <!--
5
+ Copyright 2012 Mozilla Foundation
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+
19
+ Adobe CMap resources are covered by their own copyright and license:
20
+ http://sourceforge.net/adobe/cmap/wiki/License/
21
+ -->
22
+ <html dir="ltr" mozdisallowselectionprint moznomarginboxes>
23
+ <head>
24
+ <meta charset="utf-8">
25
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
26
+ <meta name="google" content="notranslate">
27
+ <title><%= title %></title>
28
+
29
+ <%= stylesheet_link_tag "pdfjs_viewer/application" %>
30
+
31
+ <!-- This snippet is used in production (included from viewer.html) -->
32
+ <link rel="resource" type="application/l10n" href="/pdfjs/web/locale/locale.properties"/>
33
+
34
+ <% if local_assigns[:pdf_url] %>
35
+ <script type="text/javascript">
36
+ window.resourceURL = "<%= pdf_url %>";
37
+ </script>
38
+ <% end %>
39
+ <%= javascript_include_tag "pdfjs_viewer/application" %>
40
+ </head>
41
+
42
+ <body tabindex="1" id="pdfjs_viewer-<%= style %>">
43
+ <div id="outerContainer" class="loadingInProgress">
44
+
45
+ <div id="sidebarContainer">
46
+ <div id="toolbarSidebar">
47
+ <div class="splitToolbarButton toggled">
48
+ <button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs">
49
+ <span data-l10n-id="thumbs_label">Thumbnails</span>
50
+ </button>
51
+ <button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3" data-l10n-id="outline">
52
+ <span data-l10n-id="outline_label">Document Outline</span>
53
+ </button>
54
+ <button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4" data-l10n-id="attachments">
55
+ <span data-l10n-id="attachments_label">Attachments</span>
56
+ </button>
57
+ </div>
58
+ </div>
59
+ <div id="sidebarContent">
60
+ <div id="thumbnailView">
61
+ </div>
62
+ <div id="outlineView" class="hidden">
63
+ </div>
64
+ <div id="attachmentsView" class="hidden">
65
+ </div>
66
+ </div>
67
+ </div> <!-- sidebarContainer -->
68
+
69
+ <div id="mainContainer">
70
+ <div class="findbar hidden doorHanger hiddenSmallView" id="findbar">
71
+ <label for="findInput" class="toolbarLabel" data-l10n-id="find_label">Find:</label>
72
+ <input id="findInput" class="toolbarField" tabindex="91">
73
+ <div class="splitToolbarButton">
74
+ <button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="92" data-l10n-id="find_previous">
75
+ <span data-l10n-id="find_previous_label">Previous</span>
76
+ </button>
77
+ <div class="splitToolbarButtonSeparator"></div>
78
+ <button class="toolbarButton findNext" title="" id="findNext" tabindex="93" data-l10n-id="find_next">
79
+ <span data-l10n-id="find_next_label">Next</span>
80
+ </button>
81
+ </div>
82
+ <input type="checkbox" id="findHighlightAll" class="toolbarField">
83
+ <label for="findHighlightAll" class="toolbarLabel" tabindex="94" data-l10n-id="find_highlight">Highlight all</label>
84
+ <input type="checkbox" id="findMatchCase" class="toolbarField">
85
+ <label for="findMatchCase" class="toolbarLabel" tabindex="95" data-l10n-id="find_match_case_label">Match case</label>
86
+ <span id="findMsg" class="toolbarLabel"></span>
87
+ </div> <!-- findbar -->
88
+
89
+ <div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
90
+ <div id="secondaryToolbarButtonContainer">
91
+ <button id="secondaryPresentationMode" class="secondaryToolbarButton presentationMode visibleLargeView" title="Switch to Presentation Mode" tabindex="51" data-l10n-id="presentation_mode">
92
+ <span data-l10n-id="presentation_mode_label">Presentation Mode</span>
93
+ </button>
94
+
95
+ <button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file">
96
+ <span data-l10n-id="open_file_label">Open</span>
97
+ </button>
98
+
99
+ <button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="53" data-l10n-id="print">
100
+ <span data-l10n-id="print_label">Print</span>
101
+ </button>
102
+
103
+ <button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="54" data-l10n-id="download">
104
+ <span data-l10n-id="download_label">Download</span>
105
+ </button>
106
+
107
+ <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
108
+ <span data-l10n-id="bookmark_label">Current View</span>
109
+ </a>
110
+
111
+ <div class="horizontalToolbarSeparator visibleLargeView"></div>
112
+
113
+ <button id="firstPage" class="secondaryToolbarButton firstPage" title="Go to First Page" tabindex="56" data-l10n-id="first_page">
114
+ <span data-l10n-id="first_page_label">Go to First Page</span>
115
+ </button>
116
+ <button id="lastPage" class="secondaryToolbarButton lastPage" title="Go to Last Page" tabindex="57" data-l10n-id="last_page">
117
+ <span data-l10n-id="last_page_label">Go to Last Page</span>
118
+ </button>
119
+
120
+ <div class="horizontalToolbarSeparator"></div>
121
+
122
+ <button id="pageRotateCw" class="secondaryToolbarButton rotateCw" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw">
123
+ <span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
124
+ </button>
125
+ <button id="pageRotateCcw" class="secondaryToolbarButton rotateCcw" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw">
126
+ <span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
127
+ </button>
128
+
129
+ <div class="horizontalToolbarSeparator"></div>
130
+
131
+ <button id="toggleHandTool" class="secondaryToolbarButton handTool" title="Enable hand tool" tabindex="60" data-l10n-id="hand_tool_enable">
132
+ <span data-l10n-id="hand_tool_enable_label">Enable hand tool</span>
133
+ </button>
134
+
135
+ <div class="horizontalToolbarSeparator"></div>
136
+
137
+ <button id="documentProperties" class="secondaryToolbarButton documentProperties" title="Document Properties…" tabindex="61" data-l10n-id="document_properties">
138
+ <span data-l10n-id="document_properties_label">Document Properties…</span>
139
+ </button>
140
+ </div>
141
+ </div> <!-- secondaryToolbar -->
142
+
143
+ <div class="toolbar">
144
+ <div id="toolbarContainer">
145
+ <div id="toolbarViewer">
146
+ <div id="toolbarViewerLeft">
147
+ <button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11" data-l10n-id="toggle_sidebar">
148
+ <span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
149
+ </button>
150
+ <div class="toolbarButtonSpacer"></div>
151
+ <button id="viewFind" class="toolbarButton group hiddenSmallView" title="Find in Document" tabindex="12" data-l10n-id="findbar">
152
+ <span data-l10n-id="findbar_label">Find</span>
153
+ </button>
154
+ <div class="splitToolbarButton">
155
+ <button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="13" data-l10n-id="previous">
156
+ <span data-l10n-id="previous_label">Previous</span>
157
+ </button>
158
+ <div class="splitToolbarButtonSeparator"></div>
159
+ <button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="14" data-l10n-id="next">
160
+ <span data-l10n-id="next_label">Next</span>
161
+ </button>
162
+ </div>
163
+ <label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label>
164
+ <input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="15">
165
+ <span id="numPages" class="toolbarLabel"></span>
166
+ </div>
167
+ <div id="toolbarViewerRight">
168
+ <button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView" title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode">
169
+ <span data-l10n-id="presentation_mode_label">Presentation Mode</span>
170
+ </button>
171
+
172
+ <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
173
+ <span data-l10n-id="open_file_label">Open</span>
174
+ </button>
175
+
176
+ <button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print">
177
+ <span data-l10n-id="print_label">Print</span>
178
+ </button>
179
+
180
+ <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download">
181
+ <span data-l10n-id="download_label">Download</span>
182
+ </button>
183
+ <!-- <div class="toolbarButtonSpacer"></div> -->
184
+ <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
185
+ <span data-l10n-id="bookmark_label">Current View</span>
186
+ </a>
187
+
188
+ <div class="verticalToolbarSeparator hiddenSmallView"></div>
189
+
190
+ <button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="36" data-l10n-id="tools">
191
+ <span data-l10n-id="tools_label">Tools</span>
192
+ </button>
193
+ </div>
194
+ <div class="outerCenter">
195
+ <div class="innerCenter" id="toolbarViewerMiddle">
196
+ <div class="splitToolbarButton">
197
+ <button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out">
198
+ <span data-l10n-id="zoom_out_label">Zoom Out</span>
199
+ </button>
200
+ <div class="splitToolbarButtonSeparator"></div>
201
+ <button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22" data-l10n-id="zoom_in">
202
+ <span data-l10n-id="zoom_in_label">Zoom In</span>
203
+ </button>
204
+ </div>
205
+ <span id="scaleSelectContainer" class="dropdownToolbarButton">
206
+ <select id="scaleSelect" title="Zoom" tabindex="23" data-l10n-id="zoom">
207
+ <option id="pageAutoOption" title="" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option>
208
+ <option id="pageActualOption" title="" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
209
+ <option id="pageFitOption" title="" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option>
210
+ <option id="pageWidthOption" title="" value="page-width" data-l10n-id="page_scale_width">Full Width</option>
211
+ <option id="customScaleOption" title="" value="custom"></option>
212
+ <option title="" value="0.5">50%</option>
213
+ <option title="" value="0.75">75%</option>
214
+ <option title="" value="1">100%</option>
215
+ <option title="" value="1.25">125%</option>
216
+ <option title="" value="1.5">150%</option>
217
+ <option title="" value="2">200%</option>
218
+ <option title="" value="3">300%</option>
219
+ <option title="" value="4">400%</option>
220
+ </select>
221
+ </span>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ <div id="loadingBar">
226
+ <div class="progress">
227
+ <div class="glimmer">
228
+ </div>
229
+ </div>
230
+ </div>
231
+ </div>
232
+ </div>
233
+
234
+ <menu type="context" id="viewerContextMenu">
235
+ <menuitem id="contextFirstPage" label="First Page"
236
+ data-l10n-id="first_page"></menuitem>
237
+ <menuitem id="contextLastPage" label="Last Page"
238
+ data-l10n-id="last_page"></menuitem>
239
+ <menuitem id="contextPageRotateCw" label="Rotate Clockwise"
240
+ data-l10n-id="page_rotate_cw"></menuitem>
241
+ <menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise"
242
+ data-l10n-id="page_rotate_ccw"></menuitem>
243
+ </menu>
244
+
245
+ <div id="viewerContainer" tabindex="0">
246
+ <div id="viewer" class="pdfViewer"></div>
247
+ </div>
248
+
249
+ <div id="errorWrapper" hidden='true'>
250
+ <div id="errorMessageLeft">
251
+ <span id="errorMessage"></span>
252
+ <button id="errorShowMore" data-l10n-id="error_more_info">
253
+ More Information
254
+ </button>
255
+ <button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'>
256
+ Less Information
257
+ </button>
258
+ </div>
259
+ <div id="errorMessageRight">
260
+ <button id="errorClose" data-l10n-id="error_close">
261
+ Close
262
+ </button>
263
+ </div>
264
+ <div class="clearBoth"></div>
265
+ <textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
266
+ </div>
267
+ </div> <!-- mainContainer -->
268
+
269
+ <div id="overlayContainer" class="hidden">
270
+ <div id="passwordOverlay" class="container hidden">
271
+ <div class="dialog">
272
+ <div class="row">
273
+ <p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p>
274
+ </div>
275
+ <div class="row">
276
+ <input type="password" id="password" class="toolbarField" />
277
+ </div>
278
+ <div class="buttonRow">
279
+ <button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span></button>
280
+ <button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span></button>
281
+ </div>
282
+ </div>
283
+ </div>
284
+ <div id="documentPropertiesOverlay" class="container hidden">
285
+ <div class="dialog">
286
+ <div class="row">
287
+ <span data-l10n-id="document_properties_file_name">File name:</span> <p id="fileNameField">-</p>
288
+ </div>
289
+ <div class="row">
290
+ <span data-l10n-id="document_properties_file_size">File size:</span> <p id="fileSizeField">-</p>
291
+ </div>
292
+ <div class="separator"></div>
293
+ <div class="row">
294
+ <span data-l10n-id="document_properties_title">Title:</span> <p id="titleField">-</p>
295
+ </div>
296
+ <div class="row">
297
+ <span data-l10n-id="document_properties_author">Author:</span> <p id="authorField">-</p>
298
+ </div>
299
+ <div class="row">
300
+ <span data-l10n-id="document_properties_subject">Subject:</span> <p id="subjectField">-</p>
301
+ </div>
302
+ <div class="row">
303
+ <span data-l10n-id="document_properties_keywords">Keywords:</span> <p id="keywordsField">-</p>
304
+ </div>
305
+ <div class="row">
306
+ <span data-l10n-id="document_properties_creation_date">Creation Date:</span> <p id="creationDateField">-</p>
307
+ </div>
308
+ <div class="row">
309
+ <span data-l10n-id="document_properties_modification_date">Modification Date:</span> <p id="modificationDateField">-</p>
310
+ </div>
311
+ <div class="row">
312
+ <span data-l10n-id="document_properties_creator">Creator:</span> <p id="creatorField">-</p>
313
+ </div>
314
+ <div class="separator"></div>
315
+ <div class="row">
316
+ <span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p>
317
+ </div>
318
+ <div class="row">
319
+ <span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p>
320
+ </div>
321
+ <div class="row">
322
+ <span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p>
323
+ </div>
324
+ <div class="buttonRow">
325
+ <button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button>
326
+ </div>
327
+ </div>
328
+ </div>
329
+ </div> <!-- overlayContainer -->
330
+
331
+ </div> <!-- outerContainer -->
332
+ <div id="printContainer"></div>
333
+ <div id="mozPrintCallback-shim" hidden>
334
+ <style scoped>
335
+ #mozPrintCallback-shim {
336
+ position: fixed;
337
+ top: 0;
338
+ left: 0;
339
+ height: 100%;
340
+ width: 100%;
341
+ z-index: 9999999;
342
+
343
+ display: block;
344
+ text-align: center;
345
+ background-color: rgba(0, 0, 0, 0.5);
346
+ }
347
+ #mozPrintCallback-shim[hidden] {
348
+ display: none;
349
+ }
350
+ @media print {
351
+ #mozPrintCallback-shim {
352
+ display: none;
353
+ }
354
+ }
355
+
356
+ #mozPrintCallback-shim .mozPrintCallback-dialog-box {
357
+ display: inline-block;
358
+ margin: -50px auto 0;
359
+ position: relative;
360
+ top: 45%;
361
+ left: 0;
362
+ min-width: 220px;
363
+ max-width: 400px;
364
+
365
+ padding: 9px;
366
+
367
+ border: 1px solid hsla(0, 0%, 0%, .5);
368
+ border-radius: 2px;
369
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
370
+
371
+ background-color: #474747;
372
+
373
+ color: hsl(0, 0%, 85%);
374
+ font-size: 16px;
375
+ line-height: 20px;
376
+ }
377
+ #mozPrintCallback-shim .progress-row {
378
+ clear: both;
379
+ padding: 1em 0;
380
+ }
381
+ #mozPrintCallback-shim progress {
382
+ width: 100%;
383
+ }
384
+ #mozPrintCallback-shim .relative-progress {
385
+ clear: both;
386
+ float: right;
387
+ }
388
+ #mozPrintCallback-shim .progress-actions {
389
+ clear: both;
390
+ }
391
+ </style>
392
+ <div class="mozPrintCallback-dialog-box">
393
+ <!-- TODO: Localise the following strings -->
394
+ Preparing document for printing...
395
+ <div class="progress-row">
396
+ <progress value="0" max="100"></progress>
397
+ <span class="relative-progress">0%</span>
398
+ </div>
399
+ <div class="progress-actions">
400
+ <input type="button" value="Cancel" class="mozPrintCallback-cancel">
401
+ </div>
402
+ </div>
403
+ </div>
404
+
405
+ </body>
406
+ </html>
@@ -0,0 +1 @@
1
+ <%= render "viewer", style: "full" %>
@@ -0,0 +1 @@
1
+ <%= render "viewer", style: "minimal" %>
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ PdfjsViewer::Rails::Engine.routes.draw do
2
+ get "minimal" => "viewer#minimal", as: :minimal
3
+ get "full" => "viewer#full", as: :full
4
+ end
@@ -0,0 +1,18 @@
1
+ require "pdfjs_viewer-rails/version"
2
+ require "pdfjs_viewer-rails/helpers"
3
+
4
+ module PdfjsViewer
5
+ module Rails
6
+ class Engine < ::Rails::Engine
7
+ isolate_namespace PdfjsViewer
8
+
9
+ initializer 'pdfjs_viewer-rails.load_static_assets' do |app|
10
+ app.middleware.use ::ActionDispatch::Static, "#{root}/public"
11
+ end
12
+
13
+ initializer "pdfjs_viewer-rails.view_helpers" do
14
+ ActionView::Base.send :include, ViewHelpers
15
+ end
16
+ end
17
+ end
18
+ end