2017-09-11 5 views
1

Ich habe multipleple DataTables, die ich in einem PDF-Dokument drucken muss. HTML-Dokument funktioniert so, wie es die Formatierung beibehält.Render DataTable to PDF Dokument

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() 
    }) 

Ich bin mir bewusst, dass Datatables (reaktiv) nicht in statischen PDF-Dokumenten verwendet werden können. Webshot war ein Update, aber es ruiniert die Formatierung.

Ich habe eine RMarkdown-Datei, die die Berichte in PDF und HTML für mich generiert. Das Paket knitr verwendet "webshot", behält aber nicht die Formatierung des HTML-Dokuments bei. Kann ich das in den RMarkdown einbauen?

Gibt es Alternativen?

Antwort

0

Ihr Code läuft nicht aus der Box für mich, da Sie die benötigten Bibliotheken nicht enthalten haben. Da dies eine allgemeine DataTable-Frage ist, verwende ich eine DateTable, die auf der Hilfeseite generiert wurde (siehe ?data.table).

Ein Weg, dies zu tun ist mit knitr. Unten ist ein minimales praktikables Beispiel, das Sie in einer Textdatei speichern können, z. 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} 

Diese bettet R-Code in einer Latex-Umgebung. xtable konvertiert das data.dable-Objekt DT in eine Latex-Tabelle und druckt sie, die dann im Dokument enthalten ist (result = "asis").

diese Datei gespeichert Nachdem ein Lauf knitr muss dt.tex, zum Beispiel zu erstellen:

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

die dann anschließend in eine pdf kompiliert werden (dt.pdf) mit einem schön formatierte Tabelle darin (offensichtlich kann dieses ausgedehnt werden, um mehrere Tabellen zu bewirten):

pdflatex dt.tex 
+0

Dank Sebastian! Ich habe eine RMarkdown-Datei, die die Berichte in PDF und HTML für mich generiert. Das Paket knitr verwendet webshot [link] (https://github.com/wch/webshot), behält jedoch nicht die Formatierung des HTML-Dokuments bei. Kann ich das in den RMarkdown einbauen? Danke für die Geduld, ich bin ein Amateur Shiny Entwickler –

+0

Ich nehme an, das ist eine andere Frage, die in diesem [Thread] addressed scheint (https://stackoverflow.com/questions/11025123/how-to- Convert-R-Abschrift-zu-PDF). Scheint wie [Pandoc] (http://pandoc.org/) ist dein Freund. –