puppeteer / puppeteer

JavaScript API for Chrome and Firefox
https://pptr.dev
Apache License 2.0
88.29k stars 9.06k forks source link

[Bug]: Failures after update to Chrome 114 #10353

Closed marck27g closed 1 year ago

marck27g commented 1 year ago

Bug expectation

I expected the pdfs to continue to be produced.

Instead about half of our pdfs, which all worked fine in Chrome 113, fail in 114 with Failed to Print error on page.pdf() Memory also spikes on machine before it crashes

Bug behavior

Minimal, reproducible example

const browser = await puppeteer.launch({ pipe: true, executablePath, ignoreDefaultArgs: ['--disable-extensions'], args });
const page = await browser.newPage().catch(err => {
    logger.error(err);
});
await page.setContent(reportContent.outerHTML, { timeout: 60000, waitUntil: ['load', 'domcontentloaded', 'networkidle0'] });
await page.addStyleTag({ path: `${rootDir}/assets/styles/report.css` });
await page.evaluate(() => { window.scrollBy(0, window.innerHeight); });
const pdfBuffer = await page.pdf({ ...puppeteerConfig, headerTemplate: headerTemplate(reportType) });

Error string

Error: Protocol error (Page.printToPDF): Printing failed

Puppeteer configuration

No response

Puppeteer version

20.5.0

Node version

16.3.0

Package manager

yarn

Package manager version

7.15.1

Operating system

Windows

github-actions[bot] commented 1 year ago

This issue was not reproducible. Please check that your example runs locally and the following:

Once the above checks are satisfied, please edit your issue with the changes and we will try to reproduce the bug again.


Analyzer run

marck27g commented 1 year ago

Extended Error and Updated to flaky. Can send scrubbed html that goes into the page if needed

 Error: Protocol error (Page.printToPDF): Printing failed
    at Promise (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Connection.js:183:56)
    at new Promise (<anonymous>)
    at CDPSession.send (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Connection.js:182:12)
    at Page.pdf (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Page.js:1004:39)
    at Page.<anonymous> (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\helper.js:112:23)
    at Promise.all.a.map (file:///C:/Users/BrandonBeecher/AppData/Local/Programs/vision-builder-dev/resources/app.asar/dist/renderer.prod.js:1:2108069)
    at process._tickCallback (internal/process/next_tick.js:68:7)
[2023-06-06 10:27:12.985] [error] Error: Protocol error (Page.printToPDF): Printing failed
    at Promise (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Connection.js:183:56)
    at new Promise (<anonymous>)
    at CDPSession.send (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Connection.js:182:12)
    at Page.pdf (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Page.js:1004:39)
    at Page.<anonymous> (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\helper.js:112:23)
    at Promise.all.a.map (file:///C:/Users/BrandonBeecher/AppData/Local/Programs/vision-builder-dev/resources/app.asar/dist/renderer.prod.js:1:2108069)
    at process._tickCallback (internal/process/next_tick.js:68:7)
[2023-06-06 10:27:12.989] [error] Error: Protocol error (Page.printToPDF): Printing failed
    at Promise (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Connection.js:183:56)
    at new Promise (<anonymous>)
    at CDPSession.send (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Connection.js:182:12)
    at Page.pdf (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\Page.js:1004:39)
    at Page.<anonymous> (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\puppeteer-core\lib\helper.js:112:23)
    at Promise.all.a.map (file:///C:/Users/BrandonBeecher/AppData/Local/Programs/vision-builder-dev/resources/app.asar/dist/renderer.prod.js:1:2108069)
    at process._tickCallback (internal/process/next_tick.js:68:7)
[2023-06-06 10:27:13.015] [error] Error: No data
    at fme (file:///C:/Users/BrandonBeecher/AppData/Local/Programs/vision-builder-dev/resources/app.asar/dist/renderer.prod.js:1:1878782)
    at jme (file:///C:/Users/BrandonBeecher/AppData/Local/Programs/vision-builder-dev/resources/app.asar/dist/renderer.prod.js:1:1882563)
    at renderWithHooks (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:12938:18)
    at updateFunctionComponent (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:14627:20)
    at beginWork (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:15637:16)
    at performUnitOfWork (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:19312:12)
    at workLoop (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:19352:24)
    at renderRoot (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:19435:7)
    at performWorkOnRoot (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:20342:7)
    at performWork (C:\Users\BrandonBeecher\AppData\Local\Programs\vision-builder-dev\resources\app.asar\node_modules\react-dom\cjs\react-dom.development.js:20254:7)
marck27g commented 1 year ago

Adding html contnet to hopefully help reproduce:

<html>
    <body>
        <div name="net_worth" class="page-container">
            <div class="report-content">
                <div class="networth">
                    <table class="title">
                        <tbody>
                            <tr class="excluded">
                                <td colspan="3"><img src="assets/images/CP_Hrz_RGB.svg" alt="logo" /></td>
                                <td align="right"><span class="report-type">Personal Balance Sheet</span></td>
                            </tr>
                            <tr style="font-size: 1.4em;">
                                <td colspan="3"></td>
                                <td align="right"><span>As of June 8, 2023</span></td>
                            </tr>
                            <tr>
                                <td colspan="4"><br /></td>
                            </tr>
                        </tbody>
                    </table>
                    <table class="report content-asset__header">
                        <thead>
                            <tr>
                                <th colspan="2"></th>
                                <th style="width: 15%; text-align: right;">Rate of Return</th>
                                <th style="width: 15%; text-align: right;">Market Value</th>
                            </tr>
                        </thead>
                    </table>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Bank Accounts</td>
                                </tr>
                                <tr>
                                    <td colspan="4" style="font-weight: bold;">Navy FCU</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name &amp; Wife's Checking Account</td>
                                    <td style="width: 15%; text-align: right;">0.00%</td>
                                    <td style="width: 15%; text-align: right;">102,342</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name &amp; Wife's Savings Account</td>
                                    <td style="width: 15%; text-align: right;">0.00%</td>
                                    <td style="width: 15%; text-align: right;">16,647</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name &amp; Wife's Savings Account</td>
                                    <td style="width: 15%; text-align: right;">0.00%</td>
                                    <td style="width: 15%; text-align: right;">5,825</td>
                                </tr>
                                <tr>
                                    <td colspan="4" style="font-weight: bold;">Bank of America</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name &amp; Wife's Checking Account</td>
                                    <td style="width: 15%; text-align: right;">0.00%</td>
                                    <td style="width: 15%; text-align: right;">40,403</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name &amp; Wife's Savings Account</td>
                                    <td style="width: 15%; text-align: right;">0.00%</td>
                                    <td style="width: 15%; text-align: right;">70,982</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">236,199</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Qualified Accounts</td>
                                </tr>
                                <tr>
                                    <td colspan="4" style="font-weight: bold;">Some Companies</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name's IRA x9101 – A BrokersNam</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">698,444</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name's Inherited IRA x4715 – A BrokersNam</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">250,166</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name's TIAA 457 Def Comp x1167 – CA State (BAA)</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">118,812</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Wife's IRA x1147 – A BrokersNam</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">26,538</td>
                                </tr>
                                <tr>
                                    <td colspan="4" style="font-weight: bold;">CEPI</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name's 401(k) – n/a (Confirm contribution amount)</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">41,382</td>
                                </tr>
                                <tr>
                                    <td colspan="4" style="font-weight: bold;">Upstate</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Name's 403(b) x1166 – TIAA CREF</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">661,195</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">1,796,537</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Taxable Investments</td>
                                </tr>
                                <tr>
                                    <td colspan="4" style="font-weight: bold;">Some Companies</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Kids Trust's Investment Account x0571 - A BrokersNam</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">171,573</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Kids Trust's Investment Account x3383 - A BrokersNam (3383; Wife's old account)</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">120,256</td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Kids Trust's Investment Account x4743 - A BrokersNam</td>
                                    <td style="width: 15%; text-align: right;">7.00%</td>
                                    <td style="width: 15%; text-align: right;">1,119,131</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">1,410,960</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <table class="report content-asset__header" style="margin-top: 10px;">
                        <thead>
                            <tr>
                                <th></th>
                                <th style="width: 15%; text-align: right;">Owner</th>
                                <th style="width: 15%; text-align: right;">Rate of Return</th>
                                <th style="width: 15%; text-align: right;">Market Value</th>
                            </tr>
                        </thead>
                    </table>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Real Estate</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;18 FakeSt Drive E</td>
                                    <td style="text-align: right; white-space: nowrap;">Kids Trust</td>
                                    <td style="width: 15%; text-align: right;">--</td>
                                    <td style="width: 15%; text-align: right;">200,000</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;Cottage</td>
                                    <td style="text-align: right; white-space: nowrap;">Kids Trust</td>
                                    <td style="width: 15%; text-align: right;">--</td>
                                    <td style="width: 15%; text-align: right;">550,000</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">1,450,000</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Personal Property</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;2016 Mazda MX3</td>
                                    <td style="text-align: right; white-space: nowrap;">Name &amp; Wife</td>
                                    <td style="width: 15%; text-align: right;">--</td>
                                    <td style="width: 15%; text-align: right;">15,000</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;2017 Toyota Tacoma</td>
                                    <td style="text-align: right; white-space: nowrap;">Name &amp; Wife</td>
                                    <td style="width: 15%; text-align: right;">--</td>
                                    <td style="width: 15%; text-align: right;">32,000</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;Personal Property</td>
                                    <td style="text-align: right; white-space: nowrap;">Name &amp; Wife</td>
                                    <td style="width: 15%; text-align: right;">--</td>
                                    <td style="width: 15%; text-align: right;">50,000</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">97,000</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Business Assets</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;Name Kids Consulting</td>
                                    <td style="text-align: right; white-space: nowrap;">Name</td>
                                    <td style="width: 15%; text-align: right;">0.00%</td>
                                    <td style="width: 15%; text-align: right;">1</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">1</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="page-break-auto">
                        <table class="report content__asset">
                            <tbody>
                                <tr>
                                    <td colspan="4">Life Insurance Cash Values</td>
                                </tr>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;ABCD - Universal Life x7105; 10/13/1989</td>
                                    <td style="text-align: right; white-space: nowrap;">Name</td>
                                    <td style="width: 15%; text-align: right;">--</td>
                                    <td style="width: 15%; text-align: right;">26,722</td>
                                </tr>
                                <tr>
                                    <td colspan="3"></td>
                                    <td style="text-align: right; width: 15%;">26,722</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="page-break-auto" style="margin-top: 10px;">
                        <table class="report content__total">
                            <tbody>
                                <tr>
                                    <td colspan="3" style="padding-left: 10px;">Total Assets</td>
                                    <td style="text-align: right;">$5,017,419</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <table class="report content-liability__header" style="margin-top: 25px;">
                        <thead>
                            <tr>
                                <th style="text-align: left;">Liabilities</th>
                                <th style="width: 15%; text-align: right;">Owner</th>
                                <th style="width: 15%; text-align: right;">Interest Rate</th>
                                <th style="width: 15%; text-align: right;">Current Balance</th>
                            </tr>
                        </thead>
                    </table>
                    <div class="page-break-auto">
                        <table class="report content__liability">
                            <tbody>
                                <tr>
                                    <td>&nbsp;&nbsp;&nbsp;&nbsp;Loan for 18 FAkeSt Drive E 15 year Fixed; Orig. 6/1/2021</td>
                                    <td style="text-align: right; white-space: nowrap;">Kids Trust</td>
                                    <td style="width: 15%; text-align: right;">2.125%</td>
                                    <td style="width: 15%; text-align: right;">422,045</td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div class="page-break-auto" style="margin-top: 10px;">
                        <table class="report content__total">
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                            <tbody>
                                <tr>
                                    <td colspan="3" style="padding-left: 10px;">Total Liabilities</td>
                                    <td style="text-align: right;">$422,045</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="4"></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <table class="report content__all-total" style="margin-top: 20px;">
                        <tbody>
                            <tr>
                                <td colspan="3" style="padding-left: 10px;">Total Net Worth</td>
                                <td style="text-align: right;">$4,595,374</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </body>
</html>
Lightning00Blade commented 1 year ago

Does this happen when you open the page in Chrome and try to print from there. Puppeteer calls the browser's PDF method. I tried the HTML above and it seems to work for me (I don't have the image so it's not loaded).

The code you provided has too many unknowns - what argument you are providing to launch, what CSS you are injecting, what arguments in page.pdf. Update the issue accordingly so we can investigate further.

Please also see if the issue is present with the Chrome browser Puppeteer downloads

chrisangle commented 1 year ago

Upgrade node version to v18.16.0, and check your feature again.

marck27g commented 1 year ago

When I load the page in Chome and try to print it hangs, and memory spikes but it doesn't crash. We have found a temporary work around but decreasing the margins of the page.

Not sure what this means: "Please also see if the issue is present with the Chrome browser Puppeteer downloads" But only exists with the newest Chrome release

Upgrading to 18.16 is not feasible for this application at this time.

const args = [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu', ];

const puppeteerConfig = { displayHeaderFooter: true, printBackground: true, footerTemplate, //format: 'A4', format: 'Letter', margin: { top: '1in', bottom: '1in', left: horizontalMargins, right: horizontalMargins, }, };

CSS: ` table { width: 100%; border-collapse: collapse; }

.page-break-auto { page-break-before: auto !important; }

.page-break { page-break-before: always !important; }

.chart-image { display: none; }

h1, h2, h3 { text-align: center; }

.title img[alt='logo'] { width: 300px; }

.title .report-type { font-size: 2em; }

.disclaimer { font-family: 'Surveyor Display Light' !important; }

/ ----- Net worth report & Objective ----- / .networth table { width: 100%; }

.networth table.content-asset__header thead tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; }

.networth table.content__asset tbody tr { font-family: 'Whitney Light'; }

.networth table.content__asset tbody tr:first-child { font-family: 'Whitney Semibold'; color: #165c7d; border-bottom: 1px solid #6f6f6f; height: 2em; }

.networth table.content__asset tbody tr:first-child td { padding-top: 0.5em; }

.networth table.content__asset tbody tr:last-child { font-family: 'Whitney Semibold'; border-top: 1px solid #6f6f6f; }

.networth table.content__asset tbody tr td { vertical-align: top; }

.networth table.content-liability__header thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; height: 2em; }

.networth table.content-liability__header thead tr th:first-child { text-transform: uppercase; }

.networth table.content__liability tbody tr { font-family: 'Whitney Light'; }

.networth table.content__liability tbody tr td { vertical-align: top; }

.networth table.content__total tbody tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; background-color: #efefef; }

.networth table.content__all-total tbody { font-family: 'Whitney Semibold'; background-color: #efefef; color: #165c7d; }

.networth table.content__all-total tbody tr:first-child { border-top: 1px solid #6f6f6f; }

.networth table.content__all-total tbody tr:last-child { border-bottom: 1px solid #6f6f6f; font-size: 24px; }

.networth table.content__all-total tbody tr:first-child td { padding-top: 10px; }

.networth table.content__all-total tbody tr:last-child td { padding-bottom: 10px; }

/ ----- Income Sources Timeline ----- / .income-timeline table { width: 100%; }

.income-timeline table.content thead tr { font-family: 'Whitney Book'; }

.income-timeline table.content thead tr th { padding: 0 0.5em; }

.income-timeline table.content thead tr:first-child { height: 2em; }

.income-timeline table.content thead tr:not(:first-child) { height: 4em; }

.income-timeline table.content tbody tr { font-family: 'Whitney Light'; height: 2em; }

.income-timeline table.content tbody tr td { padding: 0 0.5em; }

.income-timeline table.content tbody tr:nth-child(odd) { background: #f2f2f2; }

.income-timeline table.content thead tr:first-child th { border-top: 1px solid #6f6f6f; }

.income-timeline table.content th, .income-timeline table.content td { border-bottom: 1px solid #6f6f6f; }

.income-timeline table.content td { padding: 10px 0; }

.income-timeline table.content td.none, .income-timeline table.content th.none { background: #fff !important; border: none !important; }

/ ----- Income Applied To Objective ----- / .income-applied-objective table { width: 100%; }

.income-applied-objective p { font-family: 'Survey Display Book'; }

.income-applied-objective small { font-style: italic; }

.income-applied-objective .chart { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.income-applied-objective table.content__header { margin-top: 24px; }

.income-applied-objective table.content__header thead tr { border-bottom: 2px solid #6f6f6f; font-family: 'Whitney Book'; }

.income-applied-objective table.content__header thead tr th:first-child { font-family: 'Whitney Semibold'; }

.income-applied-objective table.content tbody tr { font-family: 'Whitney Book'; }

.income-applied-objective table.content tbody tr:not(:last-child) { border-bottom: 1px solid #6f6f6f; }

.income-applied-objective table.content tbody tr:last-child { border-bottom: 2px solid #6f6f6f; }

.income-applied-objective table.content.no-border-bottom tbody tr:not(:last-child) { border-bottom: none; }

.income-applied-objective table.content__other { font-family: 'Whitney Book'; margin-top: 24px; }

.income-applied-objective table.content__other tbody tr#surplus td:not(:last-child) { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; background: #efefef; }

.income-applied-objective table.content__other tbody tr#unmet td { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; background: #efefef; }

.income-applied-objective table.content__total tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; background-color: #efefef; height: 3em; }

.income-applied-objective li { font-weight: bold; }

/ ----- Survivor Needs Capital Analysis ----- / .survivor-needs-capital-analysis table { width: 100%; }

.survivor-needs-capital-analysis p { font-family: 'Survey Display Book'; }

.survivor-needs-capital-analysis small { font-style: italic; }

.survivor-needs-capital-analysis .chart { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.survivor-needs-capital-analysis table.contentheader th:last-child, .survivor-needs-capital-analysis table.content td:last-child, .survivor-needs-capital-analysis table.contenttotal td:last-child { border-left: 1px solid #6f6f6f; }

.survivor-needs-capital-analysis table.contentheader thead tr th:not(:first-child), .survivor-needs-capital-analysis table.content tbody tr td:not(:first-child), .survivor-needs-capital-analysis table.contenttotal tbody tr td:not(:first-child) { padding: 0 0.5em; }

.survivor-needs-capital-analysis table.content__header thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.survivor-needs-capital-analysis table.content__header thead tr th:first-child { font-family: 'Whitney Semibold'; }

.survivor-needs-capital-analysis table.content tbody tr { font-family: 'Whitney Book'; height: 2em; }

.survivor-needs-capital-analysis table.content tbody tr:first-child, .survivor-needs-capital-analysis table.content tbody tr:nth-child(2) { border-bottom: 1px solid #6f6f6f; }

.survivor-needs-capital-analysis table.content tbody tr:last-child { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.survivor-needs-capital-analysis table.content__total tbody tr { font-family: 'Whitney Book'; font-weight: bold; height: 2em; }

.survivor-needs-capital-analysis table.content__total tbody tr:last-child { border-top: 1px solid #6f6f6f; }

.survivor-needs-capital-analysis table.content__total tbody tr:last-child { background-color: #efefef; border-bottom: 1px solid #6f6f6f; height: 3em; }

/ ----- Education goals & Objective ----- / .education-goal table { width: 100%; }

.education-goal p { font-family: 'Survey Display Book'; }

.education-goal small { font-style: italic; }

.education-goal .chart { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.education-goal table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.education-goal table.content thead tr:not(:last-child) th:not(:last-child) { border-right: 1px solid #6f6f6f; }

.education-goal table.content thead tr th { padding: 0 0.5em; }

.education-goal table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.education-goal table.content tbody tr td { padding: 0 0.5em; }

.education-goal table.content thead tr:last-child th:nth-last-child(3), .education-goal table.content tbody tr:not(:last-child) td:nth-last-child(3) { border-right: 1px solid #6f6f6f; padding-right: 10px; }

.education-goal table.content tbody tr:last-child { height: 3em; font-family: 'Whitney Semibold'; }

/ ----- Asset Result Timeline ----- / .asset-timeline table { width: 100%; }

.asset-timeline table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.asset-timeline table.content thead tr th { padding: 0 0.5em; }

.asset-timeline table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.asset-timeline table.content tbody tr td { padding: 0 0.5em; }

/ ----- Capital Result Timeline ----- / .capital-timeline table { width: 100%; }

.capital-timeline table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.capital-timeline table.content thead tr th { padding: 0 0.5em; }

.capital-timeline table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.capital-timeline table.content tbody tr td { padding: 0 0.5em; }

/ ----- Capital Available Timeline ----- / .capital-available-timeline table { width: 100%; }

.capital-available-timeline table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 4em; }

.capital-available-timeline table.content thead tr th { padding: 0 0.5em; }

.capital-available-timeline table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.capital-available-timeline table.content tbody tr td { padding: 0 0.5em; }

.capital-available-timeline table.content tbody tr:nth-child(odd) { background-color: #f2f2f2; }

/ ----- Cash Flow Timeline ----- / .cashflow-timeline table { width: 100%; }

.cashflow-timeline table.content thead tr { font-family: 'Whitney Book'; }

.cashflow-timeline table.content thead tr th { padding: 0 0.5em; }

.cashflow-timeline table.content thead tr:first-child { height: 2em; }

.cashflow-timeline table.content thead tr:not(:first-child) { height: 4em; }

.cashflow-timeline table.content tbody tr { font-family: 'Whitney Light'; height: 2em; }

.cashflow-timeline table.content tbody tr td { padding: 0 0.5em; }

.cashflow-timeline table.content tbody tr:nth-child(odd) { background: #f2f2f2; }

.cashflow-timeline table.content thead tr:first-child th { border-top: 1px solid #6f6f6f; }

.cashflow-timeline table.content th, .cashflow-timeline table.content td { border-bottom: 1px solid #6f6f6f; }

.cashflow-timeline table.content td { padding: 10px 0; / text-align: right; / }

.cashflow-timeline table.content td.none, .cashflow-timeline table.content th.none { background: #fff !important; border: none !important; }

/ ----- Capital Available Details ----- / .capital-detail table { width: 100%; }

.capital-detail table.content thead tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 2em; }

.capital-detail table.content thead tr th:first-child { font-family: 'Whitney Semibold'; text-transform: uppercase; }

.capital-detail table.content tbody tr { font-family: 'Whitney Light'; }

.capital-detail table.content tbody tr:first-child { height: 2em; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; color: #165c7d; }

.capital-detail table.content tbody tr:last-child { height: 2em; border-top: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; }

.capital-detail table.content__total tbody tr { height: 2em; border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; background-color: #efefef; }

/ ----- Education Goal Timeline & Objective ----- / .education-goal-timeline table { width: 100%; }

.education-goal-timeline table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.education-goal-timeline table.content thead tr th { padding: 0 0.5em; }

.education-goal-timeline table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.education-goal-timeline table.content tbody tr td { padding: 0 0.5em; }

/ ----- Accumulation Goal Timeline ----- / .accumulation-goal-timeline table { width: 100%; }

.accumulation-goal-timeline table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.accumulation-goal-timeline table.content thead tr th { padding: 0 0.5em; }

.accumulation-goal-timeline table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.accumulation-goal-timeline table.content tbody tr td { padding: 0 0.5em; }

/ ----- Accumulation goals & Objective ----- / .accumulation-goal table { width: 100%; }

.accumulation-goal p { font-family: "Survey Display Book"; }

.accumulation-goal small { font-style: italic; }

.accumulation-goal .chart { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.accumulation-goal table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: "Whitney Book"; height: 3em; }

.accumulation-goal table.content thead tr th { padding: 0 0.5em; }

.accumulation-goal table.content thead tr:not(:last-child) th:not(:last-child) { border-right: 1px solid #6f6f6f; }

.accumulation-goal table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: "Whitney Light"; height: 2em; }

.accumulation-goal table.content tbody tr td { padding: 0 0.5em; }

.accumulation-goal table.content thead tr:last-child th:nth-last-child(3), .accumulation-goal table.content tbody tr:not(:last-child) td:nth-last-child(3) { border-right: 1px solid #6f6f6f; padding-right: 10px; }

.accumulation-goal table.content tbody tr:last-child { height: 3em; font-family: "Whitney Semibold"; }

/ ----- Assets and liabilities by owner report & Objective ----- / .assets-and-liabilities-by-owner table { width: 100%; }

.assets-and-liabilities-by-owner table.content thead tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 2em; }

.assets-and-liabilities-by-owner table.content thead tr th:first-child { font-family: 'Whitney Semibold'; text-transform: uppercase; }

.assets-and-liabilities-by-owner table.content tbody tr { font-family: 'Whitney Light'; }

.assets-and-liabilities-by-owner table.content tbody tr:first-child { border-bottom: 1px solid #6f6f6f; height: 2em; font-family: 'Whitney Semibold'; color: #165c7d; }

.assets-and-liabilities-by-owner table.content tbody tr:last-child { border-top: 1px solid #6f6f6f; height: 2em; font-family: 'Whitney Semibold'; }

.assets-and-liabilities-by-owner table.content__total tbody tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Semibold'; background-color: #efefef; }

/ Long Term Care Analysis / .long-term-care-analysis table { width: 100%; }

.long-term-care-analysis p { font-family: 'Survey Display Book'; }

.long-term-care-analysis small { font-style: italic; }

.long-term-care-analysis .chart { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.long-term-care-analysis table.content__header thead tr { border-top: 2px solid #6f6f6f; border-bottom: 2px solid #6f6f6f; font-family: 'Whitney Semibold'; height: 3em; }

.long-term-care-analysis table.content__header thead tr th:first-child { text-align: left; }

.long-term-care-analysis table.content tbody tr { font-family: 'Whitney Book'; height: 2em; }

.long-term-care-analysis table.content tbody tr { border-bottom: 1px solid #6f6f6f; }

.long-term-care-analysis table.content tbody tr.no-bottom-border { border-bottom: none; }

.long-term-care-analysis table.content__total { border-top: 2px solid #6f6f6f; border-bottom: 2px solid #6f6f6f; }

.long-term-care-analysis table.content__total tbody tr { font-family: 'Whitney Book'; font-weight: bold; height: 2em; }

.long-term-care-analysis table.content__total tbody tr td:first-child { padding-left: 10px; }

.long-term-care-analysis table.content__total tbody tr:nth-child(3) { border-top: 1px solid #6f6f6f; }

.long-term-care-analysis table.content__total tbody tr:last-child { border-top: 1px solid #6f6f6f; border-bottom: 2px solid #6f6f6f; height: 3em; background: #f1f1f1; }

.long-term-care-analysis table.content tbody tr td:not(:first-child), .long-term-care-analysis table.contenttotal tbody tr td:not(:first-child), .long-term-care-analysis table.contentheader thead tr th:not(:first-child) { text-align: right; width: 15%; }

.long-term-care-analysis table.content tbody tr td:nth-child(3), .long-term-care-analysis table.contenttotal tbody tr td:nth-child(3), .long-term-care-analysis table.contentheader thead tr th:nth-child(3) { width: 20%; padding-right: 5%; }

.long-term-care-analysis table.content tbody tr td:last-child, .long-term-care-analysis table.contenttotal tbody tr td:last-child, .long-term-care-analysis table.contentheader thead tr th:last-child { border-left: 1px solid #6f6f6f; }

.long-term-care-analysis table.content tbody tr:last-child { font-family: 'Whitney Semibold'; font-weight: bold; background: rgb(239, 239, 239); }

.long-term-care-analysis table.content__normal { margin-top: 8px; }

.long-term-care-analysis table.content__normal thead tr { border-bottom: 2px solid #6f6f6f; font-family: 'Whitney Semibold'; height: 2em; }

.long-term-care-analysis table.content__normal tbody tr { font-family: 'Whitney Book'; height: 2em; }

.long-term-care-analysis table.content__normal tbody tr:last-child { border-bottom: 2px solid #6f6f6f; }

/ ----- Long Term Disability Analysis ----- / .long-term-disability-analysis table { width: 100%; }

.long-term-disability-analysis p { font-family: 'Survey Display Book'; }

.long-term-disability-analysis small { font-style: italic; }

.long-term-disability-analysis .note { margin: 8px 0; color: red; font-size: 1.25rem; font-family: 'Whitney Book'; }

.long-term-disability-analysis .chart { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.long-term-disability-analysis table.contentheader th:last-child, .long-term-disability-analysis table.content td:last-child, .long-term-disability-analysis table.contenttotal td:last-child { border-left: 1px solid #6f6f6f; }

.long-term-disability-analysis table.contentheader thead tr th:not(:first-child), .long-term-disability-analysis table.content tbody tr td:not(:first-child), .long-term-disability-analysis table.contenttotal tbody tr td:not(:first-child) { padding: 0 0.5em; }

.long-term-disability-analysis table.content__header thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.long-term-disability-analysis table.content__header thead tr th:first-child { font-family: 'Whitney Semibold'; }

.long-term-disability-analysis table.content tbody tr { font-family: 'Whitney Book'; height: 2em; }

.long-term-disability-analysis table.content tbody tr:first-child, .long-term-disability-analysis table.content tbody tr:nth-child(2) { border-bottom: 1px solid #6f6f6f; }

.survivor-needs-capital-analysis table.content tbody tr:last-child { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; }

.long-term-disability-analysis table.content__total tbody tr { font-family: 'Whitney Book'; font-weight: bold; height: 2em; }

.long-term-disability-analysis table.content__total tbody tr:last-child { border-bottom: 1px solid #6f6f6f; }

.long-term-disability-analysis table.content__total tbody tr { background-color: #efefef; border-top: 1px solid #6f6f6f; height: 3em; }

/ ----- Social Security ----- / .social-security-result table { width: 100%; }

.social-security-result table.content__field tbody tr { font-family: 'Whitney Light'; height: 2em; }

.social-security-result .chart { font-family: 'Whitney Light'; border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; padding: 12px 0; }

.social-security-result table.content__info thead tr th { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 2em; }

.social-security-result table.content__info tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.social-security-result table.content__info tbody tr:nth-child(odd) { background-color: #f8f8f8; }

.social-security-result table.content__info tbody tr td:first-child { font-family: 'Whitney Book'; }

.social-security-result table.content thead tr { border-top: 1px solid #6f6f6f; border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.social-security-result table.content thead tr th { padding: 0 0.5em; }

.social-security-result table.content tbody tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Light'; height: 2em; }

.social-security-result table.content tbody tr td { padding: 0 0.5em; }

/ ----- Life Insurance Analysis ----- / .life-insurance-analysis table.content__header thead tr { border-bottom: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 3em; }

.life-insurance-analysis table.content__header thead tr:first-child { font-family: 'Whitney Semibold'; color: #43a5ed; }

.life-insurance-analysis table.content tbody tr { font-family: 'Whitney Book'; height: 2em; }

.life-insurance-analysis table.content__total tbody tr { border-top: 1px solid #6f6f6f; font-family: 'Whitney Book'; height: 2em; }

.life-insurance-analysis table.content__premium tbody tr { font-family: 'Whitney Book'; height: 2em; }

.life-insurance-analysis table.content__info tbody tr { font-family: 'Whitney Book'; height: 2em; }

.report-content { padding: 0 40px; display: flex; flex-direction: column; }

.page-container { padding: 60px 0; border: 1px solid gray; max-width: none; font-size: 1rem; font-family: 'Surveyor Display Light'; }

@media print {

MartinWillkomm commented 1 year ago

We are affected by a similar problem. when trying to print html to pdf via puppeteer we are getting a "Protocol error (Page.printToPDF): Printing failed" message, but only in one case. Trying to open and print same page in Desktop-Chrome 114 also crashes. I think this might be related to this bug in Chrome 114: https://bugs.chromium.org/p/chromium/issues/detail?id=1453643&q=component%3ABlink%3ELayout%3EPrinting&can=2

Lightning00Blade commented 1 year ago

@MartinWillkomm Thank you for bringing that up. It looks like there is another similar bug - https://crbug.com/1451760 That is already fixed in Canary (please verify if its still happening there if possible) and the fix will be available in 115 as well.

stale[bot] commented 1 year ago

We're marking this issue as unconfirmed because it has not had recent activity and we weren't able to confirm it yet. It will be closed if no further activity occurs within the next 30 days.

stale[bot] commented 1 year ago

We are closing this issue. If the issue still persists in the latest version of Puppeteer, please reopen the issue and update the description. We will try our best to accommodate it!