鱼C论坛

 找回密码
 立即注册
查看: 1779|回复: 1

[已解决]wkhtmltopdf的options这么写,格式对吗?

[复制链接]
发表于 2023-5-23 22:24:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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',
}

最佳答案
2023-5-23 22:26:48
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 已经定义为一个这样的字典。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-23 22:26:48 | 显示全部楼层    本楼为最佳答案   
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 已经定义为一个这样的字典。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 01:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表