【问题标题】:Adding image to text box using officer使用官员将图像添加到文本框
【发布时间】:2021-01-20 11:53:34
【问题描述】:

我正在考虑使用 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')

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

模板可用here

【问题讨论】:

  • 想把模板文件放在我们可以访问的地方吗?我会看看我能做什么。
  • @BrianLang 谢谢,已添加到模板文件的链接
  • 在您提供的模板中,我没有在框中找到“图片”文字:它似乎是空的。
  • 我自己添加了“图片”并试了一下。 (因为这样设置光标更容易)。尽管如此,我还是无法做到这一点......到处都有图像......只是不在文本框中xD经过我的尝试,我现在很想知道,如果有人真的能够得到这个运行:)(或者如果它不被支持)
  • 是否可以更改模板?我认为您可以添加一个虚拟图像而不是文本框,然后使用body_replace_img_at_bkm

标签: r officer


【解决方案1】:

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

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

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

我尝试了body_add_imgslip_in_imgbody_replace_img_at_bkmbody_add.external_imgbody_replace_text_at_bkmcursor_reach('picture')cursor_forwardcursor_backward 调用的几种组合。 (以及其他一些相当粗略的努力)

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

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

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

【讨论】:

  • 感谢您的尝试。这正是我也尝试过的。我确实对body_replace_img_at_bkm 抱有希望
  • 你有没有尝试过接近成功的'body_replace_img_at_bkm'?也许这可能是我另一次尝试的起点。我个人尝试使用“body_replace_img_at_bkm”的所有组合看起来都不太乐观。与我的其他尝试相比,结果的唯一区别是有时文本框会完全消失。
【解决方案2】:

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

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

【讨论】:

  • 看起来很完美。就一个问题。如何在图像上放置书签?这需要在 Word 中完成吗?
  • 好的,我知道了。非常感谢!
  • 太棒了! :) 供日后参考:bookmatrk 需要用word 插入;点击图片,然后在“插入”功能区中选择“书签”。
猜你喜欢
  • 1970-01-01
  • 2017-12-12
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
相关资源
最近更新 更多