Sto utilizzando la combinazione di Shiny e knitr per creare documenti PDF.Caricamento di un'immagine nel documento knitr tramite Shiny
Attualmente desidero aggiungere funzionalità che consentiranno all'utente di caricare immagini che verranno inserite all'interno del documento creato. Tuttavia, sono davvero bloccato perché non riesco a ottenere il percorso dell'immagine in ingresso. Qualcuno potrebbe aiutarmi con quello?
semplice esempio:
Applicazione:
library(knitr)
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fileInput("picture", label = 'Picture'),
downloadButton('report', label = 'Download PDF')
),
mainPanel()
)
)
server <- function(input,output){
picture <- reactive({
input$picture[,4]
})
output$report = downloadHandler(
filename = "test.pdf",
content = function(file){
picture = picture()
out = knit2pdf(input = 'test.Rnw', compiler = 'xelatex', clean = TRUE)
file.rename(out, file)
},
contentType = 'application/pdf'
)
}
shinyApp(ui = ui, server = server)
e il documento .Rnw
:
\documentclass{article}
\begin{document}
Put picture here:
<<echo = FALSE , message = F, results='asis'>>=
cat(paste('\\includegraphics[height=3in]{', picture,'}'))
@
\end{document}
Parte '\includegraphics[height=3in]{', picture,'}
è ovviamente la causa del problema, perché non si conosce il percorso dell'immagine solo temporanea uno.
percorso del file caricato è 'ingresso $ immagine $ datapath' –
Sì, ma è percorso alla directory temporanea e non ho idea di come farlo funzionare. Inoltre, $ datapath è uguale a [, 4] nel mio codice. –
Prova a sostituire 'paste' con' paste0' nel file '.Rnw', altrimenti c'è uno spazio finale dopo il nome del file e l'immagine non viene trovata. – NicE