Example #1
0
        private static PdfTokenScanner GetScanner(string s, TestObjectLocationProvider locationProvider = null)
        {
            var input = StringBytesTestConverter.Convert(s, false);

            return(new PdfTokenScanner(input.Bytes, locationProvider ?? new TestObjectLocationProvider(),
                                       new TestFilterProvider(), NoOpEncryptionHandler.Instance));
        }
Example #2
0
        public void ReadsStreamWithIndirectLength()
        {
            const string s = @"5 0 obj 52 endobj



12 0 obj

<< /Length 5 0 R /S 1245 >>

stream
%¥×³®í»š}%§X{{tøNåÝž¶ö¢ÖÞ¾–~´¼
endstream
endobj";
            var          locationProvider = new TestObjectLocationProvider();

            locationProvider.Offsets[new IndirectReference(5, 0)] = 0;

            var scanner = GetScanner(s, locationProvider);

            var token = ReadToEnd(scanner)[1];

            var stream = Assert.IsType <StreamToken>(token.Data);

            var bytes = stream.Data.ToArray();

            Assert.Equal(52, bytes.Length);

            var outputString = Encoding.UTF8.GetString(bytes);

            Assert.Equal("%¥×³®í»š}%§X{{tøNåÝž¶ö¢ÖÞ¾–~´¼", outputString);
        }
Example #3
0
        private PdfTokenScanner GetScanner(string s, TestObjectLocationProvider locationProvider = null)
        {
            var input = StringBytesTestConverter.Convert(s, false);

            return(new PdfTokenScanner(input.Bytes, locationProvider ?? new TestObjectLocationProvider(),
                                       new TestFilterProvider()));
        }
Example #4
0
        public void ReadsStreamObject()
        {
            const string s = @"
352 0 obj
<< /S 1273 /Filter /FlateDecode /Length 353 0 R >> 
stream
H‰œUkLSgþÚh¹IÝÅlK(%[ÈÅ©+ƒåê©ŠèæÇtnZ)Z¹¨Oå~9ŠÊµo”[éiK)÷B¹´
É² ©¸˜ n±º×dKöcÏ÷ãœç{ßï}¾÷ÍÉs   Ô;€
À»—ÀF`ÇF@ƒ4˜ï	@¥T¨³fY: žw̵;’’Îq®]cƒÿdp¨ÛI3F#G©#œ)TÇqW£NÚѬgOKbü‡µ#á¡£Þaîtƒƒ›ß–
¾“S>}µuÕõ5M±¢ª†»øÞû•q÷îÜ~¬PòžÞ~•¬ëɃGÅ-Ñ­ím·°gêêb,/,£P§õ^v¾ãÁô¿¿ŠTE]²±{šuwÔ`LG³DªìTÈ
A¡¬àð‰É©ˆ°‘¼›‚%¥×s³®í»š}%§X{{tøNåÝž¶ö¢ÖÞ¾–~´¼¬°À“Éððr¥8»P£ØêÁi½®Û(éhŽ‘ú;x#dÃÄ$m
+)
)†…±n
9ùyŽA·n\ï»t!=3£½¡:®­µåâ¹Ô³ø¼ËiûSÎsë;•Dt—ö$WÉ4U‘¢ºÚšñá1íÐèÔó‚svõ(/(+D²#mZÏ6êüÝ7x‡—†”‡E„²‚|ê«êªDµ5q°šR¦RÈ£n¾[è~“}ýƒÝ½SꞦ'æQŽzÝ‚mæ
óF+Õ%ù‡ƒß9SˆŒÓãšH¶~L-#T]êîÁ©ÎkbjÒp½¸$¤´(4<,""øfvΕ< VЍ«#4'2l'Ð1ñðn?sìûãI'OŸøñçŸN5(äÊ'âÎѾÞþíðƒQmu}]Õ£‡c›©.Œòµ9zz0Ѳ‚B¢«#š-3ªà<cš¥’¡È¨qµ¦{pìۄÇŽŠ/íO»|áIclSCuo_Oœ\\ï!ª©«­ªƒTþ5Ó‹™Ü”óî_9|ýÍ7ø!Ñý|2Goÿ€Î¶Öö…<ðáƒGéGá½G´Ã.®TŠóî=_|þ™‡ƒééFwßà 0æîc_Ó릳|ý|¶®æ„…†G8Òüï€l…\¦RFº:‰	VP𕐝S“Û¶ï V—ø/¿¾Xæ+«««ÖŽ4>ŸŸ¦Pà8®Ó…¼æ¢BaÅÐkëÊŠukÈÊÖL£­ivvv…k2=µZMØ|Úl(ŠZ­V›ÍbI>Ÿl¹œ(â±Äb­ø”Uªñeü©U*‹’“Oð,„E+¶Êà>ŽU”ÎÌõçlºFÃ_ÃÙl?¶=>>!>þC¿-×à©©©x¾€¢ŠÊåòtÃ0‹Æôz“‰ NÊ,¬‚kÀ°F‚XÛ4&“ÉfÃñÅæûæy=ÆãIðE_¾Èårår/XÞ„/·qò›m¶ìÖ|†óx8Wð¹hºÜÂÕalÎü’˜Ã0^Òòòü¼yÞ¶´´DX
                )¨ÇM8lüM…Oúý| 1Ïãk»:t<…ÂÚl¶e¾†” éKÜl6c¹¸É„› ”)‰'3¤œ\–™ËN–™ÿe^Ё² y÷ð¹f`3ëž´	¸“$d:e†)!%2ºdvË@½N¼ªŠ Ùná¹ ¼¿@€Ã.èšs ì÷ûM€2(E4_ | FÑ.@v@÷¤ÃÅ0È Pž~,€:»H¤k¾hT	Œ	€ êÇV:Ô…©@@oH¯(3T‰{""C½SñŠœþtz3€•ƒ ñf.¬SЍøzWþ*$9gj=~Ì·QD E6o¥Ûi/Â`1ígGMq,;}Ž¼sÔ×®kDü˜J{e5‚²ìɐ~Y)}fA>:˜ù–""Yò	ç¹=ù²yÛ¡¿i	aœ‘ØϺþÇoäO ôkÆ)
                endstream
                    endobj
                353 0 obj
                1479
                endobj";

            var locationProvider = new TestObjectLocationProvider();

            // Mark location of "353 0 obj"
            locationProvider.Offsets[new IndirectReference(353, 0)] = 1643;

            var scanner = GetScanner(s, locationProvider);

            var tokens = ReadToEnd(scanner);

            Assert.Equal(2, tokens.Count);

            var stream = Assert.IsType <StreamToken>(tokens[0].Data);

            var str = Encoding.UTF8.GetString(stream.Data.ToArray());

            Assert.StartsWith("H‰œUkLSgþÚh¹IÝÅl", str);

            Assert.Equal(2, locationProvider.Offsets[new IndirectReference(352, 0)]);
        }