You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:31:01