当前位置: 首页 > 知识库问答 >
问题:

iText 7-PdfReader构造函数中的解析异常意外关闭输入流

程志新
2023-03-14

升级到最新版本的iText for后,我遇到了一个问题。净额(7.1.15)-

请参见下面的示例代码

Stream pdfStream = GetPdfStream(...);

try
{
    IRandomAccessSource randomAccessSource = new RandomAccessSourceFactory().CreateSource(pdfStream);
    ReaderProperties readerProperties = new ReaderProperties
    {
        // ...
    };

    using (var pdfReader = new PdfReader(randomAccessSource, readerProperties))
    {
        pdfReader.SetCloseStream(false);

        // do things with pdfReader
    }
}
catch
{
    // ...
}

// reuse pdfStream somewhere else

在这种情况下,如果无法解析文件,我将得到异常(预期):

iText.IO.IOException: PDF header not found.
   at iText.Kernel.Pdf.PdfReader.GetOffsetTokeniser(IRandomAccessSource byteSource)
   at iText.Kernel.Pdf.PdfReader..ctor(IRandomAccessSource byteSource, ReaderProperties properties)

但是作为一个意外的副作用,它也关闭了输入流,这在以前的版本(7.1.15)中没有发生。因为异常发生在PdfReader构造函数中,它也还不能到达pdfReader。SetCloseStream。

有没有办法防止PdfReader关闭外部提供的输入流?或者有可能出现一个新的构造函数API,它将采用“leveOpen”参数,比如。NET StreamReader可以。

共有1个答案

董高洁
2023-03-14

该漏洞在7.2.0-SNAPSHOT7.1.17-SNAPSHOT版本中已修复。您可以使用以下Maven配置从iText Artifactory获取这些版本:

<repositories>
  <repository>
    <id>itext-snapshot</id>
    <name>iText Repository - snapshots</name>
    <url>https://repo.itextsupport.com/snapshot</url>
  </repository>
<repositories>

请注意,与自7.2以来的7.1.16-SNAPSHOT版本相比,7.2.0-SNAPSHOT版本包含突破性的更改。与7.1相比,x系列被认为是一次重大升级。x线。

 类似资料:
  • 问题内容: 在C ++中,对象的生命周期从构造函数成功完成时开始。在构造函数内部,该对象尚不存在。 问:从构造函数发出异常是什么意思? 答:这意味着构造已失败,该物体从未存在,其寿命从未开始。[ 来源 ] 我的问题是:Java是否同样适用?例如,如果我移交给另一个对象,然后构造函数失败,会发生什么情况? 这个定义明确吗?现在是否有对非对象的引用? 问题答案: 该对象存在,但未正确初始化。 每当构造

  • 首先要处理前面已经提到但还没有完全解决的问题。构造函数中发现错误时会发生什么情况? 例如,String 构造函数在 new 失败和无法取得保持 String 的内部表示所需空间时如何响应?问题是构造函数无法返回数值,如何让外部知道对象没有顺利构造呢,一种方案是返回没有正确构造的对象,希望对象使用者通过相应测试确定该对象是不能使用的对象。另一种方案是在构造函数之外设置一些变量。抛出的异常向外部传递失

  • 问题内容: 我不明白为什么这几行 导致异常并打印 …而“不可解析的”时间与我传递给SimpleDateFormat()的格式字符串兼容。 问题答案: 这是一个区域设置问题。用:

  • 我试图用以下代码建立一个新的PDO实例 我得到以下错误消息: 解析错误:语法错误,意外':',期待','或')'在第2行的 /Applications/XAMPP/xamppfiles/htdocs/example/connection.php 以前没有出现过这样的问题,直到我尝试在新的Mac上这样做。有人能帮助解决这个问题吗?

  • 问题内容: 有什么问题或。请阅读以下代码(或运行它,看看会发生什么): 它创建一个文件,通过GZIP 写入单个字节格式,并以相同格式读取同一文件中的字节。 这就是我运行的内容: 由于某些原因,阅读线似乎走错了路。 我搜索了该错误,并发现了一些有关Oracle的错误报告,这些错误报告是在2007-2010年间发布的。因此,我认为该错误仍然存​​在,但是我不确定我的代码是否正确,因此让我在此处发布并听

  • 我写了一个样例程序,如下所示。