Issue with GDI+ Initialization Error in .NET 8 on EC2 (Aspose.Pdf Rendering Failure)

We are encountering a critical issue with the GDI+ initialization when running our .NET 8 application on an AWS EC2 instance. The error occurs during the PDF generation process using Aspose.Pdf, leading to the following exception:
The type initializer for ‘Gdip’ threw an exception.

  • Error Message: The type initializer for 'Gdip' threw an exception.
  • Stack Trace:
    he type initializer for ‘Gdip’ threw an exception.
    2025-04-07 06:31:24.819 +00:00 [Error] (LEDS Estimation API/ip-172-31-39-131/86/6ae8f5bf-c26f-4995-b829-9f696e381102) ConvertHtmlToDocument failed: at System.Drawing.SafeNativeMethods.Gdip.GdipCreateMatrix(IntPtr& matrix)
    at System.Drawing.Drawing2D.Matrix…ctor()
    at #=ziSngMXlzYEjZztOfH55jQ$pDGTbW…ctor()
    at #=zxrx6mXYFi6lGH1ksl5BWE7qJAPelWSBqOw==.#=z5vv2eRg=()
    at #=zxa7f250UYGnQMsNUfgVRB0KvZPmkIRGaGQ==.#=zUmndvuw=(#=zql3uijREUCOY_cbLcJOKdOHhMdJTmXAnFy$cEVG0XkLI #=zHfwSbto=, #=z2l92$G90AtELpohZHICJ3eSvtchG #=z06lErqdwtCes)
    at #=zTZMGGM3ER5Is$6zhZ3E8wIGmUsZbrvR17A==.#=ztWfHSyEthbeBRjwwOQaYwsc=(#=zSuufaJbKb6pUWiwYbg== #=zZf_9YNFKwGirC0Dc5Q==, #=zAImN20f3KnQSF0UiSNe456$7M4EaUCkSCNYWCc4= #=zOG1ixvg=)
    at #=zTZMGGM3ER5Is$6zhZ3E8wIGmUsZbrvR17A==.#=zUA2oNdXUyNrL4$Yd$jfDpqM=.#=za1xyZ7fC$$4rDFVhpG5IrbGiSgja(#=zSuufaJbKb6pUWiwYbg== #=z3Ijji68=)
    at System.Linq.Enumerable.SelectManySingleSelectorIterator2.MoveNext()
    at System.Linq.Enumerable.ConcatIterator1.MoveNext()
    at System.Linq.Enumerable.SelectManySingleSelectorIterator2.MoveNext()
    at System.Linq.Enumerable.SelectEnumerableIterator2.MoveNext()
    at #=z_GtzzFEH5z3rm3KzuKsHXXy4vGAqLYMTMQ==.#=zkahleSb8pPiz[T](IEnumerable1 #=zeLBTg_I=)
    at #=zWPVAg5MxL6i5fklTYtStu16w8jqAxvUdDzRGiFA=.#=zpydDGd8vs2UT1P7YsMRBGmM=.#=zr9suhgVG55rycroaZg==(#=zrKDKmPKQnDk_CWsb8y2zwbY= #=z0fsEDUg=, Int32 #=zOYuW$IA=, Int32 #=zj0vqGJ0=, Int32 #=zyoo9SR8=)
    at #=zWPVAg5MxL6i5fklTYtStu16w8jqAxvUdDzRGiFA=.#=z2O0i6cR87q7T(#=zTZMGGM3ER5Is$6zhZ3E8wIGmUsZbrvR17A== #=zF0eE$s4=, #=zAImN20f3KnQSF0UiSNe456$7M4EaUCkSCNYWCc4= #=zOG1ixvg=, #=zSuufaJbKb6pUWiwYbg==[] #=z$2IVXcJ9cb9KW3sp$A==, #=zfMK52zsC6TEzXKyyFIQ73AMjo0ZK #=z9Wjj6qz3TTwWVAaDaQ==)
    at #=zWPVAg5MxL6i5fklTYtStu16w8jqAxvUdDzRGiFA=.#=zR2RFzys0Esa6(#=zcXL$V3NJlcRFmlIGCcwSE1Q= #=zV9xjgWo=, #=zfMK52zsC6TEzXKyyFIQ73AMjo0ZK #=z9Wjj6qz3TTwWVAaDaQ==, #=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, #=zpiHLIxpqBRKFCT0sy9uCNT82cDfb #=zdg3BzBw=, #=zz7fRHWmQl9I0Nh3svnOqLbHRD7SKMwkGABCBA5eEAzx0 #=zePa2PnvDcZEWecKoNDVPrmo=, #=zUHGeg09jFaNtrGGSKvX0C90= #=zZsKt7MkYakKYiComHw==)
    at #=zWPVAg5MxL6i5fklTYtStu16w8jqAxvUdDzRGiFA=.#=zgPSknVA=(#=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, #=zpiHLIxpqBRKFCT0sy9uCNT82cDfb #=zdg3BzBw=)
    at #=zpiHLIxpqBRKFCT0sy9uCNT82cDfb.#=zgPSknVA=(#=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=)
    at #=zyWtrfY76arFQ4DTvFf9XzLB$ajhG_hzVvA==.#=z_laNdSY=()
    at #=zyWtrfY76arFQ4DTvFf9XzLB$ajhG_hzVvA==.#=z2CaWGfY=()
    at #=z$qLfyndBJYpplXFqCHROYWX9cCEe.#=zbIh4dSLUoRXB(#=z3xqlzk2HioLKqSAhXXTD9jg= #=zVHf_$aWgWqw3Gr6how==, #=zpiHLIxpqBRKFCT0sy9uCNT82cDfb[] #=zZjQgKssWzZIt, #=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, CancellationToken #=zDz9yaVA=)
    at #=z_sXxMYMtmqXR38q9py0loYoSwotP.Render(#=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, CancellationToken #=zDz9yaVA=, #=zEKXlJtERhxPtTZeOxyVQLsU=[] #=zfQ66hNM=, #=zcXL$V3NJlcRFmlIGCcwSE1Q=[] #=zACL62yw=)
    at #=z_sXxMYMtmqXR38q9py0loYoSwotP.Render(#=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, TimeSpan #=zc$rxGFg=, #=z8qr4Qy6391bY4Irnx3GXz3s=[] #=zVZY54Uc=)
    at #=zRc4qYUEH6FlGe16bN$PHi3HbldQv.Render(#=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, #=zcqMlkB8= #=z1j8m0bM=, TimeSpan #=zc$rxGFg=)
    at #=zRc4qYUEH6FlGe16bN$PHi3HbldQv.Render(#=zEUJ7GQ5UOZkWP91uhZec$qiUg1bB #=zE6OfZb4=, #=zcqMlkB8= #=z1j8m0bM=)
    at #=zPbo15JJhYKpIvIi0OX7zlglzgIOE.#=zdng0lg5py6WD(Stream #=zsYiN2davVNR4, Document #=zfsjYQ8Bgh2tL, HtmlLoadOptions #=zytWATi77jkCH, String #=zlbAqzNkoNMVQ)
    at #=zPbo15JJhYKpIvIi0OX7zlglzgIOE.#=zAZEjkXc=(Stream #=zsYiN2davVNR4, Document #=zfsjYQ8Bgh2tL, HtmlLoadOptions #=zytWATi77jkCH, String #=zlbAqzNkoNMVQ)
    at #=zPbo15JJhYKpIvIi0OX7zlglzgIOE.#=zAZEjkXc=(Stream #=zsYiN2davVNR4, Document #=zfsjYQ8Bgh2tL, HtmlLoadOptions #=zytWATi77jkCH)
    at Aspose.Pdf.Document.#=z$mUASwE=(Stream #=zXstK03A=, LoadOptions #=zBErtcz0=, Boolean #=zXk0OR$GvdIGd)
    at Aspose.Pdf.Document.#=z$mUASwE=(Stream #=zXstK03A=, LoadOptions #=zBErtcz0=)
    at Aspose.Pdf.Document…ctor(Stream input, LoadOptions options)
    at LEDS.Estimation.Application.Requests.ProposalTemplate.GenerateProposal1CommandHandler.ConvertHtmlToDocument(String htmlContent, HtmlLoadOptions htmlOptions) in /src/src/LEDS.Estimation.Application/Requests/ProposalTemplate/GenerateProposal1Command.cs:line 323
    2025-04-07 06:31:24.820 +00:00 [Information] (LEDS Estimation API/ip-172-31-39-131/86/6ae8f5bf-c26f-4995-b829-9f696e381102) GenerateProposal1Command:Exception Entering Command.The type initializer for ‘Gdip’ threw an exception.
    2025-04-07 06:31:24.820 +00:00 [Error] (LEDS Estimation API/ip-172-31-39-131/86/6ae8f5bf-c26f-4995-b829-9f696e381102) The type initializer for ‘Gdip’ threw an exception.
  • Environment:
  • OS: Linux (EC2 instance, Amazon Linux 2 )
  • .NET Version: .NET 8
  • Library: Aspose.Pdf

@aswathy.psss
The Aspose.Pdf library uses System.Drawing, which is no longer supported in non-Windows environments.

In your case, you should use the Aspose.Pdf.Drawing library, which uses Aspose.Drawing as its graphical backend.
The library has the same API and works with licenses in the same way as Aspose.Pdf.

We have purchased a license for Aspose.PDF. Initially, our application was running on .NET 5, and everything worked fine after installing libgdiplus and the mono-complete DLL.

However, after upgrading to .NET 8, we’re encountering issues, and the application is no longer functioning as expected.

Is there any known compatibility issue between .NET 8, libgdiplus, and mono-complete that could be causing this problem?

@aswathy.psss

The MS Help section linked to above states:
2.png (50.2 KB)

It was written above

I’ll write it shorter, and perhaps more clearly: replace the Aspose.Pdf library with the Aspose.Pdf.Drawing library.