当前位置: 首页 > 面试题库 >

检查PDF文件在Python中是否有效

淳于亦
2023-03-14
问题内容

我通过HTTP上载获得文件,并且需要确保它是pdf文件。 编程语言是Python,但这无关紧要。

我想到了以下解决方案:

  1. 检查字符串的第一个字节是否为“%PDF”。 这不是一个很好的检查,但是可以防止用户意外上传其他文件。

  2. 尝试libmagic(bash上的“文件”命令使用它)。 这与(1)中的检查完全相同

  3. 获取一个lib并尝试从文件中读取页数。 如果该库能够读取一个页面计数,则它应该是有效的pdf。 问题:我不知道python的lib可以做到这一点

那么有人为lib或其他技巧找到了解决方案吗?


问题答案:

用于Python的两个最常用的PDF库是:

  • pyPdf
  • 报告实验室

两者都是纯python,因此应该易于安装以及跨平台。

有了pyPdf,它可能和做起来一样简单:

from pyPdf import PdfFileReader
doc = PdfFileReader(file("upload.pdf", "rb"))

这应该足够了,但是如果您要进行进一步检查,doc现在将具有documentInfo()numPages()方法。

正如Carl回答的那样,pdftotext也是一个很好的解决方案,并且在非常大的文档(尤其是具有很多交叉引用的文档)上可能会更快。但是,由于分叉新进程的系统开销等原因,在小PDF上可能会稍慢一些。



 类似资料:
  • 问题内容: 以编程方式检查PDF文件是否被完全扫描的最佳方法是什么?我确实可以使用iText和PDFBox。我可以检查pdf文件是否包含文本,并根据结果确定该文件是否为OCRed,但是此解决方案并非100%准确。我想知道是否还有另一种方法来解决这个问题。 如您所知,解决方案必须基于Java。 问题答案: 最好的选择是检查它是否包含文本,还查看它是否包含大的页面化图像或覆盖页面的大量平铺图像。如果您

  • 问题内容: 在python中,是否存在检查给定文件/目录是否为符号链接的函数?例如,对于以下文件,我的包装函数应返回。 问题答案: 要确定目录条目是否为符号链接,请使用以下命令: os.path.islink(路径) 如果path引用的目录条目是符号链接,则返回True。如果不支持符号链接,则始终为False。 例如,给定:

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 问题内容: 类文件对象是Python中的对象,其行为类似于真实文件,例如具有read()和write method(),但实现方式不同。这是鸭打字概念的实现。 优良作法是在需要文件的任何地方都允许使用类似文件的对象,以便可以使用StringIO或Socket对象代替实际文件。因此执行这样的检查很不好: 检查对象(例如方法的参数)是否为“类文件”的最佳方法是什么? 问题答案: 除非您有特殊要求,否则

  • 问题内容: 如何检查 文件 的存在? 在模块的文档中,有方法的说明。但是,据我了解,它只检查目录的存在。而且我需要检查 文件 ! 如何才能做到这一点? 问题答案: 为什么不尝试打开文件? 无论如何,经过一分钟的搜索,请尝试以下操作: 对于Node.js v0.12.x及更高版本 双方并已弃用 *编辑: 已更改: 至: 林特抱怨双重等于不是三次等于。 使用fs.stat:

  • 问题内容: 我的webapp允许用户上传jar文件。但是,将jar文件上传后,它已损坏。我已经通过比较md5校验和(winmd5free)对此进行了验证。 上传的jar文件看起来“正常”和“正确” 与原始文件相比,文件大小看起来不错(在KB级别) 我可以使用7z打开上载的jar文件并查看其内容(资源和类文件),并且与原始文件相比,一切都相同 当我打开上载的jar文件(使用Notepad ++)时,