-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathbook.bat
More file actions
29 lines (29 loc) · 1.29 KB
/
Copy pathbook.bat
File metadata and controls
29 lines (29 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@echo off
@pushd "%~dp0"
rem PDF render only. Run build.bat first so docs\_site-pdf\book.html and
rem its dependencies exist.
rem
rem render-book.mjs drives puppeteer + paged.js + pdf-lib directly so
rem we control pdf-lib's parseSpeed (the default yields the event loop
rem between every 100 objects on load, adding ~32 s to a 100 s build
rem for no reason in Node -- see perf\README.md "Profiling pdf-lib's
rem load" for the full diagnosis). pagedjs-cli passed no options to
rem load/save and inherited that cost; we don't.
rem
rem --additional-script perf\detach-pages.js injects a Paged.Handler
rem that hides each finalised page from Chromium's layout tree and
rem restores them all before page.pdf() runs. Drops total render from
rem ~104s to ~51s on the 1638-page book by eliminating the O(n^2)
rem getBoundingClientRect cost in paged.js's overflow walker.
if not exist docs\_site-pdf\book.html (
echo docs\_site-pdf\book.html not found. Run build.bat first.
exit /b 1
)
if not exist node_modules\puppeteer\package.json (
echo Installing dependencies...
call npm install
if errorlevel 1 exit /b 1
)
if not exist docs\_pdf mkdir docs\_pdf
node book\render-book.mjs docs\_site-pdf\book.html -o "docs\_pdf\twinBASIC Book.pdf" --outline-tags h1,h2,h3,h4 --additional-script perf\detach-pages.js
@popd