在R中,如何在任意位置向Powerpoint添加文本以便继承样式?

时间:2017-07-13 18:13:11

标签: r powerpoint officer

R官员包非常擅长将文本插入powerpoint卡片组中的现有占位符。例如,这段代码:

library(tidyverse)
library(officer)

pres <- (read_pptx()
  %>% add_slide(layout = "Title and Content", master = "Office Theme")
  %>% ph_with_text(type="body", str="placeholder")
  %>% ph_add_par(level=2)
  %>% ph_add_text("Foo")
  %>% ph_add_par(level=3)
  %>% ph_add_text("Bar")
  %>% ph_add_par(level=4)
  %>% ph_add_text("Baz")
  %>% print(target="bullet_example1.pptx"))

生成带有子弹的powerpoint like this。但是,它似乎在任意位置插入文本,我必须使用这样的ph_empty_at()函数:

pres <- (read_pptx()
  %>% add_slide(layout = "Title and Content", master = "Office Theme")
  %>% ph_empty_at(left=2, top=2, width=5, height=5)
  %>% ph_add_par(level=1)
  %>% ph_add_text("Placeholder")
  %>% ph_add_par(level=2)
  %>% ph_add_text("Foo")
  %>% ph_add_par(level=3)
  %>% ph_add_text("Bar")
  %>% ph_add_par(level=4)
  %>% ph_add_text("Baz")
  %>% print(target="bullet_example2.pptx"))

然而,这导致文本看起来very different并且不尊重level参数。看来文本没有继承幻灯片中的样式。

我问,因为我需要使用预先指定的PPT模板。我可以使用现有占位符来完成此操作,并获得所需的输出。如何在幻灯片的任意位置插入这样的格式化文本?

1 个答案:

答案 0 :(得分:0)

您好使用layout =“Blank”似乎可以正常工作

pres <- (read_pptx()
     %>% add_slide(layout = "Blank", master = "Office Theme")
     %>% ph_empty_at(left=0, top=0, width=5, height=5)
     %>% ph_add_par(level=1)
     %>% ph_add_text("Placeholder")
     %>% ph_add_par(level=2)
     %>% ph_add_text("Foo")
     %>% ph_add_par(level=3)
     %>% ph_add_text("Bar")
     %>% ph_add_par(level=4)
     %>% ph_add_text("Baz")
     %>% ph_empty_at(left=5, top=5, width=5, height=5)
     %>% ph_add_par(level=1, id_chr = 3)
     %>% ph_add_text("Placeholder", id_chr = 3)
     %>% ph_add_par(level=2, id_chr = 3)
     %>% ph_add_text("Foo", id_chr = 3)
     %>% ph_add_par(level=3, id_chr = 3)
     %>% ph_add_text("Bar", id_chr = 3)
     %>% ph_add_par(level=4, id_chr = 3)
     %>% ph_add_text("Baz", id_chr = 3)
     %>% print(target="bullet_example2.pptx")
     )