public RandomAccessFileOrArray(string filename, bool forceRead)
{
var cachedBytes = PdfResourceFileCache.Get(filename);
if (cachedBytes != null)
{
ArrayIn = cachedBytes;
return;
}
if (!File.Exists(filename))
{
if (filename.StartsWith("file:/", StringComparison.OrdinalIgnoreCase) ||
filename.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ||
filename.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
{
var isp = filename.GetResponseStream();
try
{
ArrayIn = InputStreamToArray(isp);
return;
}
finally
{
try { isp.Dispose(); } catch { }
}
}
else
{
//Stream isp = BaseFont.GetResourceStream(filename);
Stream isp = null;
if ("-".Equals(filename))
{
isp = ((StreamReader)Console.In).BaseStream;
}
else
{
isp = BaseFont.GetResourceStream(filename);
}
if (isp == null)
{
throw new IOException(filename + " not found as file or resource.");
}
try
{
ArrayIn = InputStreamToArray(isp);
return;
}
finally
{
try { isp.Dispose(); } catch { }
}
}
}
else if (forceRead)
{
Stream s = null;
try
{
s = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
ArrayIn = InputStreamToArray(s);
}
finally
{
try { if (s != null)
{
s.Dispose();
}
} catch { }
}
return;
}
Filename = filename;
Rf = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
}