| 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.