Как распечатать HTML-таблицу в PDF? - PullRequest
0 голосов
/ 19 сентября 2018

Рассмотрим этот простой пример

library(knitr)
library(kableExtra)
dt <- mtcars[1:5, 1:4]

# HTML table
kable(dt, format = "html", caption = "Demo Table") %>%
  kable_styling(bootstrap_options = "striped",
                full_width = F) %>%
  add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2)) %>%
  add_footnote(c("table footnote"))

enter image description here

Здесь я хочу очень простую вещь.Чтобы напечатать эту таблицу в pdf (возможно, в трубе).Я хочу, чтобы таблица выглядела именно так.

Я знаю, что это html, но разве мы не можем напечатать html страниц до pdf в Chrome?Должен быть способ (надеюсь).Я не хочу иметь дело с латексом и не хочу создавать документ rnotebook.Рендеринг должен исходить из моего голого .R скрипта.Разве это невозможно?

Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 19 сентября 2018

Вот решение части вашей проблемы генерации таблицы в формате pdf.Вам нужно настроить стиль вашей таблицы в xtable, чтобы получить желаемую полосу зебры и объединить столбцы.Вообще говоря, преобразование html в pdf не так просто, поэтому лучшим решением является использование LaTeX для генерации вашей таблицы, во-первых (я знаю, что вы не хотели LaTeX, но по крайней мере это скомпилировано в pdf с R и xtable делает тяжелую работу):

library(xtable)
dt <- mtcars[1:5, 1:4]
filename <- tempfile(fileext = ".tex")
capture.output(print(xtable(dt)), file = filename)
foo <- readLines(filename)
writeLines(c("\\documentclass[hidelinks]{article}",
             "\\begin{document}",
             foo,
             "\\end{document}"),
           con = filename)
tools::texi2dvi(filename, pdf = TRUE)

Вам нужно взглянуть на https://cran.r -project.org / web / packages / xtable / vignettes / xtableGallery.pdf , чтобы получитьВаш стиль, как вы хотите.Удачи.

Редактировать: Кажется, вы можете использовать kabelExtra тоже:

library(knitr)
library(kableExtra)
dt <- mtcars[1:5, 1:4]

# LaTeX table
a <- kable(dt, format = "latex", caption = "Demo Table") %>%
  kable_styling(bootstrap_options = "striped",
                full_width = F) %>%
  add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2)) %>%
    add_footnote(c("table footnote"))

filename <- tempfile(fileext = ".tex")
capture.output(a, file = filename)
foo <- readLines(filename)
writeLines(c("\\documentclass[hidelinks]{article}",
             "\\begin{document}",
             foo,
             "\\end{document}"),
           con = filename)
tools::texi2dvi(filename, pdf = TRUE)
...