Example #1
0
        PieceDescriptorCollection GetPieceDescriptors(BinaryReader reader, int offset, uint length)
        {
            PieceDescriptorCollection result = new PieceDescriptorCollection(offset, length);

            result.Read(reader);
            return(result);
        }
Example #2
0
        bool LoadText(OleStorage storage, out string text)
        {
            text = string.Empty;
            if (storage == null)
            {
                return(false);
            }

            BinaryReader documentReader = GetDocumentStreamReader(storage);

            if (documentReader == null)
            {
                return(false);
            }

            int    pdcOffset;
            uint   pdcLength;
            string tableName;

            GetDataFromFib(documentReader, out tableName, out pdcOffset, out pdcLength);

            BinaryReader tableReader = GetTableStreamReader(storage, tableName);

            if (tableReader == null)
            {
                return(false);
            }

            PieceDescriptorCollection pieces = GetPieceDescriptors(tableReader, pdcOffset, pdcLength);

            if (pieces == null)
            {
                return(false);
            }

            int count = pieces.Count;

            for (int i = 0; i < count; i++)
            {
                uint pieceStart;
                uint pieceEnd;
                bool isUnicode = pieces.GetPieceFileBounds(i, out pieceStart, out pieceEnd);

                documentReader.BaseStream.Seek(pieceStart, SeekOrigin.Begin);
                text += ReadString(documentReader, pieceEnd - pieceStart, isUnicode);
            }
            return(true);
        }