/// <summary> /// Create a new GhostscriptJob instance /// </summary> /// <param name="jobInfo">JobInfo of the job to convert</param> /// <param name="profile">Profile that determines the conversion process</param> /// <param name="tempFolder"> /// TempFolderProvider that gives the full Temp path, i.e. C:\Users\Admin\Local /// Settings\Temp\clawPDF /// </param> /// <param name="jobTranslations">Translations needed for the job</param> /// <param name="fileWrap">Only for testing</param> /// <param name="directoryWrap">Only for testing</param> public GhostscriptJob(IJobInfo jobInfo, ConversionProfile profile, JobTranslations jobTranslations, ITempFolderProvider tempFolder, IFile fileWrap, IDirectory directoryWrap) : base(jobInfo, profile, jobTranslations, fileWrap, directoryWrap) { var gsVersion = new GhostscriptDiscovery().GetBestGhostscriptInstance(); if (gsVersion == null) { Logger.Error("No valid Ghostscript version found."); throw new InvalidOperationException("No valid Ghostscript version found."); } Logger.Debug("Ghostscript Version: " + gsVersion.Version + " loaded from " + gsVersion.DllPath); _ghostScript = new GhostScript(gsVersion); JobTempFolder = PathSafe.Combine(tempFolder.TempFolder, "Job_" + PathSafe.GetFileNameWithoutExtension(PathSafe.GetRandomFileName())); JobTempOutputFolder = PathSafe.Combine(JobTempFolder, "tempoutput"); DirectoryWrap.CreateDirectory(JobTempFolder); DirectoryWrap.CreateDirectory(JobTempOutputFolder); // Shorten the temp folder for GS compatibility //缩短临时文件夹以实现GS兼容性 JobTempFolder = JobTempFolder; }
public void GetBestGhostscriptInstance_WithInternalAndNoRegistryInstance_ReturnsInternalInstance() { const string appPath = @"C:\MyApp"; const string gsPath = appPath + @"\Ghostscript"; const string gsExe = gsPath + @"\Bin\gswin32c.exe"; _fileMock.Stub(x => x.Exists(gsExe)).Return(true); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(appPath); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance("9.10"); Assert.AreEqual("<internal>", gs.Version); }
public void GetBestGhostscriptInstance_WithNoGhostscriptRegistryKey_ReturnsNull() { var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); hklm.Stub(x => x.OpenSubKey(ghostscriptDiscovery.RegistryPath)).Return(null); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance("9.10"); Assert.IsNull(gs); }
public void GetBestGhostscriptInstance_WhenExceptionIsThrownInRegistry_ReturnsNull() { var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); AddGhostscriptVersionsWithException(new[] { "9.15" }, ghostscriptDiscovery.RegistryPath, _fileMock, hklm); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance("9.10"); Assert.IsNull(gs); }
public void GetBestGhostscriptInstance_WithoutParameter_ReturnsDefaultVersion() { var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); AddGhostscriptVersions(new[] { "9.14", "9.10" }, ghostscriptDiscovery.RegistryPath, _fileMock, hklm); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance(); Assert.AreEqual(GhostscriptDiscovery.GhostscriptVersion, gs.Version); }
public void GetBestGhostscriptInstance_WithUnsupportedRegistryInstances_ReturnsNull() { var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); AddGhostscriptVersions(new[] { "9.14", "9.15" }, ghostscriptDiscovery.RegistryPath, _fileMock, hklm); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance("9.20"); Assert.IsNull(gs); }
public void GetBestGhostscriptInstance_WithMultipleRegistryInstances_ReturnsGivenRegistryInstance(string gsVersion) { var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); AddGhostscriptVersions(new[] { "9.14", "9.15" }, ghostscriptDiscovery.RegistryPath, _fileMock, hklm); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance(gsVersion); Assert.AreEqual(gsVersion, gs.Version); }
public void FindInternalInstance_WithGsInSubfolder_FindsInstance() { const string appPath = @"C:\MyApp"; const string gsPath = appPath + @"\Ghostscript"; const string gsExe = gsPath + @"\Bin\gswin32c.exe"; _fileMock.Stub(x => x.Exists(gsExe)).Return(true); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(appPath); var gs = ghostscriptDiscovery.FindInternalInstance(); Assert.IsNotNull(gs); Assert.AreEqual(gsExe, gs.ExePath); Assert.AreEqual("<internal>", gs.Version); }
public void FindInternalInstance_WithoutGs_ReturnsNull() { GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); AddGhostscriptVersions(new string[] { }, ghostscriptDiscovery.RegistryPath, _fileMock, hklm); var gs = ghostscriptDiscovery.FindInternalInstance(); Assert.IsNull(gs); }
public void FindInternalInstance_WithGsInSubfolder_BuildsCorrectLibPaths() { const string appPath = @"C:\MyApp"; const string gsPath = appPath + @"\Ghostscript"; const string gsExe = gsPath + @"\Bin\gswin32c.exe"; _fileMock.Stub(x => x.Exists(gsExe)).Return(true); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(appPath); var gs = ghostscriptDiscovery.FindInternalInstance(); string[] libPaths = gs.LibPaths.Split(';'); Assert.Contains(gsPath + @"\Bin", libPaths); Assert.Contains(gsPath + @"\Fonts", libPaths); Assert.Contains(gsPath + @"\Lib", libPaths); }
public void GetBestGhostscriptInstance_WithInternalAndRegistryInstance_ReturnsInternalInstance() { const string appPath = @"C:\MyApp"; const string gsPath = appPath + @"\Ghostscript"; const string gsExe = gsPath + @"\Bin\gswin32c.exe"; var hklm = MockRepository.GenerateStub <IRegistryKey>(); _registryMock.Stub(x => x.LocalMachine).Return(hklm); _fileMock.Stub(x => x.Exists(gsExe)).Return(true); GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(appPath); AddGhostscriptVersions(new [] { "9.15" }, ghostscriptDiscovery.RegistryPath, _fileMock, hklm); var gs = ghostscriptDiscovery.GetBestGhostscriptInstance("9.10"); Assert.AreEqual("<internal>", gs.Version); }
private bool HasGhostscriptInstance() { var gsVersion = new GhostscriptDiscovery().GetBestGhostscriptInstance(); return(gsVersion != null); }
public void Initialize_OnX64_GivesCorrectRegistryKey() { GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(x64: true); StringAssert.StartsWith("SOFTWARE\\Wow6432Node\\GPL Ghostscript", ghostscriptDiscovery.RegistryPath); }
public void Initialize_AppPath_NotEmpty() { GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(); Assert.IsNotNullOrEmpty(ghostscriptDiscovery.ApplicationPath); }
private void SetUpGhostscript() { GhostscriptVersion gsVersion = new GhostscriptDiscovery().GetBestGhostscriptInstance(); Assert.IsNotNull(gsVersion, "No Ghostscript instance found"); }