楚新元 | All in R

Welcome to R Square

从多张图片到一个 PDF 文件

楚新元 / 2022-07-10


同事给监管部门报送中层管理人员任职资格,需要将一部分图片文件和一部分后缀为 .PDF 文件合并成一个 .pdf 文件报送1。图片转 PDF 文件对于他们来说,就是放在 Word 里另存,这样倒也行吧!多个 PDF 文件合并成一个 PDF 文件对他们就有点难了。

这个需求对于 R 来说简直不值一提,但是考虑到可能其他人可能也会用到,所以在此提供下源代码方便后来者吧!当然,多年后的我或许也会拿来即用。话不多说,放码出来:

# 加载相关的 R 包
library(magick)
library(qpdf)
library(purrr)

# 编写将图片转化为 .pdf 格式的函数
convert_pdf = \(file) {
  file %>% 
    image_read(.) %>% 
    image_write(
      format = "pdf",
      gsub(tools::file_ext(file), "pdf", file)
    )
}

# 定义数据文件路径
path = "./data"

# 批量转换指定路径下的图片
path %>% 
  list.files(
    pattern = "\\.jpg$|\\.JPG$",  # 可以是 magick 包支持的其他格式
    full.names = TRUE
  ) %>% 
  map(convert_pdf)

# 合并所有 PDF 文件到一个文件
path %>% 
  list.files(
    pattern = "\\.pdf$|\\.PDF$", 
    full.names = TRUE
  ) %>% 
  pdf_combine("result.pdf")

  1. 如对文件的先后顺序有要求,可以先给文件名里加上数字,这样调整起来也容易。 ↩︎