从R中的多个JPEG生成PDF

时间:2013-01-30 10:05:05

标签: r pdf-generation

我有一个包含多个JPEG文件的文件夹。如何从R中的这些JPEG生成PDF文件?

一个JPEG = 1个PDF页面。图像大小相同。

提前多多感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用Latex轻松完成此操作。这很好,因为那时你可以使用Sweave来完成整个事情。

您可以采取以下措施:

% This is some Sweave file
\documentclass{article}
\usepackage{graphicx}
\begin{document}

<<results=tex,echo=FALSE>>=
mypics <- dir('mypics')
for(i in mypics){
cat("\\includegraphics{", i, "}\n\n", sep = "")
}
@
\end{document}

好的,你必须设置你的Sweave管道,但经过一些调整后你可以轻松地自动完成整个过程。

答案 1 :(得分:0)

如果您坚持使用R来执行此操作,那么您可以打开pdf绘图设备,par来设置边距(默认可能是大而不是居中),然后在循环中使用plot.new开始新页面,plot.window设置坐标等,无需绘制轴等,使用ReadImages包中的read.jpeg函数(或其他工具/包)读取,EBImage是另一种可能性)然后rasterImage将jpeg绘制到pdf设备(或用其他图像绘制函数替换其中一些步骤,例如ReadImages中的绘图方法)。

但总体而言,使用更适合此类事物的工具可能更容易/更快/更好/ ......想到了ImageMagick程序套件,LaTeX也被提到了,也可能还有其他工具。

答案 2 :(得分:0)

如果你坚持使用R(其他工具更合适),尝试这样的事情(缓慢,未经测试):

   lf = list.files(pattern = "jpeg") # image filenames

   library(jpeg)
   jpegs = lapply(lf, readJPG)

   library(grid)
   pdf("output.pdf", width=8, height=4)
   grid.raster(jpegs[[1]])
   lapply(jpegs[-1], function(x) {grid.newpage() ; grid.raster(x)} ) -> bquiet
   dev.off()