2017-09-11 47 views
1

我有多个DataTables,需要在PDF文档中打印。 HTML文档可以保留格式。将数据表呈现为PDF文档

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(reactive)不能用于静态PDF文档。 Webshot是一个修复程序,但它遗失了格式。

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

有没有其他的选择?

回答

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转换为乳胶表并打印出来,然后将其包含在文档中(结果=“asis”)。有一个很好的

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

然后可以再被编译成一个PDF(dt.pdf):

已经将该文件保存一个具有运行knitr创建dt.tex,例如(显然这可以扩展到主机多个表):

pdflatex dt.tex 
+0

谢谢塞巴斯蒂安!我有一个RMarkdown文件,它为我生成PDF和HTML报告。 knitr软件包使用webshot [链接](https://github.com/wch/webshot),但不保留HTML文档的格式。 我可以将它建立到RMarkdown吗? 感谢您的耐心,我是一个业余闪亮的开发人员 –

+0

我想这是一个不同的问题,这似乎是在这个[线程] addresed(https://stackoverflow.com/questions/11025123/how-to-转换-R-降价到PDF)。看起来像[pandoc](http://pandoc.org/)是你的朋友。 –