在R Quarto中使用kableExtra的save_kable保存PNG时报错
问题详情
我在Quarto报告中尝试用kableExtra生成表格并保存为PNG文件,用了save_kable帮助文档里的示例代码:
kable(mtcars[1:5, ], "html") %>% kable_styling("striped") %>% row_spec(1, color = "red") %>% save_kable('test.png')
但运行后抛出错误:
Error: rsession-utf8.exe: GeometryDoesNotContainImage `C:\test.png' @ warning/attribute.c/GetImageBoundingBox/534
我的环境配置:
- R版本:4.4.0(2024-04-24 ucrt)
- 运行环境:RStudio
- 依赖包版本:kableextra 1.4、chromote 0.3.1、webshot 0.5.5、webshot2 0.1.1
可行解决方案
指定完整路径并确认目录存在
这个错误常和路径权限或目标目录不存在有关。先确保输出目录存在,再用完整路径保存:
# 创建输出目录(若不存在) dir.create("table_output", showWarnings = FALSE) # 用完整路径生成文件 kable(mtcars[1:5, ], "html") %>% kable_styling("striped") %>% row_spec(1, color = "red") %>% save_kable(file.path(getwd(), "table_output", "test.png"))
强制使用webshot2引擎
save_kable默认可能调用旧版webshot,切换到webshot2能解决不少渲染兼容性问题:
kable(mtcars[1:5, ], "html") %>% kable_styling("striped") %>% row_spec(1, color = "red") %>% save_kable('test.png', engine = "webshot2")
更新chromote包
chromote版本过低可能导致渲染异常,更新到最新版试试:
install.packages("chromote")
手动设置输出尺寸
如果表格渲染后尺寸过小,也会触发该错误,手动指定宽高:
kable(mtcars[1:5, ], "html") %>% kable_styling("striped") %>% row_spec(1, color = "red") %>% save_kable('test.png', width = 800, height = 400)
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

