Help with downloading PDF embedded in Shiny Module

shiny

#1

I have a problem getting this to work. I can use the code In have outside of a shiny module and it works as designed. But When I embed the same code in a shin module I cannot get it to work. I am using https://www.aridhia.com/blog/using-shiny-modules-to-simplify-building-complex-apps/ as a guide.

Here is a dumbed down version that exhibits the same behavior: (apparently I cannot upload .Rmd or .R files and this formats the code horribly)


App:

library(shiny)
library(DT)

csvDownloadUI <- function(id, label = “Download CSV”) {
ns <- NS(id)

downloadButton(ns(“download”), label)
}

csvDownload <- function(input, output, session, reportName) {

tempReport <- file.path(tempdir(),reportName)

file.copy(reportName, tempReport, overwrite = TRUE)

output$pdfGen <- downloadHandler(

filename = function() {
  "report.pdf"
},

content = function(file) {
  
  rmarkdown::render(tempReport, output_file = file,
                    envir = new.env(parent = globalenv())
  )
}

)
}

server <- function(input, output, session) {

callModule(csvDownload, “download_filtered”,“reportTest.Rmd”)

}

ui <- fluidPage(
sidebarLayout(
sidebarPanel(
csvDownloadUI(“download_filtered”, “Download PDF Report”)
),
mainPanel(

)

)
)

shinyApp(ui=ui,server=server)


Rmd:


---
output: 
  pdf_document:  
    latex_engine: pdflatex
header-includes:
    - \usepackage{pdflscape}
    - \newcommand{\blandscape}{\begin{landscape}}
    - \newcommand{\elandscape}{\end{landscape}}
always_allow_html: yes
fontsize: 12pt
geometry: margin=0.75in
sansfont: Clibri Light
fig_width: 3
fig_heigth: 2

---

\begin{center}
\bfseries\LARGE A Risk Analysis Report for Today
\end{center}

\begin{center}
\bfseries\Large Authored by: JCH
\end{center}

\begin{center}
\bfseries\Large Now
\end{center}

<br> </br>
<br> </br>

<br> </br>

The IIO Parameter is 4

#2

Your output$pdfGen should match the download button id, which should be download. I didn’t test if fixing this will solve all the problem though.


#3

Thank you. This did fix the problem.