[{"data":1,"prerenderedAt":1228},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-production-guide":139,"-use-cases-production-guide-surround":1224},[4,55,89],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":54},"API","i-lucide-braces","\u002Fapi","api",[10,14,18,22,26,30,34,38,42,46,50],{"title":11,"path":12,"stem":13},"Html2Pdf Component","\u002Fapi\u002Fcomponent","api\u002F01.component",{"title":15,"path":16,"stem":17},"Core Props","\u002Fapi\u002Fprops","api\u002F02.props",{"title":19,"path":20,"stem":21},"Headers","\u002Fapi\u002Fheaders","api\u002F03.headers",{"title":23,"path":24,"stem":25},"Footers","\u002Fapi\u002Ffooters","api\u002F04.footers",{"title":27,"path":28,"stem":29},"Security","\u002Fapi\u002Fsecurity","api\u002F05.security",{"title":31,"path":32,"stem":33},"Watermarks","\u002Fapi\u002Fwatermarks","api\u002F06.watermarks",{"title":35,"path":36,"stem":37},"Metadata & Compression","\u002Fapi\u002Fmetadata-compression","api\u002F07.metadata-compression",{"title":39,"path":40,"stem":41},"Programmatic API","\u002Fapi\u002Fprogrammatic-api","api\u002F08.programmatic-api",{"title":43,"path":44,"stem":45},"Loader, Progress, Events & Slots","\u002Fapi\u002Fevents-slots","api\u002F09.events-slots",{"title":47,"path":48,"stem":49},"TypeScript","\u002Fapi\u002Ftypescript","api\u002F10.typescript",{"title":51,"path":52,"stem":53},"Full README Reference","\u002Fapi\u002Ffull-reference","api\u002F11.full-reference",false,{"title":56,"icon":57,"path":58,"stem":59,"children":60,"page":54},"Get Started","i-lucide-book-open","\u002Fget-started","get-started",[61,65,69,73,77,81,85],{"title":62,"path":63,"stem":64},"Introduction","\u002Fget-started\u002Fintroduction","get-started\u002F01.introduction",{"title":66,"path":67,"stem":68},"Installation","\u002Fget-started\u002Finstallation","get-started\u002F02.installation",{"title":70,"path":71,"stem":72},"Quick Start","\u002Fget-started\u002Fquick-start","get-started\u002F03.quick-start",{"title":74,"path":75,"stem":76},"Rendering Modes","\u002Fget-started\u002Frendering-modes","get-started\u002F04.rendering-modes",{"title":78,"path":79,"stem":80},"Component Registration","\u002Fget-started\u002Fregistration","get-started\u002F05.registration",{"title":82,"path":83,"stem":84},"Preview & Download","\u002Fget-started\u002Fpreview-download","get-started\u002F06.preview-download",{"title":86,"path":87,"stem":88},"Pagination","\u002Fget-started\u002Fpagination","get-started\u002F07.pagination",{"title":90,"icon":91,"path":92,"stem":93,"children":94,"page":54},"Use Cases","i-lucide-flask-conical","\u002Fuse-cases","use-cases",[95,99,103,107,111,115,119,123,127,131,135],{"title":96,"path":97,"stem":98},"Playground","\u002Fuse-cases\u002Fplayground","use-cases\u002F01.playground",{"title":100,"path":101,"stem":102},"Selectable Text","\u002Fuse-cases\u002Fselectable-text","use-cases\u002F02.selectable-text",{"title":104,"path":105,"stem":106},"Clickable PDF Links","\u002Fuse-cases\u002Fclickable-links","use-cases\u002F03.clickable-links",{"title":108,"path":109,"stem":110},"Images & CORS","\u002Fuse-cases\u002Fimages-cors","use-cases\u002F04.images-cors",{"title":112,"path":113,"stem":114},"Production Guide","\u002Fuse-cases\u002Fproduction-guide","use-cases\u002F05.production-guide",{"title":116,"path":117,"stem":118},"Troubleshooting","\u002Fuse-cases\u002Ftroubleshooting","use-cases\u002F06.troubleshooting",{"title":120,"path":121,"stem":122},"Testing & Browser Support","\u002Fuse-cases\u002Ftesting-browser-support","use-cases\u002F07.testing-browser-support",{"title":124,"path":125,"stem":126},"Performance Engineering","\u002Fuse-cases\u002Fperformance-engineering","use-cases\u002F08.performance-engineering",{"title":128,"path":129,"stem":130},"Full Performance Engineering Report","\u002Fuse-cases\u002Fperformance-report","use-cases\u002F09.performance-report",{"title":132,"path":133,"stem":134},"Community & Feedback","\u002Fuse-cases\u002Fcommunity","use-cases\u002F10.community",{"title":136,"path":137,"stem":138},"Acknowledgements","\u002Fuse-cases\u002Facknowledgements","use-cases\u002F11.acknowledgements",{"id":140,"title":112,"body":141,"description":163,"extension":1218,"links":1219,"meta":1220,"navigation":1221,"path":113,"seo":1222,"stem":114,"__hash__":1223},"docs\u002Fuse-cases\u002F05.production-guide.md",{"type":142,"value":143,"toc":1190},"minimark",[144,148,153,157,220,224,227,231,238,244,248,259,263,277,281,334,338,348,352,362,365,369,372,376,379,383,386,390,397,400,404,407,465,470,473,477,480,521,525,528,625,628,631,651,655,662,665,672,676,688,691,702,705,709,712,733,736,740,743,746,761,765,768,840,843,847,850,853,856,876,885,897,900,904,981,984,988,991,1054,1057,1091,1094,1117,1120,1124,1130,1137,1140,1166,1173,1176,1179,1186],[145,146,112],"h1",{"id":147},"production-guide",[149,150,152],"h3",{"id":151},"use-a-deterministic-export-width","Use a deterministic export width",[154,155,156],"p",{},"A PDF should not unexpectedly reflow because it was generated from a narrow mobile viewport.",[158,159,164],"pre",{"className":160,"code":161,"language":162,"meta":163,"style":163},"language-css shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".pdf-root {\n  width: 794px;\n  box-sizing: border-box;\n}\n","css","",[165,166,167,183,200,214],"code",{"__ignoreMap":163},[168,169,172,176,180],"span",{"class":170,"line":171},"line",1,[168,173,175],{"class":174},"sMK4o",".",[168,177,179],{"class":178},"sBMFI","pdf-root",[168,181,182],{"class":174}," {\n",[168,184,186,190,193,197],{"class":170,"line":185},2,[168,187,189],{"class":188},"sqsOY","  width",[168,191,192],{"class":174},":",[168,194,196],{"class":195},"sbssI"," 794px",[168,198,199],{"class":174},";\n",[168,201,203,206,208,212],{"class":170,"line":202},3,[168,204,205],{"class":188},"  box-sizing",[168,207,192],{"class":174},[168,209,211],{"class":210},"sTEyZ"," border-box",[168,213,199],{"class":174},[168,215,217],{"class":170,"line":216},4,[168,218,219],{"class":174},"}\n",[149,221,223],{"id":222},"keep-export-css-separate-from-responsive-application-css","Keep export CSS separate from responsive application CSS",[154,225,226],{},"The web UI and the PDF document have different layout goals.",[149,228,230],{"id":229},"choose-the-renderer-intentionally","Choose the renderer intentionally",[154,232,233,234,237],{},"Use ",[165,235,236],{},"canvas"," when exact visual fidelity is the priority.",[154,239,233,240,243],{},[165,241,242],{},"text"," when selectable\u002Fsearchable\u002Fcopyable PDF text is the priority and the document uses CSS supported by the vector renderer.",[149,245,247],{"id":246},"avoid-large-fixed-heights","Avoid large fixed heights",[154,249,250,251,254,255,258],{},"Prefer ",[165,252,253],{},"min-height"," over large fixed ",[165,256,257],{},"height"," values where possible.",[149,260,262],{"id":261},"protect-important-blocks","Protect important blocks",[154,264,233,265,268,269,272,273,276],{},[165,266,267],{},".pdf-keep-together",", ",[165,270,271],{},".pdf-no-break",", or carefully chosen ",[165,274,275],{},"pagebreak.avoid"," selectors.",[149,278,280],{"id":279},"preserve-image-aspect-ratios","Preserve image aspect ratios",[158,282,284],{"className":160,"code":283,"language":162,"meta":163,"style":163},"img {\n  max-width: 100%;\n  height: auto;\n  object-fit: contain;\n}\n",[165,285,286,293,305,317,329],{"__ignoreMap":163},[168,287,288,291],{"class":170,"line":171},[168,289,290],{"class":178},"img",[168,292,182],{"class":174},[168,294,295,298,300,303],{"class":170,"line":185},[168,296,297],{"class":188},"  max-width",[168,299,192],{"class":174},[168,301,302],{"class":195}," 100%",[168,304,199],{"class":174},[168,306,307,310,312,315],{"class":170,"line":202},[168,308,309],{"class":188},"  height",[168,311,192],{"class":174},[168,313,314],{"class":210}," auto",[168,316,199],{"class":174},[168,318,319,322,324,327],{"class":170,"line":216},[168,320,321],{"class":188},"  object-fit",[168,323,192],{"class":174},[168,325,326],{"class":210}," contain",[168,328,199],{"class":174},[168,330,332],{"class":170,"line":331},5,[168,333,219],{"class":174},[149,335,337],{"id":336},"keep-headerfooter-content-inside-configured-heights","Keep header\u002Ffooter content inside configured heights",[154,339,340,341,344,345,175],{},"Very large text or HTML content can overlap PDF content if it exceeds ",[165,342,343],{},"headerHeight"," or ",[165,346,347],{},"footerHeight",[149,349,351],{"id":350},"use-trusted-html-only","Use trusted HTML only",[154,353,354,357,358,361],{},[165,355,356],{},"headerHtml"," and ",[165,359,360],{},"footerHtml"," intentionally render developer-provided HTML.",[154,363,364],{},"Never pass unsanitized user-controlled content.",[149,366,368],{"id":367},"keep-selectable-mode-link-styles-simple","Keep selectable-mode link styles simple",[154,370,371],{},"Avoid excessive letter spacing, transforms, or tightly fixed widths for PDF links\u002Fbuttons when using selectable-text mode.",[149,373,375],{"id":374},"use-reasonable-canvas-quality","Use reasonable canvas quality",[154,377,378],{},"Higher html2canvas scale values consume more memory and CPU.",[149,380,382],{"id":381},"generate-one-large-document-at-a-time","Generate one large document at a time",[154,384,385],{},"Multi-page PDF generation can be CPU and memory intensive.",[149,387,389],{"id":388},"provide-cancellation-for-expensive-exports","Provide cancellation for expensive exports",[154,391,392,393,396],{},"Expose ",[165,394,395],{},"cancelGeneration()"," in long-running workflows so users can stop an export without waiting for the entire document to finish.",[154,398,399],{},"Cancellation is cooperative: already-running synchronous browser\u002FjsPDF work finishes before the next cancellation checkpoint.",[149,401,403],{"id":402},"test-representative-content","Test representative content",[154,405,406],{},"Test:",[408,409,410,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462],"ul",{},[411,412,413],"li",{},"shortest document",[411,415,416],{},"longest document",[411,418,419],{},"missing fields",[411,421,422],{},"very long text",[411,424,425],{},"wide\u002Fsquare\u002Ftall logos",[411,427,428],{},"remote images",[411,430,431],{},"links",[411,433,434],{},"manual and automatic pagination",[411,436,437],{},"header\u002Ffooter enabled and disabled",[411,439,440],{},"logo enabled and disabled",[411,442,443],{},"trusted HTML header\u002Ffooter",[411,445,446],{},"selective header pages",[411,448,449],{},"watermark targeting",[411,451,452],{},"password protection",[411,454,455],{},"every permission combination important to your app",[411,457,458],{},"metadata",[411,460,461],{},"compression",[411,463,464],{},"both render modes",[466,467,469],"h2",{"id":468},"performance-large-documents","Performance & Large Documents",[154,471,472],{},"Large client-side PDF generation is constrained by browser memory, canvas limits, image size, document complexity, encryption overhead, and the device running the page. The package therefore uses multiple strategies rather than assuming one renderer is safe for every document.",[149,474,476],{"id":475},"large-document-work-completed","Large-document work completed",[154,478,479],{},"The performance\u002Fstability work includes:",[408,481,482,485,488,491,494,497,500,503,506,509,512,515,518],{},[411,483,484],{},"10 \u002F 25 \u002F 50 \u002F 100-page benchmark and regression fixtures",[411,486,487],{},"generation-time and PDF-size measurement",[411,489,490],{},"browser-memory experiments and repeated-generation testing",[411,492,493],{},"raw Canvas\u002FjsPDF isolation tests to separate package behavior from dependency behavior",[411,495,496],{},"page-by-page incremental Canvas rendering for paginated documents",[411,498,499],{},"temporary DOM cleanup after page capture",[411,501,502],{},"canvas backing-store release after raster insertion",[411,504,505],{},"selectable-text image materialization with per-generation repeated-image caching",[411,507,508],{},"cooperative browser yielding during expensive loops",[411,510,511],{},"cancellation and recovery testing",[411,513,514],{},"page-aware progress reporting",[411,516,517],{},"long-document Playwright stress\u002Fregression coverage",[411,519,520],{},"image-heavy, mixed-content, header\u002Ffooter, watermark, metadata, compression, links, and security scenarios",[149,522,524],{"id":523},"measured-performance-improvements","Measured performance improvements",[154,526,527],{},"The performance work resulted in several measurable improvements in the benchmark fixtures:",[529,530,531,551],"table",{},[532,533,534],"thead",{},[535,536,537,541,545,548],"tr",{},[538,539,540],"th",{},"Area",[538,542,544],{"align":543},"right","Before",[538,546,547],{"align":543},"After",[538,549,550],{"align":543},"Improvement",[552,553,554,569,583,597,611],"tbody",{},[535,555,556,560,563,566],{},[557,558,559],"td",{},"HTML footer without logo",[557,561,562],{"align":543},"7.82 s",[557,564,565],{"align":543},"1.43 s",[557,567,568],{"align":543},"~81.7% less time",[535,570,571,574,577,580],{},[557,572,573],{},"HTML footer with logo",[557,575,576],{"align":543},"11.81 s",[557,578,579],{"align":543},"1.29 s",[557,581,582],{"align":543},"~89.1% less time",[535,584,585,588,591,594],{},[557,586,587],{},"Footer-heavy PDF size",[557,589,590],{"align":543},"~46.7 MB",[557,592,593],{"align":543},"~1.0 MB",[557,595,596],{"align":543},"~97.9% smaller",[535,598,599,602,605,608],{},[557,600,601],{},"Footer no-logo peak heap",[557,603,604],{"align":543},"102.6 MB",[557,606,607],{"align":543},"26.5 MB",[557,609,610],{"align":543},"~74.2% lower",[535,612,613,616,619,622],{},[557,614,615],{},"Long Canvas capture surface",[557,617,618],{"align":543},"~99.96M px",[557,620,621],{"align":543},"~1.74M px per page",[557,623,624],{"align":543},"~98.26% smaller peak capture geometry",[154,626,627],{},"These measurements are tied to the project's benchmark fixtures and test environment. They should not be interpreted as a universal percentage improvement for every PDF.",[154,629,630],{},"The architectural changes behind these results include:",[408,632,633,636,639,642,645,648],{},[411,634,635],{},"rendering static HTML footers once and reusing them across pages",[411,637,638],{},"page-by-page Canvas rendering for paginated documents",[411,640,641],{},"releasing temporary DOM and canvas backing stores earlier",[411,643,644],{},"caching repeated selectable-mode images within one generation",[411,646,647],{},"yielding between expensive rendering steps",[411,649,650],{},"adding cancellation and page-aware progress",[149,652,654],{"id":653},"incremental-canvas-strategy","Incremental Canvas strategy",[154,656,657,658,661],{},"For Canvas documents with ",[165,659,660],{},".html2pdf__page-break"," markers, each logical page is rendered independently.",[154,663,664],{},"This avoids the old failure mode where a long document could become one extremely tall browser canvas. In regression testing, the incremental path restored correct 50-page and 100-page Canvas PDF output while keeping individual captures page-bounded.",[154,666,667,668,671],{},"The legacy whole-document ",[165,669,670],{},"html2pdf.js"," path is retained for Canvas documents that do not contain page-break markers.",[149,673,675],{"id":674},"selectable-text-image-optimization","Selectable-text image optimization",[154,677,678,679,683,684,687],{},"Selectable-text rendering uses a ",[680,681,682],"strong",{},"per-generation image cache"," for repeated real ",[165,685,686],{},"\u003Cimg>"," sources when the source, target raster dimensions, format, and JPEG quality match.",[154,689,690],{},"Why the cache is intentionally per-generation:",[408,692,693,696,699],{},[411,694,695],{},"avoids carrying stale DOM\u002Fimage state across exports",[411,697,698],{},"keeps cache lifetime bounded",[411,700,701],{},"prevents a global cache from becoming a long-lived memory owner",[154,703,704],{},"Canvas elements are not cached because their pixels may change even when their dimensions do not.",[149,706,708],{"id":707},"cleanup-and-browser-responsiveness","Cleanup and browser responsiveness",[154,710,711],{},"Long exports explicitly release temporary resources where practical:",[408,713,714,721,724,727,730],{},[411,715,716,717,720],{},"off-screen incremental page DOM is removed after ",[165,718,719],{},"html2canvas"," no longer needs it",[411,722,723],{},"temporary canvas backing stores are reset after serialization\u002Finsertion",[411,725,726],{},"selectable image-materialization canvases are released after encoding",[411,728,729],{},"per-generation image caches are cleared after use",[411,731,732],{},"rendering loops periodically yield with browser scheduling checkpoints",[154,734,735],{},"Yielding does not make CPU-heavy work free, but it gives the browser opportunities to process progress updates and cancellation rather than monopolizing the main thread for the entire export.",[149,737,739],{"id":738},"cancellation-and-recovery","Cancellation and recovery",[154,741,742],{},"Both rendering modes support cooperative cancellation.",[154,744,745],{},"The regression suite checks that:",[747,748,749,752,755,758],"ol",{},[411,750,751],{},"an active long export can be cancelled,",[411,753,754],{},"temporary rendering DOM is cleaned up,",[411,756,757],{},"no successful Blob is exposed for the cancelled run, and",[411,759,760],{},"a new PDF can be generated successfully afterwards.",[149,762,764],{"id":763},"page-progress","Page progress",[154,766,767],{},"Page-aware renderers can report:",[158,769,773],{"className":770,"code":771,"language":772,"meta":163,"style":163},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  stage: 'rendering',\n  progress: number,\n  currentPage?: number,\n  totalPages?: number,\n}\n","ts",[165,774,775,780,800,812,824,835],{"__ignoreMap":163},[168,776,777],{"class":170,"line":171},[168,778,779],{"class":174},"{\n",[168,781,782,785,787,790,794,797],{"class":170,"line":185},[168,783,784],{"class":178},"  stage",[168,786,192],{"class":174},[168,788,789],{"class":174}," '",[168,791,793],{"class":792},"sfazB","rendering",[168,795,796],{"class":174},"'",[168,798,799],{"class":174},",\n",[168,801,802,805,807,810],{"class":170,"line":202},[168,803,804],{"class":178},"  progress",[168,806,192],{"class":174},[168,808,809],{"class":210}," number",[168,811,799],{"class":174},[168,813,814,817,820,822],{"class":170,"line":216},[168,815,816],{"class":210},"  currentPage",[168,818,819],{"class":174},"?:",[168,821,809],{"class":210},[168,823,799],{"class":174},[168,825,826,829,831,833],{"class":170,"line":331},[168,827,828],{"class":210},"  totalPages",[168,830,819],{"class":174},[168,832,809],{"class":210},[168,834,799],{"class":174},[168,836,838],{"class":170,"line":837},6,[168,839,219],{"class":174},[154,841,842],{},"This is useful for long reports where a percentage alone does not explain what the renderer is doing.",[149,844,846],{"id":845},"encrypted-canvas-memory-behavior","Encrypted Canvas memory behavior",[154,848,849],{},"Large encrypted Canvas PDFs can retain substantially more memory than equivalent unencrypted Canvas PDFs in Chromium.",[154,851,852],{},"Isolation testing reproduced the severe encrypted-raster retention pattern with raw jsPDF usage, outside the Vue component lifecycle. For that reason this is tracked as an upstream\u002Fdependency concern rather than described as a confirmed Vue memory leak.",[154,854,855],{},"Practical guidance:",[408,857,858,861,864,867,870,873],{},[411,859,860],{},"avoid unnecessarily high Canvas scale values",[411,862,863],{},"resize oversized images before PDF generation",[411,865,866],{},"generate one very large document at a time",[411,868,869],{},"prefer selectable-text mode when it meets the document's visual requirements",[411,871,872],{},"test encrypted long documents on representative target devices",[411,874,875],{},"consider splitting exceptionally large documents when browser memory is constrained",[877,878,879],"blockquote",{},[154,880,881,884],{},[680,882,883],{},"Upstream jsPDF tracking",": large encrypted Canvas PDFs can show substantially higher memory retention than equivalent unencrypted Canvas PDFs in Chromium. The same encrypted-raster pattern was reproduced in a raw jsPDF-only test outside the Vue component lifecycle, so this is tracked as an upstream\u002Fdependency concern rather than described as a confirmed Vue memory leak. See jsPDF issue #4017.",[877,886,887],{},[154,888,889,890,175],{},"Upstream tracking: ",[891,892,896],"a",{"href":893,"rel":894},"https:\u002F\u002Fgithub.com\u002Fparallax\u002FjsPDF\u002Fissues\u002F4017",[895],"nofollow","jsPDF #4017 - encrypted raster PDF memory retention",[154,898,899],{},"This link is included so developers using large encrypted Canvas PDFs can follow the dependency-level investigation directly.",[149,901,903],{"id":902},"stressregression-coverage","Stress\u002Fregression coverage",[529,905,906,915],{},[532,907,908],{},[535,909,910,912],{},[538,911,540],{},[538,913,914],{},"Coverage",[552,916,917,925,933,941,949,957,965,973],{},[535,918,919,922],{},[557,920,921],{},"Long Canvas documents",[557,923,924],{},"10 \u002F 25 \u002F 50 \u002F 100-page regression fixtures",[535,926,927,930],{},[557,928,929],{},"Heavy cross-browser smoke",[557,931,932],{},"Chromium plus Firefox\u002FWebKit coverage, with the heaviest 50\u002F100-page cases concentrated in Chromium",[535,934,935,938],{},[557,936,937],{},"Selectable-text long documents",[557,939,940],{},"long multi-page rendering and cancellation\u002Frecovery",[535,942,943,946],{},[557,944,945],{},"Image-heavy selectable mode",[557,947,948],{},"repeated image cache \u002F raster-call regression",[535,950,951,954],{},[557,952,953],{},"Image-heavy Canvas mode",[557,955,956],{},"page-bounded canvas regression",[535,958,959,962],{},[557,960,961],{},"Cancellation",[557,963,964],{},"Canvas and selectable-text cancellation + recovery",[535,966,967,970],{},[557,968,969],{},"Cleanup",[557,971,972],{},"temporary page\u002Fsnapshot\u002Ffixture cleanup assertions",[535,974,975,978],{},[557,976,977],{},"Features",[557,979,980],{},"headers, footers, watermarks, links, metadata, compression, security",[154,982,983],{},"These tests validate the package's test fixtures and supported paths; they are not a universal guarantee that every arbitrary 100-page web document will fit every browser\u002Fdevice memory budget.",[149,985,987],{"id":986},"recommended-large-document-configuration","Recommended large-document configuration",[154,989,990],{},"For large Canvas reports:",[158,992,996],{"className":993,"code":994,"language":995,"meta":163,"style":163},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CHtml2Pdf render-mode=\"canvas\" :manual-pagination=\"true\" :pdf-quality=\"1.5\" \u002F>\n","vue",[165,997,998],{"__ignoreMap":163},[168,999,1000,1003,1007,1011,1014,1017,1019,1021,1024,1027,1029,1031,1035,1037,1039,1042,1044,1046,1049,1051],{"class":170,"line":171},[168,1001,1002],{"class":174},"\u003C",[168,1004,1006],{"class":1005},"swJcz","Html2Pdf",[168,1008,1010],{"class":1009},"spNyl"," render-mode",[168,1012,1013],{"class":174},"=",[168,1015,1016],{"class":174},"\"",[168,1018,236],{"class":792},[168,1020,1016],{"class":174},[168,1022,1023],{"class":174}," :",[168,1025,1026],{"class":1009},"manual-pagination",[168,1028,1013],{"class":174},[168,1030,1016],{"class":174},[168,1032,1034],{"class":1033},"sfNiH","true",[168,1036,1016],{"class":174},[168,1038,1023],{"class":174},[168,1040,1041],{"class":1009},"pdf-quality",[168,1043,1013],{"class":174},[168,1045,1016],{"class":174},[168,1047,1048],{"class":195},"1.5",[168,1050,1016],{"class":174},[168,1052,1053],{"class":174}," \u002F>\n",[154,1055,1056],{},"Use explicit page markers:",[158,1058,1062],{"className":1059,"code":1060,"language":1061,"meta":163,"style":163},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cdiv class=\"html2pdf__page-break\">\u003C\u002Fdiv>\n","html",[165,1063,1064],{"__ignoreMap":163},[168,1065,1066,1068,1071,1074,1076,1078,1081,1083,1086,1088],{"class":170,"line":171},[168,1067,1002],{"class":174},[168,1069,1070],{"class":1005},"div",[168,1072,1073],{"class":1009}," class",[168,1075,1013],{"class":174},[168,1077,1016],{"class":174},[168,1079,1080],{"class":792},"html2pdf__page-break",[168,1082,1016],{"class":174},[168,1084,1085],{"class":174},">\u003C\u002F",[168,1087,1070],{"class":1005},[168,1089,1090],{"class":174},">\n",[154,1092,1093],{},"For text-heavy reports where supported CSS is sufficient:",[158,1095,1097],{"className":993,"code":1096,"language":995,"meta":163,"style":163},"\u003CHtml2Pdf render-mode=\"text\" \u002F>\n",[165,1098,1099],{"__ignoreMap":163},[168,1100,1101,1103,1105,1107,1109,1111,1113,1115],{"class":170,"line":171},[168,1102,1002],{"class":174},[168,1104,1006],{"class":1005},[168,1106,1010],{"class":1009},[168,1108,1013],{"class":174},[168,1110,1016],{"class":174},[168,1112,242],{"class":792},[168,1114,1016],{"class":174},[168,1116,1053],{"class":174},[154,1118,1119],{},"Selectable-text mode avoids rasterizing the entire body and can be a better fit for long text-first documents.",[149,1121,1123],{"id":1122},"about-documents-larger-than-100-pages","About documents larger than 100 pages",[154,1125,1126,1127,175],{},"The current automated stress and regression suite verifies large-document behavior through ",[680,1128,1129],{},"100-page test fixtures",[154,1131,1132,1133,1136],{},"This does ",[680,1134,1135],{},"not"," mean the package has a hard 100-page limit. PDF generation does not stop at page 100, and larger documents may also work successfully.",[154,1138,1139],{},"However, documents beyond the tested range depend increasingly on the actual workload, including:",[408,1141,1142,1145,1148,1151,1154,1157,1160,1163],{},[411,1143,1144],{},"DOM size and complexity",[411,1146,1147],{},"number and dimensions of images",[411,1149,1150],{},"whether images are unique or repeatedly reused",[411,1152,1153],{},"renderer choice",[411,1155,1156],{},"browser and device memory",[411,1158,1159],{},"headers, footers, and watermarks",[411,1161,1162],{},"encryption and compression",[411,1164,1165],{},"final PDF serialization cost",[154,1167,1168,1169,1172],{},"For very large text-first documents, ",[165,1170,1171],{},"renderMode=\"text\""," is generally the preferred starting point when its supported CSS is sufficient, because body text is represented as PDF text\u002Fvector operations instead of full-page raster screenshots.",[154,1174,1175],{},"For large Canvas documents, use deterministic pagination\u002Fpage-break markers so the incremental renderer can keep individual Canvas captures page-bounded.",[154,1177,1178],{},"The package also provides page-aware progress and cooperative cancellation so applications can give users meaningful feedback during long exports:",[158,1180,1184],{"className":1181,"code":1183,"language":242,"meta":163},[1182],"language-text","Rendering page 74 of 100\n",[165,1185,1183],{"__ignoreMap":163},[1187,1188,1189],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sqsOY, html code.shiki .sqsOY{--shiki-light:#8796B0;--shiki-default:#B2CCD6;--shiki-dark:#B2CCD6}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":163,"searchDepth":185,"depth":185,"links":1191},[1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205],{"id":151,"depth":202,"text":152},{"id":222,"depth":202,"text":223},{"id":229,"depth":202,"text":230},{"id":246,"depth":202,"text":247},{"id":261,"depth":202,"text":262},{"id":279,"depth":202,"text":280},{"id":336,"depth":202,"text":337},{"id":350,"depth":202,"text":351},{"id":367,"depth":202,"text":368},{"id":374,"depth":202,"text":375},{"id":381,"depth":202,"text":382},{"id":388,"depth":202,"text":389},{"id":402,"depth":202,"text":403},{"id":468,"depth":185,"text":469,"children":1206},[1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217],{"id":475,"depth":202,"text":476},{"id":523,"depth":202,"text":524},{"id":653,"depth":202,"text":654},{"id":674,"depth":202,"text":675},{"id":707,"depth":202,"text":708},{"id":738,"depth":202,"text":739},{"id":763,"depth":202,"text":764},{"id":845,"depth":202,"text":846},{"id":902,"depth":202,"text":903},{"id":986,"depth":202,"text":987},{"id":1122,"depth":202,"text":1123},"md",null,{},true,{"title":112,"description":163},"oujtiY8E56LWcfUtW0ManesfWyeoSCth7IkpFGv-6QY",[1225,1227],{"title":108,"path":109,"stem":110,"description":1226,"children":-1},"Remote images must be accessible to the browser during rendering.",{"title":116,"path":117,"stem":118,"description":163,"children":-1},1788876783339]