Question

I have successfully implemented PDFKit into my Rails application. But my application is mostly client side. I have lots of javascript widgets and it takes around 3 seconds for all of them to load. When I generate the pdf I can see some of the widgets have loaded, some are in the process of loading, and others have not loaded at all.

Is there some way to work around this? It doesn't have to be too fancy. If I can delay the PDF generation for 5 seconds, until the page has completed loaded, that's fine.

Was it helpful?

Solution

PDFKit uses wkhtmltopdf to generate the pdfs based on a webkit render of the page. There is a --javascript-delay params that looks like it could be used to delay the generation for the client side to finish.

Try this in pdfkit.rb

config.default_options = {
  :javascript_delay => 5000
} 

OTHER TIPS

You can tell pdfkit to wait until window.status JS variable gets a specific value.

PDFKit.new(
  ...,
  window_status: 'ready',
  ...
)

Thus within your javascript you can flag for PDFKit it's time to generate PDF by doing:

window.status = 'ready'

Simple as this :D

Not waiting more than needed. Not risking generating PDF before wished.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top