private void Open()
{
string extension = Path.GetExtension(_filePath).ToLower();
if (!string.IsNullOrWhiteSpace(_filePath) && string.IsNullOrWhiteSpace(extension))
{
using (FileStream srm = new FileStream(_filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
extension = StreamHelper.GetStreamExtension(srm);
}
}
switch (extension)
{
case ".pdf":
{
_formatHandler = new GhostscriptViewerPdfFormatHandler(this);
break;
}
case ".ps":
{
_formatHandler = new GhostscriptViewerPsFormatHandler(this);
break;
}
case ".eps":
{
_formatHandler = new GhostscriptViewerEpsFormatHandler(this);
break;
}
default:
{
_formatHandler = new GhostscriptViewerDefaultFormatHandler(this);
break;
}
}
_interpreter.Setup(new GhostscriptViewerStdIOHandler(this, _formatHandler), new GhostscriptViewerDisplayHandler(this));
List<string> args = new List<string>();
args.Add("-gsnet");
args.Add("-sDEVICE=display");
if (Environment.Is64BitProcess)
{
args.Add("-sDisplayHandle=0");
}
else
{
args.Add("-dDisplayHandle=0");
}
args.Add("-dDisplayFormat=" +
((int)DISPLAY_FORMAT_COLOR.DISPLAY_COLORS_RGB |
(int)DISPLAY_FORMAT_ALPHA.DISPLAY_ALPHA_NONE |
(int)DISPLAY_FORMAT_DEPTH.DISPLAY_DEPTH_8 |
(int)DISPLAY_FORMAT_ENDIAN.DISPLAY_LITTLEENDIAN |
(int)DISPLAY_FORMAT_FIRSTROW.DISPLAY_BOTTOMFIRST).ToString());
args.Add("-dDOINTERPOLATE");
args.Add("-dGridFitTT=0");
// fixes bug: http://bugs.ghostscript.com/show_bug.cgi?id=695180
if (_interpreter.LibraryRevision > 910)
{
args.Add("-dMaxBitmap=1g");
}
foreach(string customSwitch in _customSwitches)
{
args.Add(customSwitch);
}
_interpreter.InitArgs(args.ToArray());
_formatHandler.Initialize();
_formatHandler.Open(_filePath);
if (_showPageAfterOpen)
{
this.ShowPage(_formatHandler.FirstPageNumber, true);
}
}