如何在Foundry Code Workbook中用R导出.pdf或.png格式表格?
在Foundry Code Workbook中用R的gt包导出PNG/PDF格式表格的解决方案
问题描述
在Foundry Code Workbook中使用R语言及gt包创建格式化表格时,仅能成功保存为.html格式,将文件名扩展名改为.png或.pdf后无法运行。现有代码示例如下:
table <- function(metrics_national) { library(tidyverse) library(webshot) library(gt) table <- metrics_national %>% gt() %>% tab_header(title = "My table") output <- new.output() output_fs <- output$fileSystem() table %>% gtsave(filename = output_fs$get_path("table.html",'w')) return(table) }
解决方法
gt包的gtsave()函数导出PNG/PDF格式时,依赖webshot2(原webshot包已停止维护)工具渲染HTML并转换格式,但Foundry环境需要手动配置Chrome路径才能正常工作。以下是适配Foundry的修改步骤:
- 替换依赖包
将已废弃的webshot替换为webshot2,它对现代浏览器支持更完善:
# 移除library(webshot),替换为 library(webshot2)
- 配置Chrome路径
Foundry容器中预安装了Chrome,需指定其路径供webshot2调用:
# 在加载webshot2后添加配置 options(webshot2.browser = "/usr/bin/google-chrome")
- 修改导出代码
直接通过文件名扩展名指定输出格式,确保路径正确:
# 导出PNG table %>% gtsave(filename = output_fs$get_path("table.png",'w')) # 导出PDF table %>% gtsave(filename = output_fs$get_path("table.pdf",'w'))
- 完整可运行代码
table <- function(metrics_national) { library(tidyverse) library(webshot2) library(gt) # 适配Foundry环境的Chrome路径配置 options(webshot2.browser = "/usr/bin/google-chrome") table <- metrics_national %>% gt() %>% tab_header(title = "My table") output <- new.output() output_fs <- output$fileSystem() # 替换扩展名即可切换PNG/PDF格式 table %>% gtsave(filename = output_fs$get_path("table.png",'w')) return(table) }
- 额外优化建议
- 若导出PDF时出现内容截断,可通过gt的
tab_options()调整页面布局:
table <- metrics_national %>% gt() %>% tab_header(title = "My table") %>% tab_options( table.width = pct(100), page.orientation = "landscape", # 横向布局适配宽表格 page.size = "A4" )
- 确认Code Workbook环境已预装
webshot2,若未预装,需在环境配置中添加该包。
内容的提问来源于stack exchange,提问作者Sara Tavares
相关产品推荐
相关产品推荐

