升级到最新版本的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可以。
该漏洞在7.2.0-SNAPSHOT
和7.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年间发布的。因此,我认为该错误仍然存在,但是我不确定我的代码是否正确,因此让我在此处发布并听
我写了一个样例程序,如下所示。