使用C#与ABCPDF10读取PDF时,遇0KB空文件抛异常如何忽略并继续?
处理ABCPDF10读取0KB空PDF文件的异常问题
我之前批量处理PDF时也碰到过一模一样的情况,用ABCPDF10读取0KB空文件时总会抛出PDFException,分享两个实用的解决思路,帮你跳过这类文件继续执行:
1. 提前校验文件大小(推荐)
从根源避免异常抛出,先通过FileInfo检查文件是否为0KB,是空文件直接跳过,再处理正常文件:
string pdfPath = "目标PDF文件路径"; FileInfo fileInfo = new FileInfo(pdfPath); // 检查文件是否为空(0KB) if (fileInfo.Length == 0) { Console.WriteLine($"跳过空文件: {pdfPath}"); continue; // 如果是循环批量处理,用continue跳过当前文件;单文件处理用return即可 } // 正常读取并处理非空PDF using (Doc document = new Doc()) { try { document.Read(pdfPath); // 这里写你的PDF后续处理逻辑,比如提取文本、转换格式等 } catch (PDFException ex) { // 处理其他非空文件的PDF异常,比如记录日志 Console.WriteLine($"处理文件{pdfPath}时出错: {ex.Message}"); } }
2. 捕获PDFException并判断跳过
如果碰到一些特殊情况(比如文件大小不为0但实际是损坏的空PDF),可以直接捕获异常,通过异常信息判断是否为空文件,再跳过:
using (Doc document = new Doc()) { try { document.Read(pdfPath); // 正常处理PDF的逻辑 } catch (PDFException ex) { // ABCPDF针对空/无效PDF的异常消息通常包含"Invalid PDF"或"Empty"关键词 if (ex.Message.Contains("Invalid PDF") || ex.Message.Contains("Empty")) { Console.WriteLine($"跳过无效空文件: {pdfPath}"); } else { // 其他异常可以选择记录日志或者重新抛出 throw; } } }
小提示
如果是批量遍历文件夹处理PDF,把上面的逻辑套在循环里就可以了。另外一定要用using块包裹Doc对象,确保资源被正确释放,避免内存泄漏。
内容的提问来源于stack exchange,提问作者user1852574
相关产品推荐
相关产品推荐

