We have recently updated our aspose library to R22.8 because of a .NET 6 migration, but are encountering severe errors with the library.
Seems like this issue is happening only in Linux while Windows works:
Our test environment OS is ubuntu focal with .net 6 SDK
Test method XXXX.XXX.XXX.Output.UnitTests.Aspose.PdfDocumentGenerationTests.CanGeneratePdfWithTextFragmentToFile threw exception:
System.ArgumentNullException: Value cannot be null. (Parameter ‘key’)
Stacktrace
at System.Collections.Generic.Dictionary2.FindValue(TKey key) at System.Collections.Generic.Dictionary
2.TryGetValue(TKey key, TValue& value)
at #=zfZkI5HwMO0AYH2XFAcTHnndrqPOMLOcMgw==.#=zp0wsy5s=(#=z9TkP0rg= #=z9dnZZfI=)
at #=zFwKFlNZeTLXa6$QVg450o7iN40_VO7d3fw==.#=zaG2Tykd$Y0NI`2.#=zEE8Z_GaSDRkR(#=z9TkP0rg= #=z9dnZZfI=, #=zkFyUOhU=& #=z2ux310g=)
at #=zW7MVUlrm5dZ8EWzx1g$HVRTZSgUIbdIAwDDTU1U=.#=zR7NBxxi0Iaqd(#=zpSgslm80$UwTaHu_XI4Tyte7iZ7i #=zFxkNSr7lst6q)
at #=ztGewaiQeCXTE_TAh$tumsx6nToGvtSTO_kI9xgpb4Via.#=zi_6WuoaNpJpK()
at #=ztGewaiQeCXTE_TAh$tumsx6nToGvtSTO_kI9xgpb4Via.#=zEnMhqSk=()
at #=zs71scsxPtkQdVQAvuAmfiZ7YqXpDd03y6$4WQlK2eQr1.#=zYQSpTsY=(#=zDbvJQYhI0CigmE3c4Dr9JXnUYg5_ #=zTrleiB0=, #=z3wcXVPfEaF2Fo7alVowhOFe4XPDhgB68nw== #=zKQHMiyU=, #=zyJecUYaB6pdDfKOoDlWBYnXBNTC4AKpCCXuke8vjl$CM #=zkQunISM=)
at Aspose.Pdf.Page.CalculateContentBBox()
at Aspose.Pdf.Page.#=zhgQeCAs=(Page #=zKQHMiyU=)
at Aspose.Pdf.Page.#=zdlCawL8R2Kntx3CZRQ==()
at Aspose.Pdf.Document.ProcessParagraphs()
at Aspose.Pdf.Document.#=zIgncJc8VsF3C(Stream #=zJywVSn4=, SaveOptions #=zgGb7E$RCz7_R)
at Aspose.Pdf.Document.#=z_Si59eYP6riT(String #=z0jgaUxr5BFT_)
at Aspose.Pdf.Document.Save(String outputFileName)
at XXXX.XXX.XXX.Output.UnitTests.Aspose.PdfDocumentGenerationTests.CanGeneratePdfWithTextFragmentToFile() in /home/jenkins/agent/workspace/common/src/Source/XXX/XXXX.XXX.XXX.Output.UnitTests/Aspose/PdfDocumentGenerationTests.cs:line 33
Attached you can see the failing test.
using System;
using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Shouldly;
namespace XXXX.XXX.XXX.Output.UnitTests.Aspose
{
[TestClass]
public class PdfDocumentGenerationTests
{
public PdfDocumentGenerationTests()
{
FontRepository.Sources.Add(new FolderFontSource(@"/usr/share/fonts/"));
}
[TestMethod]
public void CanGeneratePdfWithTextFragmentToFile()
{
const string fileName = "test.pdf";
try
{
using var document = new Document();
var page = document.Pages.Add();
var textFragment = new TextFragment("test");
page.Paragraphs.Add(textFragment);
document.Save(fileName);
File.Exists(fileName).ShouldBeTrue();
}
finally
{
if (File.Exists(fileName))
{
File.Delete(fileName);
}
}
}
[TestMethod]
public void CanGeneratePdfWithTextFragment()
{
using var document = new Document();
var page = document.Pages.Add();
var textFragment = new TextFragment("test");
page.Paragraphs.Add(textFragment);
using var memoryStream = new MemoryStream();
document.Save(memoryStream);
memoryStream.GetBuffer().Length.ShouldBeGreaterThan(0);
}
[TestMethod]
public void CanGeneratePdfWithTextFragmentAndFont()
{
using var document = new Document();
var page = document.Pages.Add();
var textFragment = new TextFragment("test")
{
TextState =
{
Font = FontRepository.FindFont("Arial"),
FontSize = 12
}
};
page.Paragraphs.Add(textFragment);
using var memoryStream = new MemoryStream();
document.Save(memoryStream);
memoryStream.GetBuffer().Length.ShouldBeGreaterThan(0);
}
[TestMethod]
public void CanGeneratePdfWithHtmlFragment()
{
using var document = new Document();
var page = document.Pages.Add();
var htmlFragment = new HtmlFragment("<h1>Test</h1>");
page.Paragraphs.Add(htmlFragment);
using var memoryStream = new MemoryStream();
document.Save(memoryStream);
memoryStream.GetBuffer().Length.ShouldBeGreaterThan(0);
}
}
}