/// <summary> /// Get the file's content as a string. /// </summary> /// <param name="filename">Currnet file's path</param> /// <returns>Content as a string, string.empty on error</returns> public static string Parse(string filename) { IFilter filter = null; try { StringBuilder plainTextResult = new StringBuilder(); filter = loadIFilter(filename); STAT_CHUNK ps = new STAT_CHUNK(); IFILTER_INIT mFlags = 0; uint i = 0; filter.Init(mFlags, 0, null, ref i); int resultChunk = 0; resultChunk = filter.GetChunk(out ps); while (resultChunk == 0) { if (ps.flags == CHUNKSTATE.CHUNK_TEXT) { uint sizeBuffer = 60000; int resultText = 0; while (resultText == Constants.FILTER_S_LAST_TEXT || resultText == 0) { sizeBuffer = 60000; System.Text.StringBuilder sbBuffer = new System.Text.StringBuilder((int)sizeBuffer); resultText = filter.GetText(ref sizeBuffer, sbBuffer); if (sizeBuffer > 0 && sbBuffer.Length > 0) { string chunk = sbBuffer.ToString(0, (int)sizeBuffer); plainTextResult.Append(chunk); } } } resultChunk = filter.GetChunk(out ps); } return(plainTextResult.ToString()); } finally { if (filter != null) { Marshal.ReleaseComObject(filter); } } }
/// <summary> /// Get the file's content as a string. /// </summary> /// <param name="filename">Currnet file's path</param> /// <returns>Content as a string, string.empty on error</returns> public static string Parse(string filename) { IFilter filter = null; try { StringBuilder plainTextResult = new StringBuilder(); filter = loadIFilter(filename); STAT_CHUNK ps = new STAT_CHUNK(); IFILTER_INIT mFlags = 0; uint i = 0; filter.Init(mFlags, 0, null, ref i); int resultChunk = 0; resultChunk = filter.GetChunk(out ps); while (resultChunk == 0) { if (ps.flags == CHUNKSTATE.CHUNK_TEXT) { uint sizeBuffer = 60000; int resultText = 0; while (resultText == Constants.FILTER_S_LAST_TEXT || resultText == 0) { sizeBuffer = 60000; System.Text.StringBuilder sbBuffer = new System.Text.StringBuilder((int)sizeBuffer); resultText = filter.GetText(ref sizeBuffer, sbBuffer); if (sizeBuffer > 0 && sbBuffer.Length > 0) { string chunk = sbBuffer.ToString(0, (int)sizeBuffer); plainTextResult.Append(chunk); } } } resultChunk = filter.GetChunk(out ps); } return plainTextResult.ToString(); } finally { if (filter != null) Marshal.ReleaseComObject(filter); } }