diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs
index fb34bd56..36e858cf 100644
--- a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs
+++ b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs
@@ -6,6 +6,7 @@ using Csla;
using Csla.Data;
using System.Data;
using System.Data.SqlClient;
+using EPocalipse.IFilter;
namespace VEPROMS.CSLA.Library
{
@@ -19,6 +20,45 @@ namespace VEPROMS.CSLA.Library
return _LibTitle;
}
}
+ public void UpdateDocAscii(string fileName)
+ {
+ try
+ {
+ DocAscii = null;
+ // Opening the file directly gives a sharing violation.
+ // Therefore, the file is copied and the copy is used and then deleted.
+ FileInfo myFile = new FileInfo(fileName);
+ FileInfo tempFile = new FileInfo(myFile.DirectoryName + "\\tmp_" + myFile.Name);
+ myFile.CopyTo(tempFile.FullName); // Copy to the temporary file
+ using (FilterReader reader = new FilterReader(tempFile.FullName)) // Open the IFilter Reader
+ {
+ DocAscii = FixString(reader.ReadToEnd()); // Read the ascii text
+ reader.Close(); // Close the reader
+ }
+ tempFile.Delete();
+ }
+ catch (Exception ex)
+ {
+ // Handle exceptions
+ }
+ }
+ ///
+ /// FixString processes the string returned and changes any symbols (0xF0??) to normal characters
+ ///
+ ///
+ ///
+ private static string FixString(string str)
+ {
+ StringBuilder results = new StringBuilder();
+ foreach (char c in str)
+ {
+ if ((c & 0xFF00) == 0xF000)
+ results.Append((char)(c & 0xFF));
+ else
+ results.Append((char)(c));
+ }
+ return results.ToString();
+ }
}
public partial class DocumentInfo
{
@@ -234,7 +274,7 @@ namespace VEPROMS.CSLA.Library
{
if (_MyDocument != null)
{
- _MyFile = new FileInfo(string.Format(@"{0}\tmp_{1}{2}.{3}", TemporaryFolder, MyDocument.DocID, Unique, Extension));
+ _MyFile = new FileInfo(string.Format(@"{0}\tmp_{1}{2}{3}", TemporaryFolder, MyDocument.DocID, Unique, MyDocument.FileExtension));
FileStream fs = _MyFile.Create();
fs.Write(MyDocument.DocContent, 0, MyDocument.DocContent.Length);
fs.Close();
@@ -266,7 +306,9 @@ namespace VEPROMS.CSLA.Library
Byte[] buf = new byte[_MyFile.Length];
fs.Read(buf,0,buf.Length);
fs.Close();
+ doc.FileExtension = MyFile.Extension;
doc.DocContent = buf;
+ doc.UpdateDocAscii(_MyFile.FullName);
doc.UserID = Environment.UserName;
doc.DTS = _MyFile.LastWriteTime;
doc.Save();