コード例 #1
0
        /// <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;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
ファイル: App.xaml.cs プロジェクト: masums/clawPDF
        private bool HasGhostscriptInstance()
        {
            var gsVersion = new GhostscriptDiscovery().GetBestGhostscriptInstance();

            return(gsVersion != null);
        }
コード例 #13
0
        public void Initialize_OnX64_GivesCorrectRegistryKey()
        {
            GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks(x64: true);

            StringAssert.StartsWith("SOFTWARE\\Wow6432Node\\GPL Ghostscript", ghostscriptDiscovery.RegistryPath);
        }
コード例 #14
0
        public void Initialize_AppPath_NotEmpty()
        {
            GhostscriptDiscovery ghostscriptDiscovery = CreateGhostscriptDiscoveryWithMocks();

            Assert.IsNotNullOrEmpty(ghostscriptDiscovery.ApplicationPath);
        }
コード例 #15
0
ファイル: TestHelper.cs プロジェクト: zsy960/PDFCreator
        private void SetUpGhostscript()
        {
            GhostscriptVersion gsVersion = new GhostscriptDiscovery().GetBestGhostscriptInstance();

            Assert.IsNotNull(gsVersion, "No Ghostscript instance found");
        }