使用命令行在 Linux 中拼合透明 PDF 图像

使用命令行在 Linux 中拼合透明 PDF 图像

我正在使用 R 生成具有许多透明层的图形。我希望输出为 pdf,但当透明层太多时,文件大小会激增。我可以在 GIMP 中手动打开每个层并在那里将其展平,但我想通过system()R 中的调用来执行此操作,以便可以自动化该过程。有人知道这样做的方法吗?

这是一个愚蠢的可重复示例:

set.seed(2)
x = sort(runif(100))*10
y = rgamma(100,shape = x*rexp(100),scale=1/exp(rnorm(100)))
plot(x,y)
for (i in 1:200){
y = rgamma(100,shape = x*rexp(100),scale=1/exp(rnorm(100)))
fit = loess(y~x)
points(x,y,col=rgb(0,1,0,.3))
lines(x,predict(fit),col=rgb(1,0,0,.3))
}

现在,我希望能够执行dev.copy2pdf(file="dumb_graph.pdf"),然后执行system(something)来展平图像。或者最有可能的是,执行许多不同的系统调用。有人知道有什么实用程序可以做到这一点吗?

编辑:我正在寻找特定于 Linux 的解决方案,但我猜测其他平台上的解决方案对于将来可能搜索此问题的人来说将是有用的帖子。

编辑2:输出应该是矢量。

编辑3:这是从 SO 迁移而来的

答案1

您是否确定您的诊断是 PDF 文件很大是因为存在“许多透明层”?

在我看来,这可能是物体的绝对数量,在您的示例中,您有 200x100 对坐标,PDF 为 1.2 MB,因此您抱怨每对坐标使用了 60 B。

在某个阶段和针对某些目标分辨率(例如,屏幕或打印不同),存储矢量图形和位图图形的效率存在交叉。因此,在本例中,您可以导出 PNG 而不是 PDF。

相关内容