如何显示多个 PDF

斯巴鲁精神

下面的代码可以显示 1 个 pdf 文档,这个应用程序可以接受多次上传的 pdf,但是如何在 1 个查看器中显示多个 pdf(如果每个 pdf 有 1 页,并且我已经上传了 3 个文档,我希望看到 3该查看器中的页面)?是否有可能或者我需要查看动态 UI 以在不同的查看器中显示它们?

如果以下代码对您不起作用,请确保您有一个www文件夹来保存app.R并重新启动 RStudio。

编辑:

感谢 heds1 的回答,它可以在不同的查看器中查看 pdf,但是不确定是否有人知道如何在 1 个查看器而不是多个查看器中查看它们?将保持帖子开放几天,看看它是否可能。

library(shiny)

ui <- shinyUI(fluidPage(
  
  titlePanel("Testing File upload"),
  
  sidebarLayout(
    sidebarPanel(
      fileInput('file_input', 'upload file ( . pdf format only)', accept = c('.pdf'),multiple = T)
    ),
    
    mainPanel(
      uiOutput("pdfview")
    )
  )
))

server <- shinyServer(function(input, output) {
  
  observe({
    req(input$file_input)
    
    file.copy(input$file_input$datapath,"www", overwrite = T)
    
    output$pdfview <- renderUI({
      tags$iframe(style="height:600px; width:100%", src="0.pdf")
    })
    
  })
  
})

shinyApp(ui = ui, server = server)
heds1

如果您不确定是否总是要查看三个文件,那么最好使用动态 UI。这是一个示例(我忽略了文件上传方面,专注于动态 UI 部分):

library(shiny)

ui <- fluidPage(uiOutput("pdfview_ui"))

server <- shinyServer(function(input, output) {
    
    # get pdf files in directory
    files <- list.files(path = "www")
    
    # loop over files to create iframes
    lapply(files, function(file) {
        output[[file]] <- renderUI({
            tags$iframe(style= "height:600px; width:100%", src = file)
        })
    })
    
    # loop over files to render the iframes
    output$pdfview_ui <- renderUI({
        lapply(files, function(file) {
            uiOutput(file)
        })
    })
})

shinyApp(ui = ui, server = server)

将您的 PDF 文件放在www文件夹中,然后Run App在 RStudio 中点击而不是直接运行代码,否则它将无法正确获取 PDF。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章