2

我刚刚开始尝试使用pdftools从 pdf 中提取图像。但是我发现并非所有图层都被复制。例如,在下面的代码中,行在 png 中再现,但不是点。显然,在这个例子中,我可以直接保存 png,但是当我没有创建 pdf 的源代码/数据时,我只是用它来突出我对其他数据的问题。

警告下面的代码在 C:\temp 目录中创建文件

library(tidyverse)
library(pdftools)

set.seed(5)
df <- data.frame(Date = rep(as.Date(1:50, origin = "1990-01-01"),2), value = c(1:50,1:50)+c(rnorm(50),rnorm(50,sd=5)), var = rep(c("a","b"),each = 50))


plt1 <- ggplot(df, aes(x = Date, y = value, colour = var))+
  geom_line()+
  geom_point()

ggsave(plt1, filename = "C:/temp/testplot.pdf", width = 5, height = 4)

这将按预期创建带有点和线的pdf

在此处输入图像描述

但是,当我转换时,我没有得到积分,只有线条

pdf_convert("C:/temp/testplot.pdf", format = "png", filenames = "C:/temp/testpng.png")
#> Converting page 1 to C:/temp/testpng.png...
#> PDF error: No display font for 'ArialUnicode'
#>  done!
#> [1] "C:/temp/testpng.png"

在此处输入图像描述

reprex 包(v0.3.0)于 2019 年 11 月 19 日创建

我也尝试过使用pdftools::pdf_render_page和来自 magick 包的和,结果相同image_read_pdfimage_convert但是我知道这些magick功能实际上正在使用pdftools,所以问题一定存在

4

1 回答 1

0

建议的解决方法:

在 Adob​​e Acrobat 中打开 pdf 文件。选择“文件”->“打印”->“Microsoft Print to PDF”->“高级”->勾选“打印为图像”->“确定”->“打印”

然后,对刚刚创建的新 .pdf 副本执行“pdf_convert”。

于 2020-03-25T15:45:37.833 回答