我正在尝试部署一个 Shiny 应用程序,该应用程序允许用户上传 pdf 文档并从所选页面中提取表格。为此,我正在使用 package 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,
pages = input$page,
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()
无济于事。有人知道绕过这个问题的方法吗?