微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

部署可以在应用程序本身内部调用 runApp() 的闪亮应用程序特别是对于 tabulizer 包

如何解决部署可以在应用程序本身内部调用 runApp() 的闪亮应用程序特别是对于 tabulizer 包

我正在尝试部署一个 Shiny 应用程序,该应用程序允许用户上传 pdf 文档并从所选页面提取表格。为此,我使用包 tabulizer一个基本的可重现示例:

library(shiny)
library(tabulizer)

ui <- fluidPage(
  fileInput("report",NULL,buttonLabel = "Upload report"),numericInput("page","Specify page number",value = 1),actionButton("extract","Extract"),verbatimtextoutput("data")
)

server <- function(input,output,session) {
  generate_data <- reactive({
    req(input$report)
    # This locate_area function calls runApp() from the tabulizer package
    area <- locate_areas(file = input$report$datapath,pages = input$page,widget = "reduced")  
    table <- extract_tables(file = input$report$datapath,area = area)
    return(table)
  })%>% bindCache(input$page) %>% bindEvent(input$extract)
  
  output$data <- renderPrint({
    # Just for the sake of this example to show it works
    generate_data()
  })
}

shinyApp(ui = ui,server = server)

如果我在本地运行它,locate_area() 将在 RStudio 的查看器上弹出 pdf 页面,一切正常。但是,如果我发布应用程序,单击操作按钮后它不会运行。我知道问题来自 locate_area(),因为它本质上调用了闪亮的应用程序中的另一个 runApp。我曾尝试为 locate_area() 使用不同的小部件但无济于事。有人知道绕过这个问题的方法吗?

解决方法

根据相关问题 - issue 15issue 53 - 看来您最好的方法是将原始 tabulizer 函数的功能复制到您自己的应用程序中,如目前,该软件包无法与其他 Shiny 应用轻松集成。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。