使用R合并现有的PDF文件

20

我想使用R合并已存在的PDF文件(已保存在我的电脑上)。

我已经尝试过使用开源软件将它们合并,而且效果很好,但由于我有几百个文件需要合并,所以我希望找到一些更快的方法(我的目标是仅通过运行一个R命令就能自动创建或更新文件)。

我熟悉R,因此希望能找到一种使用这个程序创建这个新的多页PDF的方法。是否有任何函数可以为我完成这项工作?

谢谢!


1
еҰӮжһңдҪ дҪҝз”Ёзҡ„жҳҜLinuxзі»з»ҹпјҢжҲ‘е»әи®®дҪ еңЁе‘Ҫд»ӨиЎҢдёӯдҪҝз”ЁpdftkгҖӮдҪ еҸҜд»ҘдҪҝз”Ё?systemеңЁRдёӯзј–еҶҷи„ҡжң¬зӣҙжҺҘи°ғз”Ёе®ғгҖӮ - Justin
回应@Justin的评论,请参见Stack Overflow上的此问答相关博客文章。需要“ghostscript”,因此应该适用于任何平台。 - A5C1D2H2I1M1N2O1R2T1
1
谢谢你们俩的回答,我会尝试使用“gostscript”(由于我不是在Linux上,所以“pdftk”对我没有用)。 - sts
2
有适用于Windows和OSX的pdftk工具 http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit - Alex Vorobiev
2个回答

24

对于不依赖于调用底层操作系统的 system()system2() 的 R 语言解决方案,我建议使用 {qpdf} 包

您可以按照以下步骤安装此包:

install.packages("qpdf")

接下来您需要使用pdf_combine()函数。请查看它的文档:

?qpdf::pdf_combine

您可以合并任意数量的PDF文件。这里我将file.pdffile2.pdffile3.pdf合并成一个名为output.pdf 的新文件:

qpdf::pdf_combine(input = c("file.pdf", "file2.pdf", "file3.pdf"),
                  output = "output.pdf")

可填写的 PDF 表格与此功能兼容吗? - SourceCoda
@SourceCoda 我不确定。我建议尝试一下看看。 - jwalton

2

如果您安装了pdftk(可在此处找到),则可以使用以下函数:

concatenate_pdfs <- function(input_filepaths, output_filepath) {
  # Take the filepath arguments and format them for use in a system command
  quoted_names <- paste0('"', input_filepaths, '"')
  file_list <- paste(quoted_names, collapse = " ")
  output_filepath <- paste0('"', output_filepath, '"')
  # Construct a system command to pdftk
  system_command <- paste("pdftk",
                          file_list,
                          "cat",
                          "output",
                          output_filepath,
                          sep = " ")
  # Invoke the command
  system(command = system_command)
}

以下可称作:

concatenate_pdfs(input_filepaths = c("My First File.pdf", "My Second File.pdf"),
                 output_filepath = "My Combined File.pdf")

这只是一种用户友好的调用下列系统命令的方式:
pdftk "My First File.pdf" "My Second File.pdf" cat output "My Combined File.pdf"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接