在R中合并(绑定)现有pdf文件
下面的函数由@Tyler Rinker提供,可以找到 我正在努力解决的功能:在R中合并(绑定)现有pdf文件,r,R,下面的函数由@Tyler Rinker提供,可以找到 我正在努力解决的功能: mergePDF <- function(..., file, gsversion = NULL, in.file = NULL) { if (is.null(in.file)) { in.file <- substitute(...()) }
mergePDF <- function(..., file, gsversion = NULL, in.file = NULL) {
if (is.null(in.file)) {
in.file <- substitute(...())
}
infiles <- paste(unlist(lapply(file.folder, function(y) as.character(y))),
collapse = " ")
if (is.null(gsversion)) {
gsversion <- names(which(Sys.which(c("gswin64c")) != paste("C:/Program Files/gs9.15/bin/gswin64c.exe",sep="")))
}
pre = " -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="
system(paste(paste(gsversion, pre, file, sep = ""), infiles, collapse=""))
}
我得到了错误:
有状态127
==>很明显,我不理解.file中的参数,下面是如何用一个最小的可复制示例来实现它。我相信你能够把它分开,并找出如何应用到你的PDF。报告包不是必需的,但我喜欢在我的工作流程中使用文件夹
和删除
,因此我在这里使用了它:
library(plotflow)
library(reports)
## make a folder to store the pdfs
folder(deleteMe)
## create a bunch of various sized pdfs
lapply(1:3, function(i) {
pdf(sprintf("deleteMe/test%s.pdf", i), width=sample(4:7, 1))
plot(1:10, 1:10, main = sprintf("Title: test%s.pdf", i))
dev.off()
})
## paste the paths to pdfs together in one string w/ spaces
plotflow:::mergePDF(
in.file=paste(file.path("deleteMe", dir("deleteMe")), collapse=" "),
file="merged.pdf"
)
## delete MWE
delete('deleteMe')
这是一个帮助函数,用于在plotflow内帮助R内的工作。如果我已经有PDF,我可能会直接使用gohstscript。您尝试了什么?默认情况下,.file
中的是根据..
中的参数自动构造的,但是您也可以显式地将字符向量传递给.file
中的参数。我尝试过作为字符向量传递,但仍然得到错误127,我将使用@agstudy对该问题的答案。比构建一个R函数来进行系统调用(到Ghostscript)要容易得多。当然,如果为@Tyler Rinker提供的函数有效,一般来说也应该有效。非常感谢!这是.file
中带有的缺失部分。
library(plotflow)
library(reports)
## make a folder to store the pdfs
folder(deleteMe)
## create a bunch of various sized pdfs
lapply(1:3, function(i) {
pdf(sprintf("deleteMe/test%s.pdf", i), width=sample(4:7, 1))
plot(1:10, 1:10, main = sprintf("Title: test%s.pdf", i))
dev.off()
})
## paste the paths to pdfs together in one string w/ spaces
plotflow:::mergePDF(
in.file=paste(file.path("deleteMe", dir("deleteMe")), collapse=" "),
file="merged.pdf"
)
## delete MWE
delete('deleteMe')