将renderDataTable输出保存为png的按钮

时间:2016-02-11 10:17:34

标签: r shiny dt

有没有人知道如何将有光泽的数据表(DT :: renderDataTable)输出保存为.png?即,我想创建一个类似于this button的按钮?

例如,任何人都可以定义一个按钮来将此表保存为png:

---
output: html_document
runtime: shiny
---

```{r setup, echo=FALSE}
library(DT)

    DT::renderDataTable({
      datatable(iris) %>% formatStyle(
        'Sepal.Width',
        backgroundColor = styleInterval(3.4, c('gray', 'yellow'))
      )
    })

```

1 个答案:

答案 0 :(得分:1)

您的主要任务是如何将表格转换为PDF格式。 Here are two SO questions以及如何做到这一点的答案。

假设您使用这些参考问题计算出这一部分(这与闪亮无关)。我接近下一步的方法是首先将路径返回到您从创建PDF的函数创建的PDF

createPDF <- function(df) {
  # create a pdf
  return(pdf_file)
}

然后在Shiny中你使用downloadHandler,你只需要将PDF复制到你提供给downloadHandler的文件名中。像这样:

### in UI
downloadButton('downloadPdf', 'Download table')

### in server
output$downloadPdf <- downloadHandler(
    filename = function() {
      "table.pdf"
    },
    content = function(file) {
      file <- createPDF(df)
      file.copy(file, "table.pdf")  # or something like this
    }
)

我没有尝试过,但这就是我想尝试的事情