// Compression functions public int PutStream(byte [] data) { int result = StartObj(); Put("<<"); if (Compress) { Put("/Filter/FlateDecode"); #if ( UseZLib ) { data = Deflate(data); Put("/Length " + data.Length + ">>stream\n"); Put(data); } #else { MemoryBitStream bb = new MemoryBitStream(); Deflator.Deflate(data, bb); int clen = bb.ByteSize(); Put("/Length " + clen + ">>stream\n"); bb.CopyTo(OS); OS_Total += clen; } #endif } else { Put("/Length " + data.Length + ">>stream\n"); Put(data); } Put("\nendstream"); EndObj(); return(result); }
public static byte [] Deflate(byte [] data) { #if ( UseZLib ) IO.MemoryStream cs = new IO.MemoryStream(); Zlib.ZDeflaterOutputStream zip = new Zlib.ZDeflaterOutputStream(cs); zip.Write(data, 0, data.Length); zip.Finish(); return(cs.ToArray()); #else MemoryBitStream mbs = new MemoryBitStream(); Deflator.Deflate(data, mbs); return(mbs.ToArray()); #endif }