3 Copyright(c)2008 Internet Archive. Software license AGPL version 3.
5 This file is part of GnuBook.
7 GnuBook is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Affero General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
12 GnuBook is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Affero General Public License for more details.
17 You should have received a copy of the GNU Affero General Public License
18 along with GnuBook. If not, see <http://www.gnu.org/licenses/>.
20 GnuBookPrint.php exists to get around the same-origin policy that prevents
21 us from calling print() on an iframe that comes from a cluster datanode.
24 $id = $_REQUEST['id'];
25 $server = $_REQUEST['server'];
26 $zip = $_REQUEST['zip'];
27 $index = $_REQUEST['index'];
28 $format = $_REQUEST['format'];
29 //$imgAspect = $_REQUEST['aspect'];
30 $width = $_REQUEST['width'];
31 $height = $_REQUEST['height'];
32 $title = $_REQUEST['title'];
34 // $$$ escape the values
36 /* We assume that the print aspect ratio is somewhat close to US Letter in portrait orientation */
37 $paperAspect = 8.5/11;
38 $imgAspect = $width / $height;
40 // Returns (url, attrs)
41 function imageURL($paperAspect, $index, $format, $width, $height) {
42 global $server, $id, $zip;
45 $imgAspect = $width / $height;
47 if ('jp2' == $format) {
48 // Rotation is possible
49 if ($imgAspect > $paperAspect) {
51 $imgAspect = 1 / $imgAspect;
55 if ($imgAspect > $paperAspect) {
56 // wider than paper, fit width
57 $htmlAttrs = "width='95%'";
59 // taller than paper, fit height
60 $htmlAttrs = "height='95%'";
63 $file = sprintf("%s_%s/%s_%04d.%s", $id, $format, $id, $index, $format);
66 'id' => $id, // global
70 'zip' => $zip, // global
75 return "<img src='http://{$server}/GnuBook/GnuBookImages.php?" . http_build_query($queryParams) . "' " . $htmlAttrs . " />";
79 echo '<link rel="stylesheet" type="text/css" href="GnuBook.css" />';
80 echo "<style type='text/css'>";
81 echo " @media print { .noprint { font-size: 40pt; display: none; } }";
83 echo "<script type='text/javascript'>";
84 echo " function conditionalPrint() {";
85 echo " var doPrint = true; var agent = navigator.userAgent.toLowerCase();";
86 echo " if (agent.indexOf('safari') != -1) { doPrint = false; }";
87 echo " if (doPrint) { print(); }";
90 echo "<title>" . $title . "</title><body onload='print(); return false;'>";
91 echo "<p class='noprint' style='text-align: right'>";
92 echo "<button class='GBicon rollover print' title='Print' onclick='conditionalPrint(); return false;'></button> <a href='#' onclick='print(); return false;'>Print</a></p>";
93 echo "<p style='text-align:center;'>";
94 echo imageURL($paperAspect, $index, $format, $width, $height);
97 if (isset($_REQUEST['index2'])) {
98 $index2 = $_REQUEST['index2'];
99 $width2 = $_REQUEST['width2'];
100 $height2 = $_REQUST['height2'];
103 echo "<p style='text-align: center;'>";
104 echo imageURL($paperAspect, $index2, $format, $width2, $height2);
107 echo "</body></html>";