读取器初始化中的 ItextSharp-Exception “文档没有页面根目录”

本文关键字:根目录 文档 初始化 ItextSharp-Exception 读取 | 更新日期: 2023-09-27 18:32:32

嗨,我正在尝试使用 ItextSharp.dll 阅读各种 pdf 文件,当我尝试阅读它时,其中一些文件会给我抛出异常。 例外情况是:"文档没有页面根目录(意思是:它是无效的PDF)。我在合并示例中,在Itext网页(合并示例)中进行了一些测试,这些测试都成功了。那么,有人可以引导我看看我做错了什么吗?这是我的代码:

public void MergeFiles(String[] strFiles, String strFileresult)
    {
        Document document = new Document(); ;
        PdfCopy copy;
        copy = new PdfCopy(document, new FileStream(strFileresult, FileMode.Create));
        document.Open();
        PdfReader[] reader = new PdfReader[3];
        for (int i = 0; i < strFiles.Count(); i++)
        {
            reader[i] = new PdfReader(strFiles[i]);
            copy.AddDocument(reader[i]);
        }
        document.Close();
        for (int i = 0; i < reader.Count(); i++)
        {
            reader[i].Close();
        }
    }

读取器初始化中的 ItextSharp-Exception “文档没有页面根目录”

我不确定是什么导致了您的确切问题,但是一旦我们摆脱了不必要的内部数组并切换到using模式以获得自动清理,一切正常。

public void MergeFiles(string[] strFiles, String strFileresult) {
    using( var document = new Document()) {
        using (var copy = new PdfCopy(document, new FileStream(strFileresult, FileMode.Create))) {
            document.Open();
            foreach( var file in strFiles) {
                using (var reader = new PdfReader(file)) {
                    copy.AddDocument(reader);
                }
            }
            document.Close();
        }
    }
}