Вставка изображения или PDF в текстовый документ в R - PullRequest
0 голосов
/ 04 июля 2018

Я работаю с циклом, который создает много таблиц и т. Д. И экспортирует их в текстовые документы с пакетом ReporteRs. Например, у меня есть документ Word со множеством страниц с различными графиками, таблицами и текстом.

Я хочу вставить изображение (или pdf - либо нормально) в него через цикл (поскольку цикл создает много разных текстовых документов). Я загрузил пакеты ImageMagick и magick для работы с изображениями. Теперь у меня есть изображение в R, но я не могу понять, как добавить его в свой документ.

Я знаю, что ReporterRs имеет команду addImage, которая вставляет внешние изображения (честно говоря, у меня возникли проблемы с его определением). Возможно ли добавить внутренние изображения / PDF в документ?

Надеюсь, вы, ребята, можете дать мне несколько советов. Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Я настоятельно рекомендую перенести ваш код в officer, так как ReporteRs будет удален из CRAN 2018-07-16. Из кода, написанного @ d125q, это будет преобразовано в:

library(officer)
library(magick)

download.file("https://jeroen.github.io/images/frink.png", "frink.png")
dims1 <- attributes(png::readPNG("frink.png"))$dim/72
sample.image <- image_read("frink.png")
image_write(image_rotate(sample.image, 45), "frink_rotated.png")
dims2 <- attributes(png::readPNG("frink_rotated.png"))$dim/72


sample.doc <- read_docx()
sample.doc <- body_add_img(sample.doc, src = "frink.png", width = dims1[2], height = dims1[1] )
sample.doc <- body_add_img(sample.doc, src = "frink_rotated.png", width = dims2[2], height = dims2[1] )
print(sample.doc, target = "sample.docx")
0 голосов
/ 08 августа 2018

Если кому-то интересно об этом с новым офицером. Мне нужно было вставить PDF в мой документ. Я преобразовал PDF в рисунок. После перехода на офицера я просто использовал этот код из пакета офицера:

img.file <- file.path( R.home("doc201"), "P:/path to my picture", "name.png" )

doc201 <- body_add_img(x = doc201, src = "P:/path/name.png", height = 10, width = 6, pos = "after" )

Другие ответы тоже сработали, но после того, как я привык к офицеру, это был самый простой способ для меня. Надеюсь, что это поможет в будущем! :)

0 голосов
/ 04 июля 2018

Вы можете plot изображения из magick, чтобы добавить их в документ, используя ReporteRs. Вот пример:

library(ReporteRs)
library(magick)

sample.doc <- docx(title="Sample")

## add original Frink
sample.image <- image_read("https://jeroen.github.io/images/frink.png")
sample.doc <- addPlot(sample.doc,
                      fun=plot,
                      x=sample.image)

## add rotated Frink
sample.doc <- addPlot(sample.doc,
                      fun=function(x) plot(image_rotate(x, 45)),
                      x=sample.image)


## save the document to disk
writeDoc(sample.doc, "sample.docx")
...