Aspose.PDF 25.8.0 SaveAsync报错但Save正常问题求助
Aspose.PDF 25.8.0 SaveAsync空引用异常但同步Save正常
问题概述
使用Aspose.PDF 25.8.0版本时,部分PDF文件调用SaveAsync方法会触发空引用异常,但调用同步Save方法可正常完成保存。该问题并非极端案例:在真实文档包拆分场景中,5个测试样本里均存在触发报错的页面。测试文档包含敏感NPI数据,无法公开分享,但可提供私有版本。此前已查阅官方相关讨论,但未获得有效解决信息。
复现测试代码
[Fact] public async Task SaveAsyncErrors() { var pdf = new Aspose.Pdf.Document("Samples/foo.pdf"); Assert.Equal(4, pdf.Pages.Count); using var stream = new MemoryStream(); await Assert.ThrowsAnyAsync<System.Exception>(async () => { await pdf.SaveAsync(stream, default); }); stream.Position = 0; Assert.True(stream.Length > 0); } [Fact] public async Task SaveSucceeds() { var pdf = new Aspose.Pdf.Document("Samples/foo.pdf"); Assert.Equal(4, pdf.Pages.Count); using var stream = new MemoryStream(); pdf.Save(stream); stream.Position = 0; Assert.True(stream.Length > 0); }
报错堆栈信息
[xUnit.net 00:00:01.60] #=z8wGT2tXcLAwffN5xAuMxB7uUp3mEUHqIH$gHUkw= : Object reference not set to an instance of an object. [xUnit.net 00:00:01.60] Stack Trace: [xUnit.net 00:00:01.60] at #=z60o6JG817VC8Ny015DxsCoBU3hpY_aYcUA==.#=zC_t$pcI=.#=zAhlexu9FmNLiXIvcwQ==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zcP5F6q2oZGu6Hpfdmwl4IwJdIQXpCNY_4ncPYzs=.#=zbvgATYOjENg94TooFw==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zZPTHCBWoHd9z4oKrv2nlWrgKNmp4wAbY9g==.#=zC_t$pcI=.#=zCUJ0NEOwLmuepuDOgg==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zZPTHCBWoHd9z4oKrv2nlWrgKNmp4wAbY9g==.#=zC_t$pcI=.#=zCUJ0NEOwLmuepuDOgg==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zcP5F6q2oZGu6Hpfdmwl4IwJdIQXpCNY_4ncPYzs=.#=zbvgATYOjENg94TooFw==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zdoRdcBLQ5Kf5FknnEt9mjf$l6pRZNMzYZje43xcOoInOAujc7GN7W1A=.#=zZpbIusDHJ_G02Ja1Kg==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zzwBf3dkJrRUapWvGQqd5xYSFWe4sBl_83Q==.#=zV1QU8Ab64OQQ1EgvKA==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at #=zsJZMV9mlOTpb0hKb99XWlRG87XQV.#=zerduRMEAyJWDFKE9qg==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at Aspose.Pdf.Document.#=z3wSKFTZUsf8wK_h$0Bx3jxw=.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location --- [xUnit.net 00:00:01.60] at Aspose.Pdf.Document.#=zmWfFvLJcE0lER5OQ4g==.MoveNext() [xUnit.net 00:00:01.60] --- End of stack trace from previous location ---
解决建议
- 提交官方支持工单:空引用异常属于库内部逻辑问题,大概率是异步处理时的线程安全或资源未初始化导致。建议将私有测试文档提交给Aspose官方技术支持,帮助他们定位并修复bug;
- 临时替代方案:在问题修复前,可使用同步
Save方法替代异步调用;若必须保留异步上下文,可在异步方法内包裹同步调用(注意线程安全); - 升级版本测试:尝试升级到Aspose.PDF的最新版本,确认该问题是否已在后续版本中被修复;
- 检查PDF特殊结构:排查触发报错的PDF是否包含特殊元素(如加密内容、罕见字体、复杂注释),这些元素可能在异步处理流程中未被正确兼容。
内容的提问来源于stack exchange,提问作者Eric Patrick
相关产品推荐
相关产品推荐

