使用 officer 将图像添加到文本框

Adding image to text box using officer

我正在考虑使用 officer 包将图像添加到 word 文档。 Word 文档模板如下所示:

这些都是文本框,我可以替换所有文本,例如 StudentName、Enrollment number 等,但不知道如何将图像添加到名为 picture 的文本框。这是我试过的:

my_doc <- read_docx('templates/form_101.docx') %>% 
  body_replace_all_text('Coursename', 'NTCC 01') %>% 
  body_replace_all_text('XXX', 'III') %>% 
  body_replace_all_text('FromDate', '26 Oct') %>% 
  body_replace_all_text('ToDate', '02 Nov 20') %>% 
  body_replace_all_text('StudentName', 'Dhiraj Khanna') %>% 
  body_replace_all_text('12345', '51511-W') %>% 
  body_replace_all_text('ABC', 'A') %>% 
  cursor_reach('picture') %>% 
  # cursor_reach('picture') %>% 
  # body_remove()
  # body_bookmark('picture') %>%
  # body_replace_img_at_bkm('picture',
  #                         value = external_img(src = 'data/images/pic1.png', 
  #                                              width = .2, height = .2))
  body_add_img(src = 'data/images/pic1.png', width = .2, height = .2,
               pos = 'on')

print(my_doc, target = 'templates/output.docx')

None 这些方法(包括注释掉的方法)给了我想要的结果。那么如何在文本框中插入图像 picture.

模板可用here

我尝试了一下,但无法正常工作(只是在这里分享我的发现,因为评论太长了,也许它们对你有帮助)

我的实际结论是,这可能根本行不通并且不受 officer 包的支持。

在您分享的示例中,我手动添加了 'picture',因为它在您的屏幕截图中(但在您的单词示例中缺失)。但即使进行了这种简化(更容易设置光标),它也不起作用。

我尝试了 body_add_imgslip_in_imgbody_replace_img_at_bkmbody_add.external_imgbody_replace_text_at_bkmcursor_reach('picture')、[= 的几种组合17=], cursor_backward 来电。 (以及其他一些相当粗糙的努力)

它要么什么都不做,要么大部分时间只是没有将图像放入文本框中。

设置光标似乎有效。通常添加图像也不是问题。用文本框中的另一个文本替换一个文本是没有问题的。但是向右侧的这个特定文本框添加图像似乎是不可能的。

当我将光标放在文本框中并尝试在其中添加图像时,无论我尝试了什么,它总是添加在文本框之前或之后。

当您更改模板时它会起作用。你需要

  1. 在您想要图像的位置创建一个新的文本字段
  2. 将图像 放在 文本字段中,使用“与文本一致”的位置
  3. 在图像上放置一个书签(在我的示例中称为“图片”)

我上传了一个正确修改过的文件 here

然后您可以按如下方式使用函数 body_replace_img_at_bkm()

library(officer)
library(magrittr)

my_doc <- read_docx('form_101.docx')

my_doc %>%
  body_replace_img_at_bkm("picture",
                          external_img("im02.png", width = .9, height = .9)) %>%
  print("new_form.docx")