@@ -3,23 +3,29 @@ import { waitForGoto } from '../util/puppeteer';
33import { URL } from 'url' ;
44import { Book } from './Book' ;
55import { defDownloadOptions , DownloadOptions } from './download-options' ;
6+ import { SizeAttributes , getPdfOptions } from './get-pdf-options' ;
67
78export class DigiBook extends Book {
89 async download ( outDir : string , _options ?: DownloadOptions ) {
910 const dir = await this . mkSubDir ( outDir ) ;
1011 const options = defDownloadOptions ( _options ) ;
12+ options . format ??= 'a4' ;
1113
1214 // Get url of 1st svg page
1315 const checkPage = await this . shelf . browser . newPage ( ) ;
1416 let page1Url : string ;
17+ let sizeHint : SizeAttributes ;
1518 try {
1619 await checkPage . goto ( new URL ( `?page=1` , this . url ) . toString ( ) , {
1720 waitUntil : 'networkidle2' ,
1821 timeout : this . shelf . options . timeout ,
1922 } ) ;
20- page1Url = await checkPage . $eval (
23+ [ page1Url , sizeHint ] = await checkPage . $eval (
2124 '#pg1 > object' ,
22- ( obj ) => ( obj as HTMLObjectElement ) . data
25+ ( obj : HTMLObjectElement ) : [ string , SizeAttributes ] => [
26+ obj . data ,
27+ { width : obj . width , height : obj . height } ,
28+ ]
2329 ) ;
2430 } finally {
2531 await checkPage . close ( ) ;
@@ -54,7 +60,7 @@ export class DigiBook extends Book {
5460 const pdfFile = this . getPdfPath ( dir , pageNo ) ;
5561
5662 await page . pdf ( {
57- format : options . format ,
63+ ... ( await getPdfOptions ( page , options , sizeHint ) ) ,
5864 path : pdfFile ,
5965 } ) ;
6066
0 commit comments