使用 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_img
、slip_in_img
、body_replace_img_at_bkm
、body_add.external_img
、body_replace_text_at_bkm
与 cursor_reach('picture')
、[= 的几种组合17=], cursor_backward
来电。 (以及其他一些相当粗糙的努力)
它要么什么都不做,要么大部分时间只是没有将图像放入文本框中。
设置光标似乎有效。通常添加图像也不是问题。用文本框中的另一个文本替换一个文本是没有问题的。但是向右侧的这个特定文本框添加图像似乎是不可能的。
当我将光标放在文本框中并尝试在其中添加图像时,无论我尝试了什么,它总是添加在文本框之前或之后。
当您更改模板时它会起作用。你需要
- 在您想要图像的位置创建一个新的文本字段
- 将图像 放在 文本字段中,使用“与文本一致”的位置
- 在图像上放置一个书签(在我的示例中称为“图片”)
我上传了一个正确修改过的文件 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
包将图像添加到 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_img
、slip_in_img
、body_replace_img_at_bkm
、body_add.external_img
、body_replace_text_at_bkm
与 cursor_reach('picture')
、[= 的几种组合17=], cursor_backward
来电。 (以及其他一些相当粗糙的努力)
它要么什么都不做,要么大部分时间只是没有将图像放入文本框中。
设置光标似乎有效。通常添加图像也不是问题。用文本框中的另一个文本替换一个文本是没有问题的。但是向右侧的这个特定文本框添加图像似乎是不可能的。
当我将光标放在文本框中并尝试在其中添加图像时,无论我尝试了什么,它总是添加在文本框之前或之后。
当您更改模板时它会起作用。你需要
- 在您想要图像的位置创建一个新的文本字段
- 将图像 放在 文本字段中,使用“与文本一致”的位置
- 在图像上放置一个书签(在我的示例中称为“图片”)
我上传了一个正确修改过的文件 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")