diff --git a/src/UglyToad.PdfPig/XObjects/XObjectFactory.cs b/src/UglyToad.PdfPig/XObjects/XObjectFactory.cs index 57c487f0..2df928ed 100644 --- a/src/UglyToad.PdfPig/XObjects/XObjectFactory.cs +++ b/src/UglyToad.PdfPig/XObjects/XObjectFactory.cs @@ -10,7 +10,8 @@ using Graphics.Colors; using Graphics.Core; using Tokenization.Scanner; - using Tokens; + using Tokens; + using UglyToad.PdfPig.Parser.Parts; using Util; internal static class XObjectFactory @@ -99,7 +100,15 @@ } } - var decodedBytes = supportsFilters ? new Lazy>(() => xObject.Stream.Decode(filterProvider, pdfScanner)) + var decodeParams = dictionary.GetObjectOrDefault(NameToken.DecodeParms, NameToken.Dp); + if (decodeParams is IndirectReferenceToken refToken) + { + dictionary = dictionary.With(NameToken.DecodeParms, pdfScanner.Get(refToken.Data).Data); + } + + var streamToken = new StreamToken(dictionary, xObject.Stream.Data); + + var decodedBytes = supportsFilters ? new Lazy>(() => streamToken.Decode(filterProvider, pdfScanner)) : null; var decode = EmptyArray.Instance;