我是新手,并且想知道是否有办法显示在" downloadHandler"中生成的pdf文件?
我正在使用一个包进行一些生物分析,我可以在downloadHandler中创建一个pdf文件。但是,如果我可以查看这个pdf而不是下载它,我仍然在苦苦挣扎。
此问题与Shiny to output a function that generates a pdf file itself有关。 请参阅以下有关下载pdf输出的代码。非常感谢!
library(shiny)
library(msa)
runApp(list(
#Load the exmaple from the msa package.
mySequenceFile <- system.file("examples", "exampleAA.fasta", package="msa"),
mySequences <- readAAStringSet(mySequenceFile),
myFirstAlignment <- msa(mySequences),
# A simple shiny app.
# Is it possible to see the generated pdf file on screen?
ui = fluidPage(downloadButton('downloadPDF')),
server = function(input, output) {
output$downloadPDF = downloadHandler(
filename = 'myreport.pdf',
content = function(file) {
msaPrettyPrint(
myFirstAlignment
, file = 'myreport.pdf'
, output="pdf"
, showNames="left"
, showLogo="top"
, consensusColor="BlueRed"
, logoColors="accessible area"
, askForOverwrite=FALSE)
file.rename("myreport.pdf", file) # move pdf to file for downloading
},
contentType = 'application/pdf'
)
}
))
答案 0 :(得分:1)
如果您打算显示pdf,则不应使用downloadHandler
。相反,只需使用pdf打印功能生成pdf文件,但关键是
www
文件夹msaPrettyPrint
的文件参数指向www/myreport.pdf
myreport.pdf
而没有www
,因为Shiny会自动在www
文件夹中查找静态/媒体文件。请参阅下面的工作示例(注意我这里没有使用msa包,但想法应该相同)。
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
actionButton("generate", "Generate PDF")
),
mainPanel(
uiOutput("pdfview")
)
)
))
server <- shinyServer(function(input, output) {
observeEvent(input$generate, {
output$pdfview <- renderUI({
pdf("www/myreport.pdf")
hist(rnorm(100))
dev.off()
tags$iframe(style="height:600px; width:100%", src="myreport.pdf")
})
})
})
shinyApp(ui = ui, server = server)