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

如何使用officer包在Word文档中并排显示3张图片?

实现图片并排显示的两种修改方案

原代码中每次调用body_add_img()并设置pos="after"时,会将每张图片作为独立段落插入Word文档,段落默认自动换行,因此图片会上下堆叠。要实现并排显示,可采用以下两种方案:

方案一:使用内联段落元素

将所有图片作为同一段落的内联元素添加,这样图片会像文字一样在同一行排列:

library(officer)
doc <- read_docx()
f1 = f2 = f3 = system.file("ex/elev.tif", package="terra") 

# 生成图片元素列表
img_elements <- lapply(c(f1, f2, f3), function(img_path) {
  external_img(src = img_path, width = 3, height = 3)
})

# 将所有图片元素加入同一个段落,插入文档
doc <- body_add_fpar(doc, fpar(!!!img_elements), pos = "after")

print(doc, target = "graphics/testLayout.docx")

原理说明

external_img()创建可嵌入段落的图片对象,fpar()将多个图片元素组合成一个段落,最终插入的段落内所有图片会横向排列,不会自动换行。

方案二:使用表格布局

通过创建一行多列的表格,将图片分别放入不同单元格,利用表格的行布局实现并排,适合需要精确控制图片间距、对齐方式的场景:

library(officer)
doc <- read_docx()
f1 = f2 = f3 = system.file("ex/elev.tif", package="terra") 

# 创建一行三列的空表格,设置无边框(可选)
doc <- body_add_table(doc, value = data.frame(col1 = "", col2 = "", col3 = ""), 
                      style = "table_template")

# 为每个单元格替换为图片
doc <- body_replace_img_at_bkm(doc, bookmark = "col1", src = f1, width = 3, height = 3)
doc <- body_replace_img_at_bkm(doc, bookmark = "col2", src = f2, width = 3, height = 3)
doc <- body_replace_img_at_bkm(doc, bookmark = "col3", src = f3, width = 3, height = 3)

# 移除表格边框(可选,让图片看起来无缝并排)
doc <- doc %>% 
  table_style(style = "table_template",
              pr_c = fp_cell(border = fp_border(width = 0)))

print(doc, target = "graphics/testLayout.docx")

原理说明

表格的同一行单元格默认横向排列,将图片放入不同单元格即可实现并排,通过调整表格样式可隐藏边框、设置单元格内边距,优化显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:40