R officer包生成pptx默认标题幻灯片占位符文本残留问题求解
问题原因
你使用的PPT模板文件默认自带第一张标题幻灯片,其中的占位符预设了提示文本,officer包的ph_with()方法默认是在占位符原有内容基础上追加内容,而非直接覆盖,所以会出现原有占位符文本和新增内容混杂的情况。
解决方案
提供两种常用的解决方法,可根据使用习惯选择:
方法1:删除默认幻灯片后新建标题页
先删掉模板自带的第一张默认幻灯片,主动新建符合版式要求的标题幻灯片,从根源上避免原有占位符内容的干扰:
library(officer) my_pres <- read_pptx(path = file_template) # 删除默认的第一张幻灯片 my_pres <- remove_slide(my_pres, index = 1) # 新建标题版式的幻灯片,layout和master参数可通过layout_summary(my_pres)查询模板对应值调整 my_pres <- add_slide(my_pres, layout = "标题幻灯片", master = "Office 主题") # 后续添加自定义内容的逻辑不变 my_pres <- ph_with( my_pres, value = '程序化演示文稿', location = ph_location_type(type = "ctrTitle") ) my_pres <- ph_with( my_pres, value = 'Joseph Powers', location = ph_location_type(type = "subTitle") )
方法2:清空现有占位符内容后添加
不想删除默认幻灯片的情况下,可先用ph_empty()清空对应占位符的原有内容,再添加自定义内容:
library(officer) my_pres <- read_pptx(path = file_template) # 先清空主标题、副标题占位符的原有内容 my_pres <- ph_empty(my_pres, location = ph_location_type(type = "ctrTitle")) my_pres <- ph_empty(my_pres, location = ph_location_type(type = "subTitle")) # 再添加自定义内容 my_pres <- ph_with( my_pres, value = '程序化演示文稿', location = ph_location_type(type = "ctrTitle") ) my_pres <- ph_with( my_pres, value = 'Joseph Powers', location = ph_location_type(type = "subTitle") )
补充说明
如果运行时提示版式不存在,可执行layout_summary(my_pres)查看当前使用模板的所有可用版式、对应母版名称,调整add_slide()的参数即可。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

