首页 > 解决方案 > 如何使用 rmarkdown 将带有嵌入图像的表格格式化为 pdf 格式?

问题描述

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

这很好用,但是要以 .pdf 格式输出表格,我必须设置kable(df, format = "markdown"),否则 QR 码的图像不会放在输出表中,只是文件路径文本。这很好用,除非我想使用 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))

```

我希望能够使用 .pdf 文件格式化输出表kableExtra,但是我愿意接受任何其他可能有效的选项!

标签: shinyr-markdownkablekableextra

解决方案


推荐阅读