Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 显示本地驱动器中的pdf文件_R_Image_Pdf_Shiny_Displayobject - Fatal编程技术网

R 显示本地驱动器中的pdf文件

R 显示本地驱动器中的pdf文件,r,image,pdf,shiny,displayobject,R,Image,Pdf,Shiny,Displayobject,我对r和Shinny仍然是新手,我被本来应该是简单逻辑的东西难住了。我试图在imageOutput小部件中显示pdf文件,但运气不好。有人能把我引向正确的方向吗 示例ui.R shinyUI(pageWithSidebar( mainPanel( selectInput("sel_ed", label = "View outputs for Ecodistrict:", choices = c(244,245,247,249),

我对r和Shinny仍然是新手,我被本来应该是简单逻辑的东西难住了。我试图在imageOutput小部件中显示pdf文件,但运气不好。有人能把我引向正确的方向吗

示例ui.R

shinyUI(pageWithSidebar(
mainPanel(
  selectInput("sel_ed",
              label = "View outputs for Ecodistrict:", 
              choices = c(244,245,247,249), 
              selected = NULL,
              multiple = FALSE),

  imageOutput("imp_pdf",width="500px",height="500px")
))
示例服务器.R

shinyServer(function(input, output, session) {

importance <- function(inputSpecies){
img_dir <- pdf(paste(inputSpecies,"\\models\\MATL\\MATRF_Importance",sep=""))
}

output$imp_pdf <- renderImage({importance(input$sel_ed)}) 

})
shinyServer(功能(输入、输出、会话){
重要性要在闪亮的ui中嵌入PDF查看器(web浏览器的默认PDF查看器,例如mozilla上的PDF.js),可以使用iframe,其中src将是PDF的路径

以下是在界面中包含iframe的两种不同方式:

在Ui中,您可以直接添加带有绝对src属性的
iframe
标记,如下所示:

tags$iframe(style="height:600px; width:100%", src="http://localhost/ressources/pdf/R-Intro.pdf"))
或者从服务器的ui中获取URL,用输入URL编写
iframe
标记,并在ui的htmlOutput中返回HTML代码:

用户界面:
textInput(“pdfurl”、“PDF URL”)
htmlOutput('pdfviewer')

服务器:

output$pdfviewer <- renderText({
    return(paste('<iframe style="height:600px; width:100%" src="', input$pdfurl, '"></iframe>', sep = ""))
})
服务器.R:

shinyServer(function(input, output, session) {

  output$pdfviewer <- renderText({
      return(paste('<iframe style="height:600px; width:100%" src="', input$pdfurl, '"></iframe>', sep = ""))
  })

})
shinyServer(功能(输入、输出、会话){

output$pdfviewer在原始目录中创建一个名为www的文件夹,其中包含server.R和ui.R脚本。将PDF放在www/文件夹中,然后使用以下代码:

在server.R中:

shinyServer(function(input, output) {

  observeEvent(input$generate, {
    output$pdfview <- renderUI({
      tags$iframe(style="height:600px; width:100%", src="foo.pdf")
    })
  })
})
补充回答

有两件事很重要:

  • 确保您从Rstudio创建了一个R闪亮的Web应用程序。确保您以“运行应用程序”的身份运行。否则,无法访问“www”文件夹中的文件
  • 确保在Web应用程序目录中创建“www”文件夹

  • 可能不相关,但您可以使用
    /
    作为路径,而不是\\即使在Windows中,我认为目前还没有现成的组件。但当然,您可以在网页中显示pdf。如果可以在webapge中完成,则shiny可以进行调整。请参阅参考:根据我使用此方法的经验,您需要在浏览时打开shiny应用程序ser希望实际看到PDF。它不会显示在RStudio窗口中。是否有任何方法来保护
    www
    文件夹?或者在不使用
    www
    的情况下预览PDF?我希望能够以
    iframe
    类型的方式预览图片/PDF,而不会生成任何人都可能访问的不安全URL链接。您也可以如果您希望它在外部可见,请从命令行取消它,例如,
    runApp('mainstask',host=“0.0.0.0”)
    。我相信任何R闪亮的应用程序都是R闪亮的Web应用程序。
    shinyServer(function(input, output) {
    
      observeEvent(input$generate, {
        output$pdfview <- renderUI({
          tags$iframe(style="height:600px; width:100%", src="foo.pdf")
        })
      })
    })
    
    shinyUI(fluidPage(
    
      titlePanel("Display a PDF"),
    
      sidebarLayout(
        sidebarPanel(
          actionButton("generate", "Generate PDF")
        ),
    
        mainPanel(
          uiOutput("pdfview")
        )
      )
    ))