public override void Open(string filePath)
{
_content = File.ReadAllText(filePath);
int i = _content.IndexOf("%!");
if (i > 0)
{
_content = _content.Substring(i, _content.Length - i - 1);
}
i = _content.IndexOf("%%EOF");
if (i > -1)
{
_content = _content.Substring(0, i + 5);
}
if (this.Viewer.EPSClip)
{
unsafe
{
fixed (char* p = _content)
{
UnmanagedMemoryStream ums = new UnmanagedMemoryStream((byte*)p, _content.Length);
DSCTokenizer tokenizer = new DSCTokenizer(ums, true, BitConverter.IsLittleEndian);
DSCToken token = null;
while ((token = tokenizer.GetNextDSCKeywordToken()) != null)
{
if (token.Text == "%%BoundingBox:")
{
try
{
DSCToken v1 = tokenizer.GetNextDSCValueToken(DSCTokenEnding.Whitespace | DSCTokenEnding.LineEnd);
DSCToken v2 = tokenizer.GetNextDSCValueToken(DSCTokenEnding.Whitespace | DSCTokenEnding.LineEnd);
DSCToken v3 = tokenizer.GetNextDSCValueToken(DSCTokenEnding.Whitespace | DSCTokenEnding.LineEnd);
DSCToken v4 = tokenizer.GetNextDSCValueToken(DSCTokenEnding.Whitespace | DSCTokenEnding.LineEnd);
this.BoundingBox = new GhostscriptRectangle(
float.Parse(v1.Text, System.Globalization.CultureInfo.InvariantCulture),
float.Parse(v2.Text, System.Globalization.CultureInfo.InvariantCulture),
float.Parse(v3.Text, System.Globalization.CultureInfo.InvariantCulture),
float.Parse(v4.Text, System.Globalization.CultureInfo.InvariantCulture));
}
catch { }
break;
}
}
tokenizer.Dispose(); tokenizer = null;
ums.Close(); ums.Dispose(); ums = null;
}
}
}
this.FirstPageNumber = 1;
this.LastPageNumber = 1;
}