@@ -139,6 +139,25 @@ const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
139139 }
140140 } ) ;
141141
142+ eventBus . on ( "pagesloaded" , async e => {
143+ const thumbnailsContainer = el . querySelector ( ".bb-view-thumbnails" ) ;
144+ pdfViewer . getPagesOverview ( ) . map ( async ( p , i ) => {
145+ var page = await pdfViewer . pdfDocument . getPage ( i + 1 ) ;
146+ var canvas = await makeThumb ( page ) ;
147+ var img = document . createElement ( "img" ) ;
148+ img . src = canvas . toDataURL ( ) ;
149+
150+ var item = document . createElement ( "div" ) ;
151+ item . classList . add ( "bb-view-thumbnail-item" ) ;
152+ item . appendChild ( img ) ;
153+ thumbnailsContainer . appendChild ( item ) ;
154+ } ) ;
155+
156+ if ( options . triggerPagesLoaded === true ) {
157+ await invoke . invokeMethodAsync ( "PagesLoaded" , e . pagesCount ) ;
158+ }
159+ } )
160+
142161 eventBus . on ( "pagechanging" , async evt => {
143162 const page = evt . pageNumber ;
144163 const pageNumberEl = el . querySelector ( ".bb-view-num" ) ;
@@ -194,6 +213,22 @@ const updateScale = (pdfViewer, button, rate) => {
194213 pdfViewer . currentScaleValue = v / 100 ;
195214}
196215
216+ const makeThumb = page => {
217+ const outputScale = window . devicePixelRatio || 1 ;
218+ var vp = page . getViewport ( { scale : 1 } ) ;
219+ var canvas = document . createElement ( "canvas" ) ;
220+ var scalesize = 1 ;
221+ canvas . width = vp . width * scalesize * outputScale ;
222+ canvas . height = vp . height * scalesize * outputScale ;
223+
224+ return page . render ( {
225+ canvasContext : canvas . getContext ( "2d" ) ,
226+ viewport : page . getViewport ( { scale : scalesize * outputScale } )
227+ } ) . promise . then ( function ( ) {
228+ return canvas ;
229+ } )
230+ }
231+
197232export function dispose ( id ) {
198233 Data . remove ( id ) ;
199234
0 commit comments