| capture_pdf | R Documentation | 
Add a button to take a screenshot of a specified element and download a PDF file.
capture_pdf(
  selector,
  filename,
  ...,
  margins = 15,
  scale = NULL,
  options = NULL,
  loading = NULL,
  statusInputId = NULL,
  button_class = "btn btn-default"
)
selector | 
 A CSS selector, for example   | 
filename | 
 Name of the file (without extension) that will be created. If   | 
... | 
 Arguments passed to HTML button.  | 
margins | 
 Margins to add to PDF.  | 
scale | 
 Scale factor applied to image's dimension. Can be used to get a higher resolution image.  | 
options | 
 Options (as a list) passed to html-to-image
method, for example you can use   | 
loading | 
 Add a loading indicator if taking screenshot take time, see   | 
statusInputId | 
 Retrieve status information in an   | 
button_class | 
 Class to use for the HTML tag   | 
an HTML tag that can be used in UI or rmarkdown HTML document.
library(shiny)
library(capture)
ui <- fluidPage(
  tags$h2("Capture PDF example"),
  capture_pdf(
    selector = "body",
    filename = "all-page",
    icon("camera"), "Take screenshot of all page",
    loading = loading()
  ),
  tags$br(),
  fluidRow(
    column(
      width = 4,
      wellPanel(
        tags$b("Parameters :"),
        selectInput(
          inputId = "loi",
          label = "Law:",
          choices = c("normal", "uniform", "exponential")
        )
      )
    ),
    column(
      width = 8,
      tags$div(
        id = "result-block",
        tags$b("Results :"),
        plotOutput(outputId = "plot"),
        uiOutput(outputId = "mean"),
        verbatimTextOutput(outputId = "raw")
      ),
      capture_pdf(
        selector = "#result-block",
        filename = "results",
        icon("camera"), "Take screenshot of results"
      ),
      capture_pdf(
        selector = "#result-block",
        filename = "results",
        scale = 3,
        icon("camera"), "Take screenshot of results (bigger scale)"
      )
    )
  )
)
server <- function(input, output, session) {
  distrib_r <- reactive({
    switch(
      input$loi,
      "normal" = rnorm(1000),
      "uniform" = runif(1000),
      "exponential" = rexp(1000)
    )
  })
  output$plot <- renderPlot({
    hist(distrib_r())
  })
  output$mean <- renderUI({
    tags$p(tags$b("The mean is :"), round(mean(distrib_r()), 2))
  })
  output$raw <- renderPrint({
    summary(distrib_r())
  })
}
if (interactive())
  shinyApp(ui, server)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.