diff --git a/src/UglyToad.Pdf.Tests/Filters/Ascii85FilterTests.cs b/src/UglyToad.Pdf.Tests/Filters/Ascii85FilterTests.cs index 898f5bc5..70cdf557 100644 --- a/src/UglyToad.Pdf.Tests/Filters/Ascii85FilterTests.cs +++ b/src/UglyToad.Pdf.Tests/Filters/Ascii85FilterTests.cs @@ -29,24 +29,7 @@ O@3BB / F * &OCAfu2 text); } - [Fact] - public void DecodesEncodedPdfContent() - { - const string input = - @"0d&.mDdmGg4?O`>9P&*SFD)dS2E2gC4pl@QEb/Zr$8N_r$:7]!01IZ=0eskNAdU47<+?7h+B3Ol2_m!C+?)#1+B1 -`9>:0H_br.:""&q8d[6p/M -T()<(%'A;f?Ma+CT;%+E_a:A0>K&EZek1D/aN,F)u&6DBNA*A0>f4BOu4*+EM76E,9eK+B3(_<%9""p.!0AMEb031ATMF#Fp**=$,E,oN2F(oQ1+D#G#De*R""B-;&&FD,T'F!+n3AKY4b -F*22=@:F%a+=SF4C'moi+=Li?EZeh0FD)e-@<>p#@;]TuBl.9kATKCFGA(],AKYo5BOu4*+CT;%+C#7pF_Pr+@VfTuDf0B:+=SF4C'moi+= -Li?EZek1DKKT1F`2DD/TboKAKY](@:s.m/h%oBC'mC/$>""*cF*)G6@;Q?_DIdZpC&~>"; - - var result = filter.Decode(Encoding.ASCII.GetBytes(input), new PdfDictionary(), 0); - - var text = Encoding.ASCII.GetString(result); - - const string expected = @"1 0 obj + private const string PdfContent = @"1 0 obj << /Length 568 >> stream 2 J @@ -73,7 +56,44 @@ ET endstream endobj"; - Assert.Equal(expected.Replace("\r\n", "\n"), text); + [Fact] + public void DecodesEncodedPdfContent() + { + const string input = + @"0d&.mDdmGg4?O`>9P&*SFD)dS2E2gC4pl@QEb/Zr$8N_r$:7]!01IZ=0eskNAdU47<+?7h+B3Ol2_m!C+?)#1+B1 +`9>:0H_br.:""&q8d[6p/M +T()<(%'A;f?Ma+CT;%+E_a:A0>K&EZek1D/aN,F)u&6DBNA*A0>f4BOu4*+EM76E,9eK+B3(_<%9""p.!0AMEb031ATMF#Fp**=$,E,oN2F(oQ1+D#G#De*R""B-;&&FD,T'F!+n3AKY4b +F*22=@:F%a+=SF4C'moi+=Li?EZeh0FD)e-@<>p#@;]TuBl.9kATKCFGA(],AKYo5BOu4*+CT;%+C#7pF_Pr+@VfTuDf0B:+=SF4C'moi+= +Li?EZek1DKKT1F`2DD/TboKAKY](@:s.m/h%oBC'mC/$>""*cF*)G6@;Q?_DIdZpC&~>"; + + var result = filter.Decode(Encoding.ASCII.GetBytes(input), new PdfDictionary(), 0); + + var text = Encoding.ASCII.GetString(result); + + Assert.Equal(PdfContent.Replace("\r\n", "\n"), text); + } + + [Fact] + public void DecodesEncodedPdfContentMissingEndOfDataSymbol() + { + const string input = + @"0d&.mDdmGg4?O`>9P&*SFD)dS2E2gC4pl@QEb/Zr$8N_r$:7]!01IZ=0eskNAdU47<+?7h+B3Ol2_m!C+?)#1+B1 +`9>:0H_br.:""&q8d[6p/M +T()<(%'A;f?Ma+CT;%+E_a:A0>K&EZek1D/aN,F)u&6DBNA*A0>f4BOu4*+EM76E,9eK+B3(_<%9""p.!0AMEb031ATMF#Fp**=$,E,oN2F(oQ1+D#G#De*R""B-;&&FD,T'F!+n3AKY4b +F*22=@:F%a+=SF4C'moi+=Li?EZeh0FD)e-@<>p#@;]TuBl.9kATKCFGA(],AKYo5BOu4*+CT;%+C#7pF_Pr+@VfTuDf0B:+=SF4C'moi+= +Li?EZek1DKKT1F`2DD/TboKAKY](@:s.m/h%oBC'mC/$>""*cF*)G6@;Q?_DIdZpC&"; + + var result = filter.Decode(Encoding.ASCII.GetBytes(input), new PdfDictionary(), 0); + + var text = Encoding.ASCII.GetString(result); + + Assert.Equal(PdfContent.Replace("\r\n", "\n"), text); } } } diff --git a/src/UglyToad.Pdf/Filters/Ascii85Filter.cs b/src/UglyToad.Pdf/Filters/Ascii85Filter.cs index ca441494..852cb082 100644 --- a/src/UglyToad.Pdf/Filters/Ascii85Filter.cs +++ b/src/UglyToad.Pdf/Filters/Ascii85Filter.cs @@ -52,6 +52,8 @@ WriteData(asciiBuffer, index, writer); } + index = 0; + // The end break; } @@ -88,6 +90,11 @@ } } + if (index > 0) + { + WriteData(asciiBuffer, index, writer); + } + writer.Flush(); return stream.ToArray();