我使用Shiny和knitr的組合來創建PDF文檔。通過Shiny將圖片上傳到knitr文檔
目前我想添加功能,允許用戶上傳將被放置在創建的文件中的圖片。然而,我真的被卡住了,因爲我無法獲得輸入圖片的路徑。任何人都可以幫助我嗎?
簡單的例子:
應用:
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)
和.Rnw
文件:
\documentclass{article}
\begin{document}
Put picture here:
<<echo = FALSE , message = F, results='asis'>>=
cat(paste('\\includegraphics[height=3in]{', picture,'}'))
@
\end{document}
部分'\includegraphics[height=3in]{', picture,'}
顯然是造成問題的原因,因爲我不知道圖片路徑只是暫時的一。
上傳的文件路徑是'input $ picture $ datapath' –
是的但它是臨時目錄的路徑,我不知道如何使它工作。此外,$ datapath與我的代碼中的[,4]相同。 –
嘗試在'.Rnw'文件中用'paste0'替換'paste',否則會在文件名後找不到尾部空格並且找不到圖片。 – NicE