Mutliple отформатированный текст на pptx с использованием пакета Officer на R - PullRequest
0 голосов
/ 31 января 2019

Ciao,

Я пишу код для создания автоматического отчета с использованием пакета офицера.Мне было интересно, как и если я могу написать текст с другим шрифтом.В моем случае я хотел бы написать обычный текст и несколько смелых слов.

Давай покажем, что я получу.Я использую эти функции для генерации объектов fp_text:

fp_normal <- function(){
return( fp_text(color = "black", font.size = 16,
        bold = FALSE, italic = FALSE,
        underlined = FALSE, font.family = "Arial", 
        shading.color = "transparent") )
}


fp_bold <- function(){
return( fp_text(color = "black", font.size = 16,
        bold = TRUE, italic = FALSE,
        underlined = FALSE, font.family = "Arial", 
        shading.color = "transparent") )
}

Я использовал комбинацию функции pot , используя оператор сумм и функцию textProperties :

pot("not bold ") + pot("and bold", textProperties(font.weight = "bold") )

Мой вопрос: как мне объединить функции fp_normal и fp_bold с функцией ph_with_text ?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я обновил пакет, чтобы упростить эту операцию.Использовать id_chr непросто, и приведенный ниже код дает преимущество не использовать его:)

library(magrittr)
library(officer)

fp_normal <- fp_text(font.size = 24)
fp_bold <- update(fp_normal, bold = TRUE)
fp_redbold <- update(fp_normal, color = "red")

pars <- block_list(
  fpar(ftext("not bold ", fp_normal), ftext("and bold", fp_bold)),
  fpar(ftext("red bold text", fp_redbold))
)
my_pres <- read_pptx() %>%
  add_slide(layout = "Title and Content", master = "Office Theme") %>%
  ph_with(pars, location = ph_location_type(type = "body") ) 

print(my_pres, target = "test.pptx")

result

0 голосов
/ 01 февраля 2019

Хорошо, в конце я думаю, что у меня это есть.

Чтобы применить разные стили, достаточно объединить функцию ph_with_text с функцией ph_add_text .

А именно ph_add_text делает то же самое, что и оператор суммы для функции pot .Помните, что для ссылки на определенную строку необходимо указать аргумент id_chr .Вы можете определить правильное значение, используя команду slide_summary (ppt) сразу после запуска ph_with_text .

ppt <- read_pptx()
ppt <- add_slide(ppt, "Title and Content", master = "Office Theme")
ppt <- ph_with_text(ppt, "Some NOT bold text ", type = "body", index = 1)

slide_summary(ppt) # I see that the id is 2. Now I can delete this line.

ppt <- ph_add_text(ppt, "and some bold text", type = "body", style = fp_bold(), id_chr = 2)
print(ppt, target = "boldTest.pptx")

Для fp_bold () Функция см. выше в вопросе.К этому моменту мы можем добавлять другие фрагменты текста в разных форматах, продолжая использовать ph_add_text (и, возможно, "\ n", если мы хотим писать в новых строках.

Ciao

...