Exemplo n.º 1
0
        //прячет байтовый массив в docx файл
        public static void HideBytesInDoc(byte[] b, string path, Encoding1 enc = Encoding1.Unicode)
        {
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
            object   filename = path;
            Document doc      = app.Documents.Open(ref filename);

            StringBuilder strOfBits = new StringBuilder();

            foreach (byte item in b)
            {
                strOfBits.Append(GetBits(item));
            }

            for (int i = 0; i < strOfBits.Length; i++)
            {
                if (strOfBits[i] == '1')
                {
                    switch (enc)
                    {
                    case Encoding1.cp866:
                        doc.Characters[i + 1].Font.Color = (WdColor)ColorTranslator.ToOle(Color.FromArgb(0, 0, 0, 1));
                        break;

                    case Encoding1.win1251:
                        doc.Characters[i + 1].Font.Size = (float)14.5;
                        break;

                    case Encoding1.koi8u:
                        doc.Characters[i + 1].Font.Scaling = 101;
                        break;

                    case Encoding1.Unicode:
                        doc.Characters[i + 1].Font.Spacing = (float)0.1;
                        break;
                    }
                }
            }

            doc.Save();
            doc.Close();
            app.Quit();
        }
Exemplo n.º 2
0
        //запись строки в битовый массив
        public static byte[] GetBytes(string source, Encoding1 enc = Encoding1.Unicode)
        {
            Encoding encoding = Encoding.Unicode;

            switch (enc)
            {
            case Encoding1.win1251:
                encoding = Encoding.GetEncoding("windows-1251");
                break;

            case Encoding1.cp866:
                encoding = Encoding.GetEncoding("cp866");
                break;

            case Encoding1.koi8u:
                encoding = Encoding.GetEncoding("koi8-u");
                break;
            }

            byte[] bb = encoding.GetBytes(source);

            return(bb);
        }
Exemplo n.º 3
0
        //получение строки из битового массива
        public static string GetString(byte[] source, Encoding1 enc = Encoding1.Unicode)
        {
            Encoding encoding = Encoding.Unicode;

            switch (enc)
            {
            case Encoding1.win1251:
                encoding = Encoding.GetEncoding("windows-1251");
                break;

            case Encoding1.cp866:
                encoding = Encoding.GetEncoding("cp866");
                break;

            case Encoding1.koi8u:
                encoding = Encoding.GetEncoding("koi8-u");
                break;
            }

            string str = encoding.GetString(source);

            return(str);
        }
Exemplo n.º 4
0
        //извлекает байтовый массив из docx файла
        public static byte[] TakeBytesFromDoc(string path, Encoding1 enc = Encoding1.Unicode)
        {
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
            object   filename = path;
            Document doc      = app.Documents.Open(ref filename);

            StringBuilder strBits = new StringBuilder();

            for (int i = 0; i < doc.Characters.Count; i++)
            {
                object start = i;
                object end   = i + 1;
                bool   bit   = false;
                Range  range = doc.Range(ref start, ref end);
                switch (enc)
                {
                case Encoding1.cp866:
                    if (range.Font.Color == (WdColor)ColorTranslator.ToOle(Color.FromArgb(0, 0, 0, 1)))
                    {
                        bit = true;
                    }
                    break;

                case Encoding1.win1251:
                    if (range.Font.Size == (float)14.5)
                    {
                        bit = true;
                    }
                    break;

                case Encoding1.koi8u:
                    if (range.Font.Scaling == 101)
                    {
                        bit = true;
                    }
                    break;

                case Encoding1.Unicode:
                    if (range.Font.Spacing == (float)0.1)
                    {
                        bit = true;
                    }
                    break;
                }
                if (bit)
                {
                    strBits.Append('1');
                }
                else
                {
                    strBits.Append('0');
                }
            }

            List <string> bytes = new List <string>();

            int           kk   = 0;
            int           k0   = 0;
            StringBuilder strB = new StringBuilder();

            for (int i = 0; i < strBits.Length; i++)
            {
                strB.Append(strBits[i]);
                kk++;
                if (kk % 8 == 0)
                {
                    bytes.Add(strB.ToString());
                    if (strB.ToString() == "00000000")
                    {
                        k0++;
                    }
                    else
                    {
                        k0 = 0;
                    }
                    strB = new StringBuilder();
                }
                if (k0 == 3)
                {
                    if (enc == Encoding1.Unicode)
                    {
                        bytes.RemoveRange(bytes.Count - 2, 2);
                    }
                    else
                    {
                        bytes.RemoveRange(bytes.Count - 3, 3);
                    }
                    break;
                }
            }

            byte[] byts = new byte[bytes.Count];
            for (int i = 0; i < bytes.Count; i++)
            {
                byts[i] = GetByteFromBitString(bytes[i]);
            }

            doc.Close();
            app.Quit();

            return(byts);
        }