【问题标题】:Automatically Identify error opening pdf files自动识别打开pdf文件的错误
【发布时间】:2019-06-13 09:10:24
【问题描述】:

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

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

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

PDF 错误:外部参照条目 6796 无效

PDF 错误:外部参照条目 408 无效

PDF 错误:外部参照条目 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 文件的名称。

【问题讨论】:

    标签: r


    【解决方案1】:

    应该这样做:

    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)
    

    【讨论】:

    • 非常感谢您的帮助。我对其进行了测试,它确实可以正常工作。
    • 不客气!如果有帮助,请采纳答案。
    • 我试过了,但错误地我只是对答案投了赞成票,而不是接受它。现在我接受了。
    猜你喜欢
    • 2018-05-26
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2013-02-18
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多