【问题标题】:Combine (bind) existing pdf files in R在 R 中合并(绑定)现有的 pdf 文件
【发布时间】:2014-11-10 11:59:49
【问题描述】:

下面的函数由@Tyler Rinker 提供,可以在here找到

我正在努力的功能:

  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=""))
                          }

我想将多个现有的 pdf 文件绑定(组合)成 1 个 pdf 文件。我有多个根据id 命名的文件,例如:doc_123232.pdf、doc_434324.pdf 等。

如何设置in.file

理想情况下,我只想设置存储文件的文件夹:例如:Sys.glob("C:/Path/doc*.pdf")

编辑:我现在只尝试了 1 个 pdf 页面,而不是多个文件:

mergePDF(file="C:/1pagepdf.pdf",in.file="C:/path/doc_123232.pdf")

我收到错误:had status 127 ==> 显然我不明白参数in.file

【问题讨论】:

  • 你试过什么?默认情况下,in.file 是根据 ... 中的参数自动构造的,但您也可以将字符向量显式传递给 in.file 参数。
  • 我尝试过作为 char 向量传递,但仍然收到错误 127
  • 我会改用@agstudy 对那个问题的回答。比构建 R 函数来进行系统调用(对 Ghostscript)容易得多。
  • 当然,但如果提供的该功能适用​​于@Tyler Rinker,那么一般情况下也应该有效。

标签: r


【解决方案1】:

下面是如何通过一个最小的可重现示例来做到这一点。我相信您将能够将其分开并弄清楚如何应用于您的pdf。 reports 包不是必需的,但我喜欢在我的工作流程中使用 folderdelete,所以我在这里使用了它:

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。

【讨论】:

  • 非常感谢!这是in.file 缺少的部分。
猜你喜欢
  • 2013-07-07
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多