|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.网上有不同写法,比如debug-javascript , 'no-stop-slow-scripts', 到底哪种写法对呢?
2. 'window-status'是说如果页面java执行完后,等标志出现再转pdf。 但我的javascript执行后,没有明显固定标记啊,怎么弄?
wkhtmltopdf_options = {
'page-size': 'A4',
'encoding': "UTF-8",
'debug-javascript': None,
'javascript-delay': 100000000,
'no-stop-slow-scripts': "true",
'load-media-error-handling': 'ignore',
'load-error-handling': 'ignore',
'window-status': 'ready_to_print',
'enable-local-file-access': None
}
下面是网上的另一种写法
options = {
'custom-header': headers,
'debug-javascript': [''],
'javascript-delay': 10000,
'no-stop-slow-scripts': "",
'load-media-error-handling': 'abort',
}
1. 在wkhtmltopdf的options中,'debug-javascript' 和 'no-stop-slow-scripts' 都是有效选项。不过,你需要注意的是,它们的值不需要是字符串。
· 对于 'debug-javascript',这是一个布尔选项,当这个选项启用(即值为True)时,会输出关于javascript执行的调试信息。如果你不需要这些信息,可以将它设置为None或False。
· 对于 'no-stop-slow-scripts',这也是一个布尔选项,当启用时(即值为True),它将阻止wkhtmltopdf停止执行认为运行得太慢的JavaScript。你也可以将它设置为None或False来禁用这个选项。
2. 关于 'window-status' 这个选项,它会等待JavaScript将窗口的状态设置为特定的字符串(在你的例子中是'ready_to_print')然后开始渲染PDF。如果你的JavaScript执行后没有明显的固定标记,那么你需要在JavaScript代码中设置一个。例如,你可以在你的JavaScript代码执行完毕后,执行 window.status = 'ready_to_print'; 。如果你无法修改JavaScript代码,那么你可能需要移除此选项,不过这可能会导致在JavaScript代码执行完之前开始渲染PDF。
所以你的wkhtmltopdf options应该像这样:
wkhtmltopdf_options = {
'page-size': 'A4',
'encoding': "UTF-8",
'debug-javascript': True, # 如果不需要调试信息,可以设置为False
'javascript-delay': 100000000,
'no-stop-slow-scripts': True, # 如果不需要此选项,可以设置为False
'load-media-error-handling': 'ignore',
'load-error-handling': 'ignore',
'window-status': 'ready_to_print', # 如果无法设置状态,可能需要移除此选项
'enable-local-file-access': True # 如果不需要访问本地文件,可以设置为False
}
在你的第二个例子中,这也是有效的,只是它设置的选项和值可能与你的需求不同。记住, custom-header 需要一个字典,例如: {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)'} ,而不是一个变量 headers ,除非 headers 已经定义为一个这样的字典。
|
|