自动识别打开pdf文件时出现的错误

时间:2019-06-13 09:10:24

标签: r

我有一个包含1000多个pdf文件的文件夹。它们中的一小部分无法打开(因为自动下载操作-在R中以“ wb”模式(win OS)在download.file中执行,以某种方式失败了)。我需要重新下载它们,但为此,我应该获取它们的列表。我怎样才能有效地获得它?

我成功地使用了半手动方法:使用for循环,我打印每个文件的名称,并在每个文件上使用pdf_info()尝试打开它。对于那些受错误影响的人,我会收到类似以下的多条错误消息:

  

PDF错误:找不到预告片字典

     

PDF错误:无效的XRef条目6796

     

PDF错误:无效的XRef条目408

     

PDF错误:无效的XRef条目6770

     

PDF错误:顶级页面对象的类型错误(空)

从100个文件中,我以此方式确定了受错误影响的0-2个文件(因为文件名打印在错误的前面)。但随后,我必须手动重新下载由此确定的每个文件。我想使用某种条件,以便在出现这样的错误时,将文件名添加到文件名的向量中。我只是不明白如何使用这种条件。

这就是我现在要做的:

library(pdftools)

files <- list.files(pattern = "pdf$")

for (i in 1:100){
  print(i)
  pdf_info(files[i])
}

我想更改for循环(或使用替代代码),以便能够收集损坏的pdf文件的名称。

1 个答案:

答案 0 :(得分:0)

应该执行以下操作:

library(pdftools)

files <- list.files(pattern = "\\.pdf$")

for (file in files){
  corruptedPdfs <- list()

  tryPdfInfo <- tryCatch({
    pdf_info(file)
    }, error=function(e){e}
  )

  if(inherits(tryPdfInfo, "error")){
    corruptedPdfs[[file]] <- file
  }
}

print(corruptedPdfs)