无法在R中将kableExtra表格保存为PNG格式的问题求助
问题:kableExtra导出PNG失败,OpenSSL相关依赖错误
我在R Markdown中编写代码,试图将kableExtra生成的表格导出为PNG格式以插入Word文档(直接编织为Word文件不可行),但执行保存操作时失败。
代码示例
library(kableExtra) library(magrittr) filtering <- data.frame( "1" = c("Yes", "Yes", "Yes"), "2" = c("Yes", "Yes", "Yes"), "3" = c("14-28 days", "28-84 days", ">84 days"), "4" = c("No/I don't know", "No/I don't know", "No/I don't know"), "5" = c("Valid", "Valid", "Valid"), "6" = c("Yes", "Yes", "Yes"), "7" = c("Yes", "Yes", "Yes") ) filtering %>% kbl(align = "l", escape = F) %>% kable_classic(full_width = F, html_font = "Times New Roman") %>% row_spec(0, background = "#B2DACC") %>% save_kable(file = "Variables.png")
错误信息
Auto configuration failed 140507277977536:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libproviders.so): libproviders.so: cannot open shared object file: No such file or directory 140507277977536:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244: 140507277977536:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=providers, path=providers 140507277977536:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=providers Error in webshot::webshot(file_temp_html, file, ...) : webshot.js returned failure value: 1
当前使用的包版本
packageVersion("webshot") [1] ‘0.5.4’ packageVersion("kableExtra") [1] ‘1.3.4’
解决建议
1. 修复系统OpenSSL依赖
错误提示找不到libproviders.so,这是OpenSSL的核心库文件,需要确保系统已正确安装OpenSSL开发包:
- Debian/Ubuntu系统:
sudo apt-get update && sudo apt-get install libssl-dev - CentOS/RHEL系统:
sudo yum install openssl-devel
2. 重新安装webshot包
卸载并重新安装webshot,确保编译时链接正确的OpenSSL库:
remove.packages("webshot") install.packages("webshot")
3. 替换为webshot2(推荐)
webshot已停止维护,webshot2是官方替代版本,兼容性更好:
install.packages("webshot2") # 修改代码,指定使用webshot2导出 filtering %>% kbl(align = "l", escape = F) %>% kable_classic(full_width = F, html_font = "Times New Roman") %>% row_spec(0, background = "#B2DACC") %>% save_kable(file = "Variables.png", webshot = "webshot2")
4. 手动指定OpenSSL配置路径
如果系统已安装OpenSSL但R无法识别,可手动指定配置文件路径:
# 根据系统实际路径调整,常见路径为/etc/ssl/openssl.cnf Sys.setenv(OPENSSL_CONF = "/etc/ssl/openssl.cnf")
内容的提问来源于stack exchange,提问作者cristi
相关产品推荐
相关产品推荐

