2017-09-11 71 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/)是你的朋友。 –