【问题标题】:How to use Download Button in shiny with python reticulate?如何在 python reticulate 中使用闪亮的下载按钮?
【发布时间】:2019-04-24 12:15:04
【问题描述】:

我正在构建一个闪亮的应用程序,我有一个“下载按钮”!我也在使用来自 reticulate 的 python,因为我有一个脚本可以根据应用程序中生成的图表为我生成 PDF。我用来创建 pdf 的包是 FPDF

这是我在 R 中从 python 创建我的 pdf 的函数

createPdf <- function(path){
     source_python("plots/create_pdf.py")
       pdf <- PDF()
       pdf$alias_nb_pages()
       pdf$add_page()
       pdf$plot_charts_field('farmer', 'region', 'produto')
       pdf$output(path + 'report.pdf', 'F')
   }

这是我的下载按钮输出

output$download <- downloadHandler(
     filename = 'report.pdf',
     content = function(file) {
      createPdf (file)
     })

当我调用函数“createPdf”函数时,我需要在参数中传递 pdf 将下载的路径并且用户将选择目录,但我不知道该怎么做。有可能这样做吗?我该怎么办?

【问题讨论】:

  • 我不确定我得到你想要做什么,你试过createPdf这个功能吗?它是在创建您期望的 pdf 吗?你能分享剩下的代码,或者uiserver的更多细节吗?以及您面临的具体问题是什么,例如您是否收到错误消息?

标签: python r shiny fpdf reticulate


【解决方案1】:

我的问题是我需要将保存 pdf 的路径传递给 python 脚本。这是我对问题的解决方案:

ui.R

sidebarLayout
  (
    sidebarPanel(width = 3,
      radioButtons(inputId = "choices", "Tipo", c("Individual", "Global"), selected = "Individual"),
      uiOutput("Filters"), downloadButton('download', "Download")
    )

服务器.R

  makePdf <- function(filename){
     source_python("plots/create_pdf.py")
     if (input$choices == 'Individual')
     {
       pdf <- PDF()
       pdf$alias_nb_pages()
       pdf$add_page()
       pdf$plot_charts_field('farmer', 'region', 'produto')
       pdf$output(filename, 'F')
     } else
     {
       source_python("plots/plot_mapa.py")
       plot_mapa(alltables_filter())
       pdf <- PDF()
       pdf$alias_nb_pages()
       pdf$add_page()
       pdf$plot_charts_global()
       pdf$output(filename, 'F')
     }
   }


output$download <- downloadHandler('report.pdf', function(theFile) {

       makePdf(theFile)

     })

这样,用户就可以下载pdf了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-18
    • 2021-09-24
    • 2014-10-04
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多