Printable to PDF App - Proper way of doing it?

Continuing the discussion from How does the Print PDF button works in vanguard report?:

I am hoping for a more general discussion on the different ways to achieve a Printable App. These are my main points:

  1. Plotly figures in dcc.Graph() do not print to PDF as they appear in the browser. In my case I have several figures with default styling which after printing to PDF appear with visible gridlines - What creates the different styling of the plots for display in the browser and plot to PDF when everything is default? How to force the same styling?

  2. Do we have to use Java Script to achieve the functionality of the Print button in the Vanguard report? Can’t this be achieved through the app e.g. using callbacks? What is the proper way of doing this if we simply want same browser and print styling and layout?