如何使用rmarkdown将带有嵌入式图像的表格格式化为pdf格式?

时间:2019-07-02 23:23:19

标签: shiny r-markdown kable kableextra

我编写了一个脚本来生成rmarkdown报告,当以kable输出为pdf格式时,该报告会将包含数值结果的QR码附加到数据框(请参阅我的相关文章{{3} }。 QC代码作为图像矢量生成,并在生成报告时附加到数据框中的新列。

这很好,但是要以.pdf格式输出表格,我必须设置kable(df, format = "markdown"),否则QR Code的图像不会放在输出表格中,而只会放在文件路径文本中。除非我想使用kableExtra格式选项修改表,否则该方法正常工作,该选项要求kable格式为latex

在下面列出的示例代码中,您可以看到,kable(df, format = "markdown")图像的格式正确,但是kableExtra格式不起作用。相反,当kable(df, format = "latex")kableExtra格式选项起作用但图像不起作用时。

---
title: "QR Code in Column"
author: "me"
date: "2019/01/20"
output: pdf_document

---

```{r mychunk, echo = FALSE, fig.path =  "qr/", results = 'asis', fig.show='hide'}
library(knitr)
library(qrcode)
library(kableExtra)

df <- data.frame(test = LETTERS[1:2],
                 result = as.character(round(rnorm(2), 2)),                    
                 stringsAsFactors = F)

res.qr <- lapply(df$result, function(qr) {
  qrcode_gen(qr)                 # create qrcodes
  nrow(qr)                       # save number of rows of df
})

path <- paste0(opts_current$get("fig.path"), opts_current$get("label"), "-")

total <- 0
df$Code <- paste0("![](", path, (1:length(res.qr)) + total, ".pdf){width=72px}")

```

```{r echo = FALSE}

# This example works to generate the desired output, but the kableExtra options won't work.
kable(df, format = "markdown") %>%
  add_header_above(c(" ", "Class 1" = 2))

```

```{r echo = FALSE}

# This example works to use the kableExtra formatting options, but the QR Code isn't an image.
kable(df, format = "latex") %>%
  add_header_above(c(" ", "Class 1" = 2))

```

我希望能够使用kableExtra格式化.pdf文件中的输出表,但是我对可能起作用的任何其他选项持开放态度!

0 个答案:

没有答案