【问题标题】:Render DataTable to PDF Document将 DataTable 渲染为 PDF 文档
【发布时间】:2018-02-20 01:14:01
【问题描述】:

我有多个需要在 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()
    })

我知道数据表(反应式)不能用于静态 PDF 文档。 Webshot 是一个修复,但它破坏了格式。

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

还有其他选择吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    由于您没有包含所需的库,因此您的代码对我来说并不是开箱即用的。由于这是一个通用的 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 代码嵌入到 Latex 环境中。 xtable 将 data.dable 对象 DT 转换为乳胶表并打印出来,然后按原样包含在文档中(result="asis")。

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

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

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

    pdflatex dt.tex
    

    【讨论】:

    • 感谢塞巴斯蒂安!我有一个 RMarkdown 文件,它为我生成 PDF 和 HTML 格式的报告。 knitr 包使用 webshotlink 但不保留 HTML 文档的格式。我可以将它构建到 RMarkdown 中吗?感谢您的耐心等待,我是一名业余 Shiny 开发人员
    • 我想这是一个不同的问题,这似乎在thread 中得到了解决。好像pandoc 是你的朋友。
    猜你喜欢
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多