Как использовать кнопку загрузки в блестящем с сеткой Python? - PullRequest
0 голосов
/ 24 апреля 2019

Я создаю блестящее приложение, и у меня есть «кнопка загрузки»!Я также использую python из reticulate, потому что у меня есть скрипт, который генерирует 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, и пользователь выберет каталог, но я не знаю, как это сделать.Возможно ли это сделать?Как я мог это сделать?

1 Ответ

0 голосов
/ 26 апреля 2019

Моя проблема заключалась в том, что мне нужно было передать скрипту python путь, по которому будет сохранен pdf. Вот мое решение проблемы:

ui.R

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

server.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

...