2

我正在使用一个创建许多表格等的循环,并将其导出到带有 ReporteRs 包的 word 文档中。例如,我有一个包含许多不同图表、表格和文本的页面的 Word 文档。

我想通过循环将图像(或pdf - 都可以)插入其中(因为循环会产生许多不同的word文档)。我已经下载了 ImageMagick 和 magick 包来处理图像。现在我在 R 中有我的图像,但我不知道如何将它添加到我的文档中。

我知道 ReporteRs 有一个 addImage 命令可以插入外部图像(老实说,我很难弄清楚那个)。是否可以将内部图像/pdf 添加到文档中?

希望大家能给我一些建议。先感谢您!

4

3 回答 3

4

我强烈建议将您的代码迁移到officer将于ReporteRs2018 年 7 月 16 日从 CRAN 中删除的代码。从@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")
于 2018-07-04T14:46:40.097 回答
2

您可以使用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")
于 2018-07-04T12:06:26.030 回答
0

如果有人对新官员对此感到疑惑。我需要在我的文档中插入一个 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" )

其他答案也有效,但是在我习惯了军官之后,这对我来说是最简单的方法。希望这对将来有帮助!:)

于 2018-08-08T07:33:25.917 回答