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)); }
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); }
private PdfTokenScanner GetScanner(string s, TestObjectLocationProvider locationProvider = null) { var input = StringBytesTestConverter.Convert(s, false); return(new PdfTokenScanner(input.Bytes, locationProvider ?? new TestObjectLocationProvider(), new TestFilterProvider())); }
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(ŠZV›Í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¶ìÖ|†óx8Wð¹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þ*$9gj=~Ì·QD E6o¥Ûi/Â`1ígGMq,;}Ž¼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)]); }