## Simple RTF example ----
library(officer)
def_text <- fp_text_lite(color = "#006699", bold = TRUE)
center_par <- fp_par(text.align = "center", padding = 3)
doc <- rtf_doc(
normal_par = fp_par(line_spacing = 1.4, padding = 3)
)
doc <- rtf_add(
x = doc,
value = fpar(
ftext("how are you?", prop = def_text),
fp_p = fp_par(text.align = "center")
)
)
a_paragraph <- fpar(
ftext("Here is a date: ", prop = def_text),
run_word_field(field = "Date \\@ \"MMMM d yyyy\""),
fp_p = center_par
)
doc <- rtf_add(
x = doc,
value = block_list(
a_paragraph,
a_paragraph,
a_paragraph
)
)
if (require("ggplot2")) {
gg <- gg_plot <- ggplot(data = iris) +
geom_point(mapping = aes(Sepal.Length, Petal.Length))
doc <- rtf_add(doc, gg, width = 3, height = 4, ppr = center_par)
}
anyplot <- plot_instr(code = {
barplot(1:5, col = 2:6)
})
doc <- rtf_add(doc, anyplot, width = 5, height = 4, ppr = center_par)
print(doc, target = tempfile(fileext = ".rtf"))
## RTF example with sections ----
library(officer)
quick_section_header <- function(label) {
block_list(
fpar(
ftext(label, fp_text_lite(bold = TRUE, color = "#006699"))
)
)
}
quick_section_footer <- function(label) {
block_list(
fpar(
"Page ",
run_word_field(field = "PAGE \\* MERGEFORMAT")
)
)
}
quick_hello_world <- function(doc) {
rtf_add(
doc,
fpar(
ftext(
"Hello World"
),
fp_p = fp_par(text.align = "left")
)
)
}
three_cols_section <- block_section(
prop_section(
type = "continuous",
section_columns = section_columns(widths = c(1.7, 1.7, 1.7), space = 0.25),
header_default = quick_section_header("Three columns section"),
footer_default = quick_section_footer("Three columns section")
)
)
doc <- rtf_doc(
def_sec = prop_section(
header_default = quick_section_header("Default section"),
footer_default = quick_section_footer("Default section")
),
normal_par = fp_par(padding = 3)
)
doc <- rtf_add(doc, block_toc(level = 3))
doc <- rtf_add(doc, "Sections demo", style = "heading 1")
doc <- rtf_add(doc, "Default section", style = "heading 2")
doc <- quick_hello_world(doc)
if (require("ggplot2")) {
gg_iris <- ggplot(iris, aes(Sepal.Length, Petal.Length, colour = Species)) +
geom_point() +
theme_minimal()
doc <- rtf_add(doc, gg_iris, width = 4, height = 3)
}
doc <- rtf_add(doc, "Three columns", style = "heading 2")
doc <- rtf_add(doc, three_cols_section)
titles_list <- block_list(
fpar(ftext("Left Title"), fp_p = fp_par(text.align = "left")),
fpar(
run_columnbreak(),
ftext("Centered Title"),
fp_p = fp_par(text.align = "center")
),
fpar(
run_columnbreak(),
ftext("Right Title"),
fp_p = fp_par(text.align = "right")
)
)
doc <- rtf_add(doc, titles_list)
doc <- rtf_add(doc, block_section(prop_section()))
doc <- rtf_add(doc, fpar(run_linebreak()))
doc <- quick_hello_world(doc)
landscape_section <- block_section(prop_section(
type = "nextPage",
page_size = page_size(orient = "landscape"),
header_default = quick_section_header("Landscape section"),
footer_default = quick_section_footer("Landscape section")
))
doc <- rtf_add(doc, landscape_section)
doc <- rtf_add(doc, "Landscape orientation", style = "heading 2")
doc <- quick_hello_world(doc)
doc <- rtf_add(
doc,
block_section(
prop_section(
type = "nextPage",
header_default = quick_section_header("Final section"),
footer_default = quick_section_footer("Final section")
)
)
)
doc <- rtf_add(doc, "Back to portrait", style = "heading 2")
doc <- quick_hello_world(doc)
print(doc, target = tempfile(fileext = ".rtf"))
Run the code above in your browser using DataLab