Вставка изображения или PDF в текстовый документ в R
Я работаю с циклом, который создает много таблиц и т. Д. И экспортирует его в текстовые документы с пакетом ReporteRs. Например, у меня есть документ Word со множеством страниц с различными графиками, таблицами и текстом.
Я хочу вставить изображение (или PDF - либо нормально) в него через цикл (так как цикл создает много разных текстовых документов). Я загрузил пакеты ImageMagick и magick для работы с изображениями. Теперь у меня есть изображение в R, но я не могу понять, как добавить его в свой документ.
Я знаю, что ReporteRs имеет команду addImage, которая вставляет внешние изображения (честно говоря, у меня возникли проблемы с его определением). Возможно ли добавить внутренние изображения / PDF в документ?
Надеюсь, вы, ребята, можете дать мне несколько советов. Заранее спасибо!
3 ответа
Я настоятельно рекомендую перенести ваш код в 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")
Вы можете 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")
Если кому-то интересно об этом с новым офицером. Мне нужно было вставить 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" )
Другие ответы тоже сработали, но после того, как я привык к офицеру, это был самый простой способ для меня. Надеюсь, что это поможет в будущем!:)