首页 文章

检查PDF文件是否已被Ruby损坏?

提问于
浏览
-1

理想情况下,我想避免使用宝石,因为我目前正在使用: pdf-readercombine-pdforigami

如果遇到损坏的pdf,每个gem有时不会发送异常但会停留在那里并且什么都不做 .

所以我希望你能帮我一个代码,看看文件是否损坏 .

我注意到有些pdf文件没有十六进制 (hex 25 50 44 46 | %PDF) ,但我'm afraid it'不是通用的解决方案 .

除了所有这些宝石有时甚至在pdf确实有效时抛出异常,但至少如果我确定pdf有效,我会知道该怎么做 .

我可以从那里开始 . 如何用ruby读取十六进制?是检查pdf的唯一方法吗?

2 回答

  • 1

    在使用ruby验证grub引导加载程序之前,我已经遇到过这种情况 . 我发现最简单的解决方案是对我知道应该存在的十六进制进行预检查 . 有点像这样:

    result = `hexdump pdf_file.pdf | head -n 1`
    valid_pdf = result.split(" ")[1..2] == ["2550", "4446"]
    

    随着时间的推移,您可以扩大检查以提前查找其他不良PDF文件 .

    绕过pdf挂锁的一个好方法就是使用Timeout functionality in ruby这样你就可以正常退出而不必强行关闭你的程序 .

  • -1
    result = IO.binread('file.pdf', 4).unpack("H*").first
    valid_pdf = result == '25504446'
    

    将对前4个字节进行比较

相关问题