You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flextable保存为图片时标题丢失及标题字体修改问题

问题1:保存图片时标题消失

在flextable 0.9.1版本中,save_as_image()默认仅导出表格主体部分,不会自动包含set_caption()添加的标题。可以通过以下两种方式解决:

  • 方法1:将标题转为表格头部行
    直接把标题作为表格的顶部行添加,确保导出时包含在内:

    i1 <- flextable(head(iris)) %>%
      add_header_lines("My table") %>%
      align(align = "center", part = "header") # 标题居中对齐
    
    save_as_image(i1, "Outputs/i1.png")
    
  • 方法2:结合ggplot导出带标题的图片
    将flextable转为栅格对象后,用ggplot添加标题并保存:

    library(ggplot2)
    
    ft_raster <- as_raster(i1)
    ggplot() +
      annotation_raster(ft_raster, xmin = 0, xmax = 1, ymin = 0, ymax = 1) +
      labs(title = "My table") +
      theme_void() +
      theme(plot.title = element_text(hjust = 0.5, size = 12))
    
    ggsave("Outputs/i1.png", width = 6, height = 4)
    
问题2:字体设置不生效

font(part = "all")仅作用于表格的body、header、footer区域,不会影响set_caption()添加的标题。需要单独为标题文本指定字体,同时确保表格部分的字体设置正确:

# 正确设置表格和标题字体
i4 <- flextable(head(iris)) %>%
  # 设置表格所有区域的字体
  font(fontname = "Noto Sans", part = "all") %>%
  # 直接在标题文本块中指定字体
  set_caption(as_paragraph(
    as_chunk("My table", props = fp_text_default(fontname = "Noto Sans", size = 12))
  ))

save_as_image(i4, "Outputs/i4.png")

如果仍不生效,检查系统中字体的完整名称(注意大小写和后缀):

# 查看已安装字体的完整名称
gdtools::list_fonts()

使用输出的完整名称替换代码中的字体名,比如"Noto Sans Regular",同时确保gdtools和ragg包为最新版本:

install.packages(c("gdtools", "ragg"))

内容的提问来源于stack exchange,提问作者Mark Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:42:21