I want to create a Word file with a text paragraph on the left and an image of a leaflet-map on the right.
So far I can do it, but I would also like to make a border around the whole leaflet image.
The border in my example is only half the size of the image and thus it seems like only the left side has borders.
How can I make the border as big as the image?
library(shiny)
library(officer)
library(leaflet)
library(mapview)
ui <- fluidPage(
leafletOutput("leafletmap"),
downloadLink("downloadWord", "Download Word Docx")
)
getLeafletMap <- function() {
leaflet() %>%
addTiles() %>%
addPopups(-93.65, 42.0285, "Here is the <b>Department of Statistics</b>, ISU")
}
server <- function(input, output, session) {
output$leafletmap <- renderLeaflet({
getLeafletMap()
})
output$downloadWord <- downloadHandler(
filename = 'Report.docx',
content = function(file) {
## Map #########################
map <- getLeafletMap()
mapshot(x = map, file=paste0(getwd(), "/map.png"),
remove_controls = c("layersControl"))
## Title & Texts #########################
subtitle <- "Report Map"
str5 <- "Lorem ipsum dolor sit amet, ligula iaculis mollis lacus consectetur, urna vitae potenti tortor!
Sit commodo, venenatis leo at et. Ligula ac pulvinar sollicitudin gravida, lobortis lectus ligula et.
Nisl tristique est erat lectus. Sodales egestas amet ac, ultricies nulla eu, risus blandit."
## Styles #########################
text_style_title <- fp_text(font.size = 20, bold = FALSE, font.family = "Arial", color = "#808080")
text_style <- fp_text(font.size = 10, bold = FALSE, font.family = "Arial")
par_style <- fp_par(text.align = "justify")
## Make Word Docs #########################
doc <- read_docx() %>%
body_add_fpar(fpar(ftext("Report with Map", prop = text_style_title), fp_p = par_style)) %>%
body_add_par("", style = "Normal") %>% # blank paragraph
body_end_section_continuous() %>%
body_add_fpar(fpar(ftext(str5, prop = text_style), fp_p = par_style)) %>%
body_add_fpar(fpar(external_img(src = paste0(getwd(), "/map.png"), height = 3, width = 4.52),
fp_p = fp_par(text.align = "right", padding.top = 6,
border = fp_border(width = 1, color = "red")))) %>%
body_end_section_columns(widths = c(1.5,2), sep = FALSE, space = 0.2) %>%
print(doc, target = file)
}
)
}
shinyApp(ui, server)