Saltar al contenido

¿Cómo agregar un pdf (de varias páginas) a rmarkdown?

Solución:

Uno puede usar pdfpages para incluir varias páginas de un archivo PDF a la vez. Sin embargo, estos se incluyen en páginas separadas. Si bien es posible agregar números de página, no puede colocar fácilmente estas imágenes en un figure medio ambiente. Afortunadamente, includegraphics tiene la opción de utilizar páginas individuales de un PDF. Desafortunadamente, knitr::include_graphics
no permite pasar argumentos adicionales a includegraphics.

Aquí ambas posibilidades:

---
title: "crazy test"
output:
  pdf_document
header-includes:
  - usepackage{pdfpages}
---

```{r global_options, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.pos="h")
```


```{r, include=FALSE}
library(dplyr)
library(ggplot2)
library(tidyr)
library(purrr)

mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
                     x = c(1,2,3,5,6,7),
                     y = c(3,5,6,4,3,2))

mydata2 <- mydata %>% group_by(group) %>% 
  nest() %>% 
  mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = x)) + geom_point()))

pdf("mychart.pdf")
print(mydata2$myplot)
dev.off()
```


## this is a test!!

Only first page

```{r label, out.width = "85%", fig.cap = "caption"}
knitr::include_graphics(path = "mychart.pdf")
```

All pages but w/o caption and taking a full page

includepdf[pages=-,nup=2,pagecommand={}]{mychart.pdf}

Alternative, using explicit LaTeX commands.

begin{figure}
includegraphics[page=1,width=0.5linewidth]{mychart.pdf}
includegraphics[page=2,width=0.5linewidth]{mychart.pdf}
caption{label{fig:test} Test.}
end{figure}

También se pueden poner estos en un fragmento R con cat() y result="asis". Sin embargo, las opciones para configurar subtítulos, etc. aún no se utilizan.

Aquí está la solución Rmd con staplr. Tenga en cuenta que debe instalar pdftk para que split_pdf funcione

---
title: "crazy test"
output:
  pdf_document
---

```{r global_options, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.pos="h")
```

## Split pdf

```{r}
staplr::split_pdf("mychart.pdf", output_directory = ".", prefix = "mychart_")
```

## Add pdfs

```{r label, out.width = "85%", fig.cap = c("caption 1", "caption 2"), echo = FALSE}
flist <- list.files()
mychart_files <- flist[grep("mychart_", flist)]
knitr::include_graphics(mychart_files)
```

Además, incluir gráficos no funciona en un bucle. Pero acepta múltiples rutas, por lo que funciona bien.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *