Skip to content

[Regression]: Printing broken in the Firefox PDF Viewer with debugging enabled #20847

@Snuffleupagus

Description

@Snuffleupagus

Attach (recommended) or Link to PDF file

https://github.com/mozilla/pdf.js/blob/master/test/pdfs/cmykjpeg.pdf

Web browser and its version

Firefox Nightly

Operating system and its version

Windows 11 (tested with, but shouldn't be relevant to the bug)

PDF.js version

master

Is the bug present in the latest PDF.js version?

Yes

Is a browser extension

Yes

Steps to reproduce the problem

Please note: This bug can only be reproduced in the built-in Firefox PDF Viewer.

  1. Open about:config in Firefox.
  2. Set the pdfjs.pdfBugEnabled preference to true.
  3. Open the cmykjpeg.pdf file in Firefox.
  4. Append #pdfBug=all to the URL and reload the tab.
  5. Click on the Print-button on the toolbar.

What is the expected behavior?

That the print preview displays the document, and that printing works.

What went wrong?

The print print preview shows an empty page, and the console contains:

Partitioned cookie or storage access was provided to “file:///C:/Users/Jonas/Git/pdf.js/test/pdfs/cmykjpeg.pdf#pdfBug=all” because it is loaded in the third-party context and dynamic state partitioning is enabled. debugger.mjs:190:11
Warning: Invalid absolute docBaseUrl: "file:///C:/Users/Jonas/Git/pdf.js/test/pdfs/cmykjpeg.pdf". pdf.worker.mjs:357:13
PDF 06316bb1df26984e89afa8619b8722ed [1.5 Adobe PDF library 9.90 / Adobe Illustrator CS5.1] (PDF.js: 5.5.278 [d9b81b519]) viewer.mjs:17095:13
TypeError: can't access property "width", canvas is null
    CanvasDependencyTracker resource://pdf.js/build/pdf.mjs:8652
    render resource://pdf.js/build/pdf.mjs:13843
    mozPrintCallback resource://pdf.js/web/viewer.mjs:7625
    promise callback*composePage/canvas.mozPrintCallback resource://pdf.js/web/viewer.mjs:7607
    composePage resource://pdf.js/web/viewer.mjs:7600
    layout resource://pdf.js/web/viewer.mjs:7692
    beforePrint resource://pdf.js/web/viewer.mjs:17268
    dispatch resource://pdf.js/web/viewer.mjs:1377
    dispatch resource://pdf.js/web/viewer.mjs:1434
    bindWindowEvents resource://pdf.js/web/viewer.mjs:17425
    triggerPrinting resource://pdf.js/web/viewer.mjs:17302
    dispatch resource://pdf.js/web/viewer.mjs:1377
    dispatch resource://pdf.js/web/viewer.mjs:1434
    bindListeners resource://pdf.js/web/viewer.mjs:15507
    #bindListeners resource://pdf.js/web/viewer.mjs:15505
    Toolbar resource://pdf.js/web/viewer.mjs:15439
    _initializeViewerComponents resource://pdf.js/web/viewer.mjs:16449
    initialize resource://pdf.js/web/viewer.mjs:16195
    run resource://pdf.js/web/viewer.mjs:16513
    webViewerLoad resource://pdf.js/web/viewer.mjs:18321
    <anonymous> resource://pdf.js/web/viewer.mjs:18325
viewer.mjs:7634:17
Uncaught (in promise) TypeError: can't access property "cancel", currentRenderTask is null
    mozPrintCallback resource://pdf.js/web/viewer.mjs:7637
    promise callback*composePage/canvas.mozPrintCallback resource://pdf.js/web/viewer.mjs:7627
    composePage resource://pdf.js/web/viewer.mjs:7600
    layout resource://pdf.js/web/viewer.mjs:7692
    beforePrint resource://pdf.js/web/viewer.mjs:17268
    dispatch resource://pdf.js/web/viewer.mjs:1377
    dispatch resource://pdf.js/web/viewer.mjs:1434
    bindWindowEvents resource://pdf.js/web/viewer.mjs:17425
    triggerPrinting resource://pdf.js/web/viewer.mjs:17302
    dispatch resource://pdf.js/web/viewer.mjs:1377
    dispatch resource://pdf.js/web/viewer.mjs:1434
    bindListeners resource://pdf.js/web/viewer.mjs:15507
    #bindListeners resource://pdf.js/web/viewer.mjs:15505
    Toolbar resource://pdf.js/web/viewer.mjs:15439
    _initializeViewerComponents resource://pdf.js/web/viewer.mjs:16449
    initialize resource://pdf.js/web/viewer.mjs:16195
    run resource://pdf.js/web/viewer.mjs:16513
    webViewerLoad resource://pdf.js/web/viewer.mjs:18321
    <anonymous> resource://pdf.js/web/viewer.mjs:18325
viewer.mjs:7637:9
Uncaught (in promise) TypeError: can't access property Symbol.iterator, intentState.renderTasks is undefined
    _renderPageChunk resource://pdf.js/build/pdf.mjs:13986
    pump resource://pdf.js/build/pdf.mjs:14026
    promise callback*pump resource://pdf.js/build/pdf.mjs:14015
    _pumpOperatorList resource://pdf.js/build/pdf.mjs:14049
    render resource://pdf.js/build/pdf.mjs:13800
    mozPrintCallback resource://pdf.js/web/viewer.mjs:7625
    promise callback*composePage/canvas.mozPrintCallback resource://pdf.js/web/viewer.mjs:7607
    composePage resource://pdf.js/web/viewer.mjs:7600
    layout resource://pdf.js/web/viewer.mjs:7692
    beforePrint resource://pdf.js/web/viewer.mjs:17268
    dispatch resource://pdf.js/web/viewer.mjs:1377
    dispatch resource://pdf.js/web/viewer.mjs:1434
    bindWindowEvents resource://pdf.js/web/viewer.mjs:17425
    triggerPrinting resource://pdf.js/web/viewer.mjs:17302
    dispatch resource://pdf.js/web/viewer.mjs:1377
    dispatch resource://pdf.js/web/viewer.mjs:1434
    bindListeners resource://pdf.js/web/viewer.mjs:15507
    #bindListeners resource://pdf.js/web/viewer.mjs:15505
    Toolbar resource://pdf.js/web/viewer.mjs:15439
    _initializeViewerComponents resource://pdf.js/web/viewer.mjs:16449
    initialize resource://pdf.js/web/viewer.mjs:16195
    run resource://pdf.js/web/viewer.mjs:16513
    webViewerLoad resource://pdf.js/web/viewer.mjs:18321
    <anonymous> resource://pdf.js/web/viewer.mjs:18325
pdf.mjs:13986:38

Link to a viewer

No response

Additional context

Mozregression points to https://hg-edge.mozilla.org/integration/autoland/pushloghtml?fromchange=4e9a371e2475bea317d2fd82fa8f801538bfe881&tochange=1a8fc8c7e38e93b3eccf3f344eb86477a38e584c and looking at the changelog in https://bugzilla.mozilla.org/show_bug.cgi?id=1985111#c0 combined with the error messages (see above) I'd guess that PR #19043 regressed this.

Given that debugging isn't enabled by default the impact of this should be limited, however this should still be fixed since printing ought to work even with the debugging tools active in Firefox.

/cc @nicolo-ribaudo Can you please take a look?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions