Использование pagedown для преобразования из HTML в pdf в R - PullRequest
2 голосов
/ 06 октября 2019

Я впервые использую pagedown.

Не могли бы вы мне помочь?

Это мой код .Rmd:

---
title: "Table"
output:
  html_document:
    css: "test.css"
---

```{r}
library(knitr)
data(iris)
kable(iris)
```  

Это мой файл .css:

.main-container { 
     max-width: 1600px !important;
 } 
 tr:nth-child(even) {
     background-color: #f2f2f2;
 }
 th {
     background-color: #FF6319;
     color: white;
     font-size: 12px;
 }
 tbody {
     font-size: 12px;
 }
 hr {
     page-break-after: always;
 }

Когда я задаю команду pagedown::chrome_print('C:/Users/user/Downloads/myfile.html'), вывод PDFсоздан, но не поддерживает стиль css.

Что мне не хватает?

Любая помощь?

Спасибо!

1 Ответ

1 голос
/ 08 октября 2019

Это происходит из печати медиазапрос : формат вывода rmarkdown::html_document() определяет различные правила CSS для печати и экрана. Во-вторых, функция pagedown::chrome_print() использует стили печатных носителей для генерации PDF.

Выходной формат rmarkdown::html_document() опирается на Bootstrap 3.3.5, который определяет некоторые конкретные правила для печатных носителей, см. Исходный код.

Точнее, в исходном коде есть следующее объявление:

@media print {
  .table td, .table th {
    background-color: #fff !important;
  }
}

Эти правила переопределяют правила CSS, определенные в вопросе для печатных СМИ.

Чтобы получить ожидаемое поведение, вы должны переопределить эти встроенные правила CSS, используя более высокую специфичность .

Эта измененная таблица стилей должна выполнить свою задачу:

.main-container { 
     max-width: 1600px !important;
 } 
 .table tbody tr:nth-child(even) {
     background-color: #f2f2f2 !important;
 }
 .table thead th {
     background-color: #FF6319 !important;
     color: white !important;
     font-size: 12px;
 }
 tbody {
     font-size: 12px;
 }
 hr {
     page-break-after: always;
 }
...