使用官员将图像添加到文本框中

问题描述

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

enter image description here

这些都是文本框,我可以替换所有文本,例如StudentName,注册号等,但是不知道如何在名为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')

这些方法包括注释掉的方法)都没有给我想要的结果。那么,如何在文本框picture中插入图片

模板可用here

解决方法

当您更改模板时,它可以工作。您需要

  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")
,

我尝试了一下,但是没用(只是在这里分享我的发现,因为他们发表评论的时间太长了,也许对您有帮助)

我的实际结论是,这可能根本不起作用,officer软件包也不支持。

在您共享的示例中,我手动添加了“图片”,因为它在屏幕截图中(但在单词示例中缺失)。但是,即使进行了这种简化(更易于设置光标),它仍然无法正常工作。

我尝试了body_add_imgslip_in_imgbody_replace_img_at_bkmbody_add.external_imgbody_replace_text_at_bkmcursor_reach('picture'),{{1}的几种组合},cursor_forward个电话。 (以及其他一些粗暴的努力)

它什么都不做,或者大多数情况下只是没有将图像放在文本框中。

设置光标似乎可行。通常,添加图像也不是问题。用文本框中的另一个文本替换文本没有问题。但是,以某种方式将图像添加到右侧的此特定文本框中似乎是不可能的。

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