Вставка изображения или pdf в документ Word в R

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

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

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

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


person Kristina    schedule 04.07.2018    source источник


Ответы (3)


Я настоятельно рекомендую перенести ваш код на officer, так как ReporteRs будет удален из CRAN 16 июля 2018 г. Из кода, написанного @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")
person David Gohel    schedule 04.07.2018
comment
Вау, спасибо! Это действительно важная информация! Все таблицы и рисунки в моем коде добавляются в word через ReporteRs. Я попробую, офицер! - person Kristina; 04.07.2018
comment
@ Дэвид Гоэль, почему изображение нужно поворачивать? - person Spooked; 22.10.2020

Вы можете 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")
person d125q    schedule 04.07.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" )

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

person Kristina    schedule 08.08.2018