我正在尝试制作可以插入Word的矢量图形。但是,无论何时我尝试使用白色文本,当我将其插入Word文档时,它都会显示为黑色。如果我输出为PDF,它可以正常工作,但是很遗憾,我无法将PDF直接导入Word。输出到EMF并将该EMF图像导入到Word文档时,如何使白色文本保持白色?
library(devEMF)
library(grid)
emf("test.emf",height=3,width=3)
grid.newpage()
grid.circle(x=0.5,y=0.5,r=0.1,gp=gpar(col=NA,fill="blue"))
grid.text(1,x=0.5,y=0.5,gp=gpar(col="white"))
dev.off()
答案 0 :(得分:3)
(请注意,我是devEMF软件包的开发人员;我只是偶尔检查一下stackoverflow,所以现在就看看)
devEMF包含一个错误,该错误会忽略为白色文本设置文本颜色,直到首先使用非白色文本为止。我已提交给CRAN devEMF版本3.6-2,该版本已修复此错误;通过CRAN可能需要几天的时间。同时,由于您的用例是Microsoft Word,可以很好地处理EMF +,因此打开设备时,您可以通过请求EMF +字体来立即解决该问题:
emf("test.emf",height=3,width=3, emfPlusFont=TRUE)
答案 1 :(得分:1)
您可以通过在.php
中创建它来直接在Word文档中生成它:
rmarkdown
当我在系统上尝试此输出时,输出看起来像预期的那样。
但是,当我直接使用您的代码生成EMF文件并将---
output: word_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(grid)
```
```{r}
grid.circle(x=0.5, y=0.5, r=0.1, gp=gpar(col=NA,fill="blue"))
grid.text(1, x=0.5, y=0.5, gp=gpar(col="white"))
```
拖到Word文件中时,得到的结果与您相同:
但是,我确实发现,如果我将颜色更改为test.emf
(实际上是白色),则该颜色会在EMF文件输出中正确呈现(我尝试过的任何其他颜色规范都一样,除了{ {1}}或"#FEFEFE"
)。因此,如果您需要另存为EMF,则有望完成这项工作。
几个月前,我answered an SO question遇到了类似的问题。在这种情况下,目标是使用"white"
包编写一个xlsx文件,并使工作表标题为黑色文本。但是,该文本实际上在输出文件中呈现为白色文本。在这种情况下,将颜色设置更改为实际上是黑色的"#FFFFFF"
即可,除了纯黑色(xlsx
或"#010101"
)以外,其他任何颜色规格都可以使用。我不知道这两个问题是否相关,但是我想我提一下是为了防万一。