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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 11:27:34