From e7f4760993202b33e0ffe3c88edd238bac858365 Mon Sep 17 00:00:00 2001 From: frankdelange Date: Sat, 25 Mar 2017 19:39:03 +0100 Subject: [PATCH] files_reader: more changes towards full PDF functionality --- files_opds/lib/isbndb.php | 6 +- files_reader/CHANGELOG.md | 10 +- files_reader/TODO | 6 + files_reader/js/ready.js | 77 ++++---- files_reader/templates/.pdfreader.php.swp | Bin 40960 -> 0 bytes files_reader/templates/cbreader.php | 2 +- files_reader/templates/pdfreader.php | 10 ++ files_reader/vendor/icomoon/fonts/icomoon.eot | Bin 14460 -> 15356 bytes files_reader/vendor/icomoon/fonts/icomoon.svg | 6 + files_reader/vendor/icomoon/fonts/icomoon.ttf | Bin 14296 -> 15192 bytes .../vendor/icomoon/fonts/icomoon.woff | Bin 14372 -> 15268 bytes files_reader/vendor/icomoon/style.css | 30 +++- files_reader/vendor/pdfjs/.pdf.reader.js.swp | Bin 69632 -> 0 bytes .../controllers/.controls_controller.js.swp | Bin 24576 -> 0 bytes .../controllers/.reader_controller.js.swp | Bin 20480 -> 0 bytes .../pdfjs/controllers/controls_controller.js | 56 +++++- .../pdfjs/controllers/reader_controller.js | 16 +- files_reader/vendor/pdfjs/css/.main.css.swp | Bin 20480 -> 0 bytes files_reader/vendor/pdfjs/css/main.css | 51 ++++-- files_reader/vendor/pdfjs/pdf.reader.js | 165 ++++++++++++------ 20 files changed, 308 insertions(+), 127 deletions(-) delete mode 100644 files_reader/templates/.pdfreader.php.swp delete mode 100644 files_reader/vendor/pdfjs/.pdf.reader.js.swp delete mode 100644 files_reader/vendor/pdfjs/controllers/.controls_controller.js.swp delete mode 100644 files_reader/vendor/pdfjs/controllers/.reader_controller.js.swp delete mode 100644 files_reader/vendor/pdfjs/css/.main.css.swp diff --git a/files_opds/lib/isbndb.php b/files_opds/lib/isbndb.php index 9e4d2f3..75c7100 100644 --- a/files_opds/lib/isbndb.php +++ b/files_opds/lib/isbndb.php @@ -62,13 +62,13 @@ class Isbndb static function parse($data,&$meta) { /* did the call succeed? If not, schedule a rescan */ if (Isbn::REQUEST_LIMIT_EXCEEDED == $data) { - $meta['rescan'] = date("Y-m-d\TH:i:sP", time() + Isbn::RESCAN_LIMIT_EXCEEDED); + $meta['rescan'] = date("Y-m-d H:i:s", time() + Isbn::RESCAN_LIMIT_EXCEEDED); return false; } elseif (Isbn::NOT_FOUND == $data) { - $meta['rescan'] = date("Y-m-d\TH:i:sP", time() + Isbn::RESCAN_NOT_FOUND); + $meta['rescan'] = date("Y-m-d H:i:s", time() + Isbn::RESCAN_NOT_FOUND); return false; } elseif (Isbn::ERROR == $data) { - $meta['rescan'] = date("Y-m-d\TH:i:sP", time() + Isbn::RESCAN_ERROR); + $meta['rescan'] = date("Y-m-d H:i:s", time() + Isbn::RESCAN_ERROR); return false; } diff --git a/files_reader/CHANGELOG.md b/files_reader/CHANGELOG.md index 0494d71..3a2d9fe 100644 --- a/files_reader/CHANGELOG.md +++ b/files_reader/CHANGELOG.md @@ -1,10 +1,18 @@ ## UNRELEASED ### Added - Reader now supports PDF - - PDF should work more or less like EPUB, ie. double page spreads are supported + - PDF double page spreads are supported - optional double-buffering for faster rendering, can be disabled for low-memory devices - optional selectable text layer, can be disabled for low-memory devices +### Changed + - #38: moved declarations in js/ready.js one level lower to work around a bug in the Palemoon browser + - new version bitjs archive tools, fixes compatibility problems with some CBR files + +## 1.0.1 - 2017-03-19 +### Fixed + - #35: Internal Server Error: fixed path resolution so app works when NC/OC hosted in subdirectory + ## 1.0.0 - 2017-03-15 ### Added - Reader now supports CBR/CBZ ('comics') files diff --git a/files_reader/TODO b/files_reader/TODO index f60bd3e..b60fa73 100644 --- a/files_reader/TODO +++ b/files_reader/TODO @@ -3,3 +3,9 @@ - bookmarks - annotations - settings + + - rtl and ltr + - switch spread-page-width by key combo + + - test canvas size restriction + - toggle zoom via keyboard diff --git a/files_reader/js/ready.js b/files_reader/js/ready.js index 79099cf..7237189 100644 --- a/files_reader/js/ready.js +++ b/files_reader/js/ready.js @@ -100,51 +100,52 @@ document.onreadystatechange = function () { default: console.log(type + ' is not supported by Reader'); } - - // why is there no standard library function for this? - function getUrlParameter (param) { - var pattern = new RegExp('[?&]'+param+'((=([^&]*))|(?=(&|$)))','i'); - var m = window.location.search.match(pattern); - return m && ( typeof(m[3])==='undefined' ? '' : m[3] ); - } + } - // start epub.js renderer - function renderEpub(file, options) { + // why is there no standard library function for this? + function getUrlParameter (param) { + var pattern = new RegExp('[?&]'+param+'((=([^&]*))|(?=(&|$)))','i'); + var m = window.location.search.match(pattern); + return m && ( typeof(m[3])==='undefined' ? '' : m[3] ); + } - // some parameters... - EPUBJS.filePath = "vendor/epubjs/"; - EPUBJS.cssPath = "vendor/epubjs/css/"; - EPUBJS.basePath = $('.session').data('basepath'); + // start epub.js renderer + function renderEpub(file, options) { - /* device-specific boilerplate */ + // some parameters... + EPUBJS.filePath = "vendor/epubjs/"; + EPUBJS.cssPath = "vendor/epubjs/css/"; + EPUBJS.basePath = $('.session').data('basepath'); + + /* device-specific boilerplate */ // IE < 11 - if (navigator.userAgent.indexOf("MSIE") != -1) { - EPUBJS.Hooks.register("beforeChapterDisplay").wgxpath = function(callback, renderer){ - wgxpath.install(renderer.render.window); - if(callback) - callback(); - }; - wgxpath.install(window); - } - - var reader = ePubReader(file, options); + if (navigator.userAgent.indexOf("MSIE") != -1) { + EPUBJS.Hooks.register("beforeChapterDisplay").wgxpath = function(callback, renderer){ + wgxpath.install(renderer.render.window); + if(callback) + callback(); + }; + wgxpath.install(window); } - // start cbr.js renderer - function renderCbr(file, options) { - CBRJS.filePath = "vendor/cbrjs/"; - - var reader = cbReader(file, options); - } - - // start pdf.js renderer - function renderPdf(file, options) { - PDFJS.filePath = "vendor/pdfjs/"; - PDFJS.workerSrc = options.session.basePath + 'vendor/pdfjs/lib/pdf.worker.js'; - - var reader = pdfReader(file, options); - } + var reader = ePubReader(file, options); } + + // start cbr.js renderer + function renderCbr(file, options) { + CBRJS.filePath = "vendor/cbrjs/"; + + var reader = cbReader(file, options); + } + + // start pdf.js renderer + function renderPdf(file, options) { + PDFJS.filePath = "vendor/pdfjs/"; + PDFJS.workerSrc = options.session.basePath + 'vendor/pdfjs/lib/pdf.worker.js'; + + var reader = pdfReader(file, options); + } + }; diff --git a/files_reader/templates/.pdfreader.php.swp b/files_reader/templates/.pdfreader.php.swp deleted file mode 100644 index 835812776f85e582633f0c29c7dc6c45946fe93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 diff --git a/files_reader/templates/cbreader.php b/files_reader/templates/cbreader.php index c081cbb..7d8b69d 100644 --- a/files_reader/templates/cbreader.php +++ b/files_reader/templates/cbreader.php @@ -43,7 +43,7 @@ - + diff --git a/files_reader/templates/pdfreader.php b/files_reader/templates/pdfreader.php index 52ff3ba..f211454 100644 --- a/files_reader/templates/pdfreader.php +++ b/files_reader/templates/pdfreader.php @@ -284,6 +284,16 @@ +
+
+
+
+
+
+ + + + diff --git a/files_reader/vendor/icomoon/fonts/icomoon.eot b/files_reader/vendor/icomoon/fonts/icomoon.eot index b900d5c0b8b42119ff0ee9745cd57f9922c569d9..c8e55bad5402b5b8eda5e34a47ed530f3c382b98 100644 GIT binary patch delta 1554 zcmai!e@qi+7{{OY?t0fBw6w+Edv4=kHWM#-DD_b~ei27m`Q5Lh-HOg0EtKv`M_u@VAQ!yn*#ogjsF(_7x0nsn|&=yI4#||Z@+5F^QZet<>gdJs@ zpa4o>1)BGHnIgA^aV$}p%8C%<@r5v|m|L*!Wjw9|HWJv?w`t>%U4dMjg>Y}GrFpnF zoQq87+`v_GetyxBjhp)B7dNNk;cz_F+>(md)x}dRx!}NwvhV_gC;4(^VWPmMV_>n2 zCbw7w#c+qF97SN)ybueEBw94d+0$g;DhmBusbImTf5EnH!KU9A+Mo5UbFriU2+Z3? zffwv%1<3iF&7AE8n^^{AV&)qE10s2{++EMwJpb=?u8}1*p$YtLHmmTH%)dW$!m&V(etQr1+@Ic!1M%@10sF2WZn%&fj_HYo+4J!>%L!V*DaKSKbcxJR1ea4-}H;lu^YsMc+%lejhh*Bjk(o4XufMPS{g0=mQl-8zCM3L{(x0)-C&Jd-?m<`UbD{FytbGvZO^lB zv7fWwvS$iTEV=5acYNTO7AwRK@woU0jnaNPPUoajDJa!TgVIGQv$PJcNPxreE#zgV NqYVdO;;X;}`5QfplIZ{d delta 696 zcmXw$T}YE*6vxl|xp&`_&F7KVckiUMB0{H@vk@g;m`K^jg$NCGbGj8yN3&cdC|-z! z1@fk5gg1qSv@VkD6Omn%)vz^|n2j>YkS-*|gi@r(qKk(=|NoEk9L_l#Z5u(py%=ED z(Z?6DzDP}?ucWQxGyps&udY7e4xV-8JOiL40Q$Di9SV}%1i(xZ6?{z>8du}L?hro( zkXP()aC>#}-G>1R35Fs+2~<&bFY%-aWcvfH;V9(i5bq*?#+q8{-N%lcDg)TJi}0m@ zI~;`0T!@oe(gd=a-GPRo3iUeic2dwCYzegjLkKt?Z*gFlb;V0vGWHNR44uG(3>0K3 zKd5|VI~`Q|X}j{0ZtfVgRoaf)N^FPZ3HgaUE=S}M*=t?4CanqUJL?N;t<_~!OBW@N zR43I+HVHC+i}PYkjEZMOzt|{xMRP`JhLFMGMf?HJ;3Q7qxA+x)gdgGv9>Ul072Jgb zxEh~8n`jYzMGI&ieMX;93VlTH5lW(as2|m!YP25}p+aOwc_>$zW^O6x*s`%V{G4v= zi)H6FDNz&g)fx}{1TDKYCM0K97XPb~?Qo=p{^frm&_tAW$KY6Iv7PEDhx0H3->D3$ zfU2T;s9|b>w$PRI03Bm!CYNbtCYeoEVoO;+dzp=KJSTFwTq)<_dbx3Kh2Ozf@LoR5 z_wrLJS#?s?t(s8HsFnp@a0-=zU$`oa3vpphEvt*wVf6!bO1-9$H07EbnuJ!Pb$PYd zv`@7uon7bE-Pg_PS$%=tqaW7K89atz!?fX>kvGc5gT@}?Ym;PZG~G3ArtL|qN?S6E s=27#i#cAoaL@f*H$I~a$XOV`istXOEQIx_4T!n9vy8?v9oX#lq2lt1=B>(^b diff --git a/files_reader/vendor/icomoon/fonts/icomoon.svg b/files_reader/vendor/icomoon/fonts/icomoon.svg index 381c46a..e743a03 100644 --- a/files_reader/vendor/icomoon/fonts/icomoon.svg +++ b/files_reader/vendor/icomoon/fonts/icomoon.svg @@ -7,6 +7,10 @@ + + + + @@ -44,6 +48,8 @@ + + diff --git a/files_reader/vendor/icomoon/fonts/icomoon.ttf b/files_reader/vendor/icomoon/fonts/icomoon.ttf index d1633eff5f74a3aca5ce247054327f3a702467e5..39042dce9feed981415486ba64e055a2ebe8f08f 100644 GIT binary patch delta 1553 zcmai!YfKbZ6vywKnVs1OJM1p*z2kOfa2FPck%hACBDh_ZHQMmO0>Tzl5CSS8JhowD zv_+N@WBt%HwnOY=sZIJY4H`nlCVeQO8$Xyfsm7=wwyCtCrcu+R#x_j_(lZO265FJc z+?+Y*-nswZ|J=!)?VmlAKo}upLBoherO)juDa&>U-B7s*qphR2J=U<#bRQusBg9-d z*gg=0x(y-r8bss4o+AfFJ1_nQ`7AOw%0p#Vxux7xzE(PvHpMCr$p_?4xkJvA*T}q#Tz6g9 zT~}N&SD&lL)$LjGPB$_sKo- z3%N^vCiCPc7x|HVM{bkzBuP3+E7?p!q>=HF<+QKZ?TIMD>^R$qa!?^! z55CKNOrA$%oNH9ZUlwM(S&=48COI-X?lIVW_JMNdF@wO7h=6FGJRgI3Gva;rr^ z40dSDPy}0+g;=yoqFI+*JcWm6K%rGq?=wn78-Pd&Mrx@-|R)Rwl zsF{tjFCz*5-y&2B=c}^%Q3`=Dt9veV7FMtoDyB{!W+4bZTv#DuAuo(8nDv``>q>le zeVctdE8XtOoxW6RAuI)y;>KFeX%ERBe#Ax%Q9e&$7L8SV;#;fZyEh3@p*Yf5TGALP zP8iQjrxxX~gK$yajja6%*#P3?2Q)Vq9{ikVcBybr6WJ1GiN+ts*^W(H|Q%A zH;)J5qfo)FOVekJ09;ZEz`(v~cf5LQd{33}*wmb@$Rj@}`25{{*`eQ&h0}r2jmHPB zW}=qwuW%n(uBRsv0|D~r>Y?@c-!x1>W&C`(A1B)2@|ed3xE2rL3H*>*$5b(`%t_`9 zbB~qbtWL8xI5QXI2DvK+-jHvoF~kgS7;f+)@8N@d4d2a=^3(iZf={RydW2zNRG2rG z8T*WvjenXpm^w{^rcu*5)12v%Su~fM_nHrx$IO?_KUh>tlV!v*mawEOzh-U8I-E6W zWvo@!HtUG>mS`3m#36B9oXs|7Z_6IG8ExBaaoel5bGFO2dArXZv!@(cj-8GV9oHQT zIj^mman?HDan6x4(nU^?KWHZ%qLXwgLoHPDc}4^=i#KfQ=MU; z06+shz<{InRDPjhoAL}%UX$I_>~{ywxw2mYP$B?*ugx6{5ZwsCOp?gAwO?pmjsJc? zcnToD#Mk2XYU8;_0g6Z(oIWBbql&$RO9=1u`MW|x3P|&==?oc9BBKDt^A12ZmX{HhIa=PhglBIgm&{ zS#mX1Acv`d{DX4HJLrz^O?!>~nEkN*kTfB^kjAAkX+-kcmTgH}!Zu@jV{5dzY%1}h z=nkIbZCc z!j;esBk-NFQiW6<)lUsm3$&T8p$F+0Lo<0y7ctP4j zadw5<#Z_@$F2oIRQ%XsBQrV}RP|hlsd5$mRYj_`jl^^Hh{F+Kqm8e3hC#tk+O)aV` z)wk6NjauXC&|KHN)TFfztylY4o6;$Cg*uOJSU0El=!f;w`fmo#AQ=uC`VH@lqOsNZ z(72JYC!;Q7$t0LYO{?ZI^ME;OUa%auOjuG#O~%%X2GJ-=V?D0Jceeg)5T-%9H3OOq L(G-c4-lzTouM)x) diff --git a/files_reader/vendor/icomoon/fonts/icomoon.woff b/files_reader/vendor/icomoon/fonts/icomoon.woff index 8cf9f65eb04cd05bcec9a10a5a28f516a138652b..d31ffc536be0817f902f574a1de592526cee4252 100644 GIT binary patch delta 1635 zcmai#e`phD7{}lD?sAvk&5!1N&v^E2u_A;jj%ha1{>87I`&!!(3Y~?VkY*N_V`V1Wk**ssdkadfS>wPzp1 z=HS8On!U5t@HBCtFA3co`#Xx$MS9YmV8tGN^X<)$`)x*>X6!{ zHmOj`mv{-e@4K(NuecNLUU#><%e_K;L9~h{`iS16cj+B^o8F{X=_UF(ouu#6(^RD= zXdm58U#1*+L>`g{%b#)Fjg^KA+OmMbAL^pm1;* zh;tc05P+O^9fOtwXduhW0|vaiDaRMuwTQr?WyM=GnEBL6JTwgq|AufbDUbuvEh(S@ zXo~1O?D#(g76pL<&j>NEy&s>;36K+HNr0ASX;Beoq47T;)QuJ1de-jy|7I5&S)A)K z2Q`mC;%t|>uCr5_tmE#PQyiK=Eo_{94TBy7b(VHAg%)f;-Yt?_T`-QcgQ@_4H1{F%&LR1C`HP4%419+ABKu#M{Ce4)(D z>#KJrH`OF}tQX=!d8}#enxKYedcUgS4qg3|}C8&5l~=DeB+gndUA-2G|5$hCLtCU z#4Xd1eKHftJ~T2akXR7C3|qrw*(i|=>4P7{gc7WC?d8Ca=RE)OKRi6=JY!vBAyZdv zWhEd0UalOVmZLK*U8F46^Nl^Hnu6XC07L))a!lroC--TqH;gq}gPq)846SYFTCipU zpwK0=p8Rn)(CqaCP*Q_E4jD}{?@$1XSi6Mt92rHN-V+FRMzA)4>m+32peVPkqY3-m zdpogdMW(jqL}kz$!G#?joM&&-3zF^LU^CXb@x^|bk!s~;s3VN;x#<5s3hyXtQ_>I@ z^aFSw1-*a;BJMg{8YYUQH$+Ii+<~>bX2e1LD^{k+jqVc{$cT1FqxJeor(^cKBB zkI+Ljg+|aYx{CTx5Y?k&a0@QOFK`Ji!q4y%%)pQEJrC#LJ$Mr~z@Yj7mIxI2L9XG_lL3-8+R;!&Gade&2VXmYW4&F1@z=FG>lA(;WVzZyy2@2b||g zb|;d`o!znLPCL<41UcQ~}jVJ)^d0fv%tf^c6b6 zunf->FcplC8DyrJHFg(U&HC90JIKCNh>GKie#MMpUa`utTp8!)0^BujnoDvUN>S-j zMwAbf8RdpbP*tgJt5Rx}+S9JSp?;#yXzUul=DsGarM1OcpEjyp(D`&x-K_4bp4E%` z1Ns5|YlC2DF-#b?vhuU)vQ~_|aniVMDl-k5;-)3@QS*#B4ORHr`rr_pgc+nmb!c>Z Vvcq5&$m5D97(b#h_N(*`@f+RM#`pjL diff --git a/files_reader/vendor/icomoon/style.css b/files_reader/vendor/icomoon/style.css index c2ad7e0..b8a3251 100644 --- a/files_reader/vendor/icomoon/style.css +++ b/files_reader/vendor/icomoon/style.css @@ -1,10 +1,10 @@ @font-face { font-family: 'icomoon'; - src: url('fonts/icomoon.eot?jhgf4g'); - src: url('fonts/icomoon.eot?jhgf4g#iefix') format('embedded-opentype'), - url('fonts/icomoon.ttf?jhgf4g') format('truetype'), - url('fonts/icomoon.woff?jhgf4g') format('woff'), - url('fonts/icomoon.svg?jhgf4g#icomoon') format('svg'); + src: url('fonts/icomoon.eot?gvtfq1'); + src: url('fonts/icomoon.eot?gvtfq1#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?gvtfq1') format('truetype'), + url('fonts/icomoon.woff?gvtfq1') format('woff'), + url('fonts/icomoon.svg?gvtfq1#icomoon') format('svg'); font-weight: normal; font-style: normal; } @@ -24,7 +24,7 @@ -moz-osx-font-smoothing: grayscale; /* slightly bigger icons */ - font-size: 1.2em; + font-size: 1.2em; } .icon-anchor:before { @@ -297,6 +297,24 @@ .icon-zoom_out_map:before { content: "\e56b"; } +.icon-rotate_0:before { + content: "\e039"; +} +.icon-rotate_90:before { + content: "\e03a"; +} +.icon-rotate_180:before { + content: "\e03b"; +} +.icon-rotate_270:before { + content: "\e03c"; +} +.icon-rotate_left:before { + content: "\e419"; +} +.icon-rotate_right:before { + content: "\e41a"; +} .icon-droplet:before { content: "\e90b"; } diff --git a/files_reader/vendor/pdfjs/.pdf.reader.js.swp b/files_reader/vendor/pdfjs/.pdf.reader.js.swp deleted file mode 100644 index bf2f21d7a1385e5bce7c218c66668cf3d711108f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 diff --git a/files_reader/vendor/pdfjs/controllers/.reader_controller.js.swp b/files_reader/vendor/pdfjs/controllers/.reader_controller.js.swp deleted file mode 100644 index ee76dc4626444466488f869b63b47f11f9abdb27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI2Uu+yl9mh8f(3%no%>xQZbh|lpXUDm98X*<8RtR=0xuhh-NopEZ?)rAlxAESN zy)$c*1_KX<7t~7SPkE?{C_Gdk0uP{~KwBY1s9LoJBwB<7^nrf~tpv0vNC;8Bzuno} z*^6^`jw&J4S?QzO-TBRLX1=>Se||UfW5=d%w{NVESvcNdS!Z_qa`yLIE?D>Pv#e(9 zMT>O5&oR$htj%SskD2AJc(E(uhRau@M#vL?x3{z;+-49mF&8t>XR*7&BA>_ZlHWWb z+y;+i%)^ky!p+j>id*#)qF;d~-6&ub$P`FqbN7wgti3nv8QbYxZ*RZ$s8Pl!U=%P4 z7zK<1MggOMQNSo*6nKLvAeXjUuc6IXfLX9b@h1F^faB_VD}MKab#;v&a~K7T0!9I& zfKk9GU=%P47zK<1MggOMQNSqhf1-frW8ME|%X;Q5s4)Kjrx?J`uCc7|f-it&@KNx7 zumimGcFTGa+z%GPB)AT21y_KVwprFMz-jO;a4!hJFnH~4mh}SoI*`BzcY+yk7~B9Z zT#fwTJK)pcD3}Hx0{g*r;7ahfw_4VDa1Q(wd>fnw%iuP!3%na_2iJnX4xx?UEcgj{ z7@PtU2yiF(7}yKm1O9cDW&IjF2EGK=!5a7km<4x$aqs~!1YW+GWgJHZ7!kLSSm!56{ZU>a1xKMWGTZp9f@)^+V8 z2d54eRS%kWZOL0;a}n>9;klWFp=iX6Mg4u>+OZwHfNaN4eJ1ePycbV)_5#&g zxU;c9*i|H$%J4cAl3QCZsMmZe%Fv{v;m>_{L(l49_dRYWGrxu&= zO#MLHix+!2&22W}HsX@?a_L18&%desSAE#|W#>1)KVhp^NiZpcXhGDYq#IsSCxXKD$sM?VeTdOetF5ZBOU}Kt4*W6|$|3+Iz;vx_Ul7f1(~^d*KS3 z#FG&<$HNe^!kjKMloRsCB9%b{MBx40e(V}GAb(A$0E|A}-iJB{g=-ln z$}=@hwD{`&v@%-D>>B)a^ic|wYnD3JnqBdO6?~>~xtZiWZzQ>)PH!qR)QU@6a!H3p zv%0;}^?=?;Cyb}%krFqCG#`2wiKKj*(0PXhUNp}ay6mpId$&E^v}KFg)KA!fuoHo= z(^kf#slaKv5~vu?DL(GO`2(?jZqqtC027Jw%umw*bA%AnlNdihe1bX-g&-N5-wy_&7tb@ zRsy!l;=@b?_h1e)VHdA3xuK?Y)d@CPm6@E(YI}e;JgO})QHyet_bdzYQrf8YQPJ3o+m)KLlTP#Ahw@d(1r7HqJ->8@ zGry@#F(Fh|#f_33rr0zmWwA2rT$ijani(tWi|&_l<I96$NT1v~hD3zLBl+snFrVP|o$s+r9l|goqr_*yxzXg>_y$7Won!5G2 z84M(8?|3-dhqkvJsC}0#Y3K#{90&g@0 zRKQ7#J2_fx&aub!P@P5VIXWCIPC_=?WwG#cv`7#cX_uN2Wz9k;xufh#Gog%yNpYo{ zP}E^Ma%?ImJMT_KOd_p?ice(8F_TFg zXwNK<-%uHAHbbCP3xv{5?a}GBSwJt$V-%gbA((|Q9E-;HB9KmI|r{>PKD&SO2Fum2yw`AKjL>;o0> zZ>-z@2!0Ii1FPUDaKP2zFIcCa0bc`aU>58L*Mt9Heg0?g6nF@H7Ayl7ybn~sHt;9Z z=QrR5@I3f3cmN0x1FG*nunUX;a~K7T0!9I&fKk9GU=%P47zJKm1!&!n9{M)O{2ms0 zn_D)}y#0T(H&U&AmJ^n+bn&A$?`Ugbvs<#)rm1YBp4lzgy)Co<21c`6ve$b>Q5D)^ Xp>4*?yO&Gt9v)=3r1T`aw9EejR_?3W diff --git a/files_reader/vendor/pdfjs/controllers/controls_controller.js b/files_reader/vendor/pdfjs/controllers/controls_controller.js index 5fbc4c1..1bfe9c4 100644 --- a/files_reader/vendor/pdfjs/controllers/controls_controller.js +++ b/files_reader/vendor/pdfjs/controllers/controls_controller.js @@ -18,6 +18,11 @@ PDFJS.reader.ControlsController = function(book) { $zoom_icon = $("#zoom_icon"), $zoom_options = $("#zoom_options"), $zoom_option = $(".zoom_option"), + $rotate_icon = $("#rotate_icon"), + $rotate_options = $("#rotate_options"), + $rotate_option = $(".rotate_option"), + $rotate_left = $("#rotate_left"), + $rotate_right = $("#rotate_right"), $page_num = $("#page_num"); if (reader.isMobile() === true) { @@ -117,15 +122,18 @@ PDFJS.reader.ControlsController = function(book) { */ /* custom select, supports icons in drop-down list */ + // zooooooooooooooom $zoom_icon.on("click", function () { var offset = $(this).offset(); console.log(offset); + $zoom_options.css("opacity", 0); + $zoom_options.toggleClass("hide"); $zoom_options.css({ - 'left': parseInt(offset.left) + "px", + 'left': parseInt(offset.left - ($zoom_options.width() / 2)) + "px", 'top' : parseInt(parseInt(offset.top) + parseInt($zoom_icon.height())) + "px" }); - $zoom_options.toggleClass("hide"); + $zoom_options.css("opacity", ""); }); $zoom_icon[0].className=""; @@ -148,6 +156,50 @@ PDFJS.reader.ControlsController = function(book) { } $zoom_options.addClass("hide"); }); + + // rotate + $rotate_icon[0].className = ""; + $rotate_icon[0].className = "icon-rotate_" + settings.rotation; + + $rotate_icon.on("click", function () { + var offset = $(this).offset(); + $rotate_options.css("opacity", 0); + $rotate_options.toggleClass("hide"); + $rotate_options.css({ + 'left': parseInt(offset.left - ($rotate_options.width() / 2)) + "px", + 'top' : parseInt(parseInt(offset.top) + parseInt($rotate_icon.height())) + "px" + }); + + $rotate_options.css("opacity", ""); + }); + + $rotate_option.on("click", function () { + var $this = $(this); + reader.setRotation($this.data("value")); + $rotate_icon[0].className=""; + $rotate_icon[0].textContent = ""; + if ($this.data("class")) { + $rotate_icon.addClass($this.data("class")); + } else { + $rotate_icon[0].textContent = $this.data("text"); + } + $rotate_options.addClass("hide"); + }); + + $rotate_left.on("click", function () { + // add 360 to avoid negative rotation value + var rotation = (settings.rotation - 90 + 360) % 360; + reader.setRotation(rotation); + $rotate_icon[0].className = ""; + $rotate_icon[0].className = "icon-rotate_" + rotation; + }); + + $rotate_right.on("click", function () { + var rotation = (settings.rotation + 90) % 360; + reader.setRotation(rotation); + $rotate_icon[0].className = ""; + $rotate_icon[0].className = "icon-rotate_" + rotation; + }); /* end custom select */ var enterPageNum = function(e) { diff --git a/files_reader/vendor/pdfjs/controllers/reader_controller.js b/files_reader/vendor/pdfjs/controllers/reader_controller.js index 9895e50..1a2a2f4 100644 --- a/files_reader/vendor/pdfjs/controllers/reader_controller.js +++ b/files_reader/vendor/pdfjs/controllers/reader_controller.js @@ -11,7 +11,9 @@ PDFJS.reader.ReaderController = function(book) { $container = $("#container"), $fullscreen = $("#fullscreen"), $bookmark = $("#bookmark"), - $note = $("#note"); + $note = $("#note"), + $rotate_left = $("#rotate_left"), + $rotate_right = $("#rotate_right"); var reader = this, book = this.book, @@ -93,9 +95,6 @@ PDFJS.reader.ReaderController = function(book) { case 'bookmark': $bookmark.click(); break; - case 'reflow': - $sidebarReflow.click(); - break; case 'toggleTitlebar': reader.ControlsController.toggle(); break; @@ -114,6 +113,15 @@ PDFJS.reader.ReaderController = function(book) { case 'toggleDay': $use_custom_colors.click(); break; + case 'rotateLeft': + $rotate_left.click(); + break; + case 'rotateRight': + $rotate_right.click(); + break; + case 'toggleZoom': + // TODO + break; default: console.log("unsupported keyCode: " + e.keyCode); } diff --git a/files_reader/vendor/pdfjs/css/.main.css.swp b/files_reader/vendor/pdfjs/css/.main.css.swp deleted file mode 100644 index a7696842a934943544c67cf7dead3129031a0f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/files_reader/vendor/pdfjs/css/main.css b/files_reader/vendor/pdfjs/css/main.css index 9ec1b45..5be07dc 100644 --- a/files_reader/vendor/pdfjs/css/main.css +++ b/files_reader/vendor/pdfjs/css/main.css @@ -142,33 +142,52 @@ body { right: 0; } -#zioom_icon { - text-align: center; - font-family: 'icomoon', 'Helvetica' !important; - font-size: 1.2em; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - border: none; +#zoom_icon, +#rotate_icon, +#rotate_left, +#rotate_right { + padding: 0; + border-radius: 0.2em; + border: 1px rgba(0,0,0,0) solid; + opacity: 0.5; + display: inline-block; + overflow: hidden; } -#zoom_icon { - padding: 0 0.5em; +#zoom_icon:hover, +#rotate_icon:hover, +#rotate_left:hover, +#rotate_right:hover { + opacity: .8; + border: 1px rgba(0,0,0,.2) solid; } -#zoom_options { +#zoom_icon:active, +#rotate_icon:active, +#rotate_left:active, +#rotate_right:active { + opacity: 1; + color: rgba(0,0,0,.6); + box-shadow: inset 0 0 6px rgba(155,155,155,.8); +} + +#zoom_options, +#rotate_options { font-family: "Lucida Console", "Monospace", "Courier New"; position: fixed; box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.4); background-color: white; font-size: 1em; - padding: 0.2em 0.5em; + padding: 0.5em; } -.zoom_option:hover { +.zoom_option, +.rotate_option { + padding: 0.25em; +} + +.zoom_option:hover, +.rotate_option:hover { background: black; color: white; } diff --git a/files_reader/vendor/pdfjs/pdf.reader.js b/files_reader/vendor/pdfjs/pdf.reader.js index 08624ca..8d37bba 100644 --- a/files_reader/vendor/pdfjs/pdf.reader.js +++ b/files_reader/vendor/pdfjs/pdf.reader.js @@ -21,37 +21,47 @@ PDFJS.Reader = function(bookPath, _options) { search = window.location.search; var TEXT_RENDER_DELAY = 200, // ms - PAGE_RENDER_DELAY = 200; // ms + PAGE_RENDER_DELAY = 200, // ms + MAX_CANVAS_PIXELS = 5242880, + CSS_UNITS = 96.0 / 72.0, + MIN_SCALE = 0.25, + MAX_SCALE = 10.0, + DEFAULT_SCALE = 1; this.settings = this.defaults(_options || {}, { bookPath: bookPath, textRenderDelay: TEXT_RENDER_DELAY, pageRenderDelay: PAGE_RENDER_DELAY, - textSelect: true, // true || false, add selectable text layer - doubleBuffer: true, // true || false, draw to off-screen canvas + canvasLimit: 0, + cssZoomOnly: false, // true || false, only zoom using CSS, render document at 100% size + textSelect: false, // true || false, add selectable text layer + doubleBuffer: true, // true || false, draw to off-screen canvas numPages: 0, currentPage: 1, - scale: 1, + scale: DEFAULT_SCALE, oddPageRight: true, // when true, odd pages render on the right side zoomLevel: window.outerWidth > window.outerHeight ? "spread" : "fit_page", // spread, fit_page, fit_width, percentage + rotation: 0, // 0 || 90 || 180 || 270 history: true, keyboard: { - 32: 'next', // space - 34: 'next', // page-down - 39: 'next', // cursor-right - 33: 'previous', // page-up - 37: 'previous', // cursor-left - 36: 'first', // home - 35: 'last', // end - 65: 'annotate', // a - 66: 'bookmark', // b - 82: 'reflow', // r - 83: 'toggleSidebar', // s - 84: 'toggleTitlebar', // t - 68: 'toggleDay', // d - 78: 'toggleNight', // n + 32: 'next', // space + 34: 'next', // page-down + 39: 'next', // cursor-right + 33: 'previous', // page-up + 37: 'previous', // cursor-left + 36: 'first', // home + 35: 'last', // end + 65: 'annotate', // a + 66: 'bookmark', // b + 76: 'rotateLeft', // l + 82: 'rotateRight', // r + 90: 'toggleZoom', // z + 83: 'toggleSidebar',// s + 84: 'toggleTitlebar', // t + 68: 'toggleDay', // d + 78: 'toggleNight', // n 70: 'toggleFullscreen', // f - 27: 'closeSidebar' // esc + 27: 'closeSidebar' // esc }, nightMode: false, dayMode: false, @@ -126,6 +136,11 @@ PDFJS.Reader = function(bookPath, _options) { this.sideBarOpen = false; this.viewerResized = false; this.pageNumPending = null; + this.output_scaled = false; + this.restricted_scaling = false; + this.CSS_UNITS = CSS_UNITS; + this.MIN_SCALE = MIN_SCALE; + this.MAX_SCALE = MAX_SCALE; PDFJS.getDocument(reader.settings.bookPath).then(function(_book) { reader.book = book = _book; @@ -167,6 +182,15 @@ PDFJS.Reader.prototype.setZoom = function(zoom) { reader.queuePage(page); }; +PDFJS.Reader.prototype.setRotation = function (rotation) { + + var reader = this, + page = reader.settings.currentPage; + + reader.settings.rotation = rotation; + reader.queuePage(page); +}; + PDFJS.Reader.prototype.cancelRender = function (index) { var reader = this, @@ -201,18 +225,24 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { outputscale, max_view_width, max_view_height, + page_width, + page_height, scale_width, scale_height, view_aspect, document_aspect, scale, + page_rotation, + rotation, + initial_viewport, viewport, zoom, fraction, offset, renderContext, renderTask, - resourcelst; + resourcelst, + swap_orientation; max_view_width = window.innerWidth; max_view_height = window.innerHeight; @@ -232,6 +262,8 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { index = 0; // hide second canvas reader.resourcelst[1].canvas.style.display = "none"; + // clear text layer + reader.resourcelst[1].textdiv.innerHTML = ""; // don't try to render non-existing page 0 (which is used // to indicate the empty left page when oddPageRight === true) @@ -267,11 +299,16 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { this.book.getPage(pageNum).then(function(page) { //console.log(page); - var page_width = page.pageInfo.view[2]; - var page_height = page.pageInfo.view[3]; + page_rotation = page.rotate; + rotation = (page_rotation + reader.settings.rotation) % 360; + //initial_viewport = page.getViewport({scale: 1, rotation: rotation}); + initial_viewport = page.getViewport(1, rotation); + page_width = initial_viewport.width; + page_height = initial_viewport.height; + document_aspect = parseFloat(page_width / page_height); view_aspect = parseFloat(max_view_width / max_view_height); - + scale_height = parseFloat(max_view_height / page_height); scale_width = parseFloat(max_view_width / page_width); @@ -284,9 +321,10 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { + " v_a: " + view_aspect + " s_w: " + scale_width + " s_h: " + scale_height + + " p_r: " + page_rotation + + " r: " + rotation + " o: " + outputscale); - console.log("fraction: "); - console.log(fraction); + console.log("fraction: ", fraction); */ switch (reader.settings.zoomLevel) { @@ -330,19 +368,45 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { default: $viewer.removeClass("flex"); - scale = parseFloat(reader.settings.zoomLevel); + scale = parseFloat(reader.settings.zoomLevel * reader.CSS_UNITS); canvas.width = reader.roundToDivide(parseInt(page_width * scale * outputscale), fraction[0]); ; canvas.height = reader.roundToDivide(parseInt(page_height * scale * outputscale), fraction[0]); break; } - //console.log(canvas.width + " " + canvas.height); + viewport = initial_viewport.clone({scale: scale, rotation: rotation}); + + if (reader.settings.cssZoomOnly) { + console.log("css zoom only"); + var actualSizeViewport = viewport.clone({scale: 1}); + canvas.width = actualSizeViewport.width; + canvas.height = actualSizeViewport.height; + outputscale = actualSizeViewport.width / viewport.width; + reader.output_scaled = true; + } + + if (reader.settings.canvasLimit > 0) { + console.log("canvas is limited"); + var pixelsInViewport = viewport.width * viewport.height; + var maxscale = + Math.sqrt(reader.settings.canvasLimit / pixelsInViewport); + if (outputscale > maxscale) { + console.log("outputscale: " + outputscale, "maxscale: " + maxscale); + outputscale = maxscale; + reader.output_scaled = true; + reader.restricted_scaling = true; + } else { + reader.restricted_scaling = false; + } + } + + //console.log("outputscale: " + outputscale); + //console.log("canvas w x h: " + canvas.width + " x " + canvas.height); transform = (outputscale === 1) ? null : [outputscale, 0, 0, outputscale, 0, 0]; - viewport = page.getViewport(scale); if (outputscale !== 1) { canvas.style.width = reader.roundToDivide(viewport.width, fraction[1]) + 'px'; @@ -361,7 +425,7 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { top: offset.top, left: offset.left }); - page.getTextContent().then(function (textContent) { + page.getTextContent({ normalizeWhitespace: true }).then(function (textContent) { resourcelst.textLayer = textLayer = new PDFJS.Reader.TextLayerController({ textLayerDiv: textdiv, pageIdx: pageNum - 1, @@ -413,39 +477,18 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { }); } else { - // clear canvas, use maximum size + // clear canvas (by resizing it), use maximum size + canvas.width = 0; + canvas.height = 0; canvas.width = reader.roundToDivide(max_view_width * outputscale, fraction[0]); canvas.height = reader.roundToDivide(max_view_height * outputscale, fraction[0]); if (outputscale !== 1) { canvas.style.width = reader.roundToDivide(max_view_width, fraction[1]) + 'px'; canvas.style.height = reader.roundToDivide(max_view_height, fraction[1]) + 'px'; } - ctx.clearRect(0, 0, canvas.width, canvas.height); + // resizing clears canvas so this is not needed... + //ctx.clearRect(0, 0, canvas.width, canvas.height); } - - /* - if (index === 0) { - - if (pageNum > 0) { - $page_num.textContent = pageNum.toString(); - } - reader.settings.currentPage = pageNum; - - } else { - - if (pageNum === 1) { - - $page_num.textContent = pageNum.toString(); - - } else if (pageNum <= reader.settings.numPages) { - - var text = $page_num.textContent; - text += "-" + pageNum.toString(); - $page_num.textContent = text; - - } - } - */ }; PDFJS.Reader.prototype.queuePage = function(page) { @@ -619,5 +662,15 @@ PDFJS.Reader.prototype.approximateFraction = function (x) { }; PDFJS.Reader.prototype.isMobile = function () { - return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1); + + var reader = this; + + var isMobile = (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1); + + if (isMobile) { + reader.isMobile = true; + reader.canvasLimit = reader.settings.canvasLimit; + } + + return isMobile; };