将DataTable渲染为PDF文档

时间:2017-09-11 17:58:37

标签: r

我有多个DataTables,我需要在PDF文档中打印。 HTML文档在保留格式时起作用。

    artistTable1.data <- reactive({
         df <- artistData.filtered()
         df <- df[c("old_level", "level", "reason", "rank", "apacDominant")]
         # names(df) <- c("ARTIST (click for wikipedia)","LEVEL", "REASON", paste0("RANK (of ", my.sum(artistData$hasLevel), " ranked artists)"), "RISK FLAG(S)")

         datatable(df, filter = "none", escape = FALSE,
                   rownames = FALSE, caption = "HIGH LEVEL DATA SUMMARY",
                   options = list(columnDefs=list(list(targets = 0:3, class="dt-center")),
                                  paging = FALSE, searching = FALSE, autoWidth = FALSE, lengthChange = FALSE, info = FALSE, ordering = FALSE),
                   class = 'cell-border hover compact')
    })

    output$artistTable1 <- renderDataTable({
         artistTable1.data()
    })

我知道Datatables(被动)不能用于静态PDF文档。 Webshot是一个修复程序,但它会破坏格式化。

我有一个RMarkdown文件,它为我生成PDF和HTML格式的报告。 knitr包使用“webshot”但不保留HTML文档的格式。我能把它建成RMarkdown吗?

还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

您的代码对我来说没有开箱即用,因为您还没有包含所需的库。由于这是一般的DataTable问题,因此我将使用帮助页面中生成的DateTable(请参阅?data.table)。

执行此操作的一种方法是使用knitr。下面是一个可以保存在文本文件中的最小可行示例,例如:的 dt.Rnw

\documentclass{article}
\begin{document}
<<dt,results="asis">>=
library(data.table)
library(xtable)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
xtable(DT,caption="cap")
@
\end{document}

这将R代码嵌入到乳胶环境中。 xtable将data.dable对象DT转换为乳胶表并打印出来然后按原样包含在文档中(结果=&#34; asis&#34;)。

保存此文件后,必须运行knitr才能创建 dt.tex ,例如:

Rscript -e 'library(knitr);knit("dt.Rnw")'

然后可以将其编译成pdf( dt.pdf ),其中包含格式良好的表格(显然这可以扩展为托管多个表格):

pdflatex dt.tex