使用Rmarkdown和Shiny创建打印/保存交互式报告

时间:2016-07-04 08:18:10

标签: r shiny r-markdown

我有一个交互式Rmarkdown文档,其中嵌入了一些根据用户输入生成图表的闪亮应用。

在对生成的图表感到满意之后,我想保存报告(以便它变为静态)。

我已在浏览器(Chrome)中打开报告,并尝试打印到pdf。它有点工作,但是一些数字在分页符时被切成两半。

有谁知道打印/保存此类报告的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

我认为这有点棘手,但这是我在我的应用上使用pdf或png格式保存html plot的内容。

安装wkhtmltopdf

  

wkhtmltopdf和wkhtmltoimage是开源(LGPLv3)命令   线工具使用HTML将HTML呈现为PDF和各种图像格式   Qt WebKit渲染引擎。这些完全是"无头"也不要   需要显示或显示服务。

在R

中使用它

这样,您就可以将html文件转换为pdfimg 在我的ShinyApp中,我在downloadHandler()函数中使用了这样的内容:

system("wkhtmltopdf   --enable-javascript --javascript-delay 2000 plot.html plot.pdf")  

我认为您的示例只需使用以下内容转换html

system("wkhtmltopdf yourFile.html yourFile.pdf")

答案 1 :(得分:0)

您可以在ui.R上提供下载按钮:

downloadButton('report', 'Download PDF'

和相应的server.R代码:

library(knitr)
output$report = downloadHandler(
      filename = function() {
        paste("Report_", <date/identifier>, ".pdf", sep="")
      },

      content = function(file) {
        rnw <- normalizePath('input.rnw') # assuming you wrote the code to display the graphs etc in this file
        owd <- setwd(tempdir())
        on.exit(setwd(owd))
        file.copy(rnw, 'input.rnw')

        out = knit2pdf(rnw, clean=TRUE)
        file.rename(out, file) 
      }
    )