diff --git a/Code/CSRender/CSRender/CompareTIFF.cs b/Code/CSRender/CSRender/CompareTIFF.cs index 4382b31b08fe91736dae9d98a12f879f265a99d9..97bb072ac28a037b27ef6b0a7e82fc66874acae1 100644 --- a/Code/CSRender/CSRender/CompareTIFF.cs +++ b/Code/CSRender/CSRender/CompareTIFF.cs @@ -103,7 +103,7 @@ namespace CSRender processStartInfo.Arguments += "/pureVLog \""; processStartInfo.Arguments += logFileName; processStartInfo.Arguments += "\" "; - + //差異画像の出力 inDiffPath = System.IO.Path.Combine(inDiffPath, inTargetFileName); if (!Directory.Exists(inDiffPath)) diff --git a/Code/CSRender/CSRender/MainWindow.xaml.cs b/Code/CSRender/CSRender/MainWindow.xaml.cs index c108802b224c3d68097def0a06e7b90da9d958d6..d0c354e58c8a5292f355fcf1559e09760c040d49 100644 --- a/Code/CSRender/CSRender/MainWindow.xaml.cs +++ b/Code/CSRender/CSRender/MainWindow.xaml.cs @@ -138,6 +138,33 @@ namespace CSRender return; } + //検版対象がファイル名の場合、ファイル名が対象とリファレンスとで一致しなくても検版するように仕込み + bool dummyFlag = false; + string dummyFileName = ""; + if (File.Exists(referenceBoxText) && File.Exists(targetBoxText)) + { + //対象とリファレンスが同名ファイルであるか確認 + string TarFileName = System.IO.Path.GetFileName(referenceBoxText); + string RefFileName = System.IO.Path.GetFileName(targetBoxText); + if(TarFileName != RefFileName) + { + //指定した作業フォルダ内にダミー用フォルダを設定(無ければ生成) + string dummyDir = System.IO.Path.Combine(workBoxText, "Dummy"); + if (!Directory.Exists(dummyDir)) { Directory.CreateDirectory(dummyDir); } + string dummyTarDir = System.IO.Path.Combine(dummyDir, "Target"); + if (!Directory.Exists(dummyTarDir)) { Directory.CreateDirectory(dummyTarDir); } + string dummyRefDir = System.IO.Path.Combine(dummyDir, "Reference"); + if (!Directory.Exists(dummyRefDir)) { Directory.CreateDirectory(dummyRefDir); } + //ダミーファイルを作成 + dummyFileName = createDummyFile(targetBoxText, dummyTarDir, dummyFileName); + dummyFileName = createDummyFile(referenceBoxText, dummyRefDir, dummyFileName); + dummyFlag = true; + //検版対象をダミーに指定 + targetBoxText = dummyTarDir; + referenceBoxText = dummyRefDir; + } + } + //出力ファイルpathのチェック if (!Directory.Exists(workBoxText) && !File.Exists(workBoxText)) { @@ -374,8 +401,22 @@ namespace CSRender //referenceErrorFlag = true; } - //指定先にレポートを移動 - CompareTIFF.moveReport(workBoxText, workDir); + try + { + //指定先にレポートを移動 + CompareTIFF.moveReport(workBoxText, workDir); + } + catch (Exception ex) + { + CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning); + //ログ記述 + DateTime faileTIme = DateTime.Now; + string logText = "[" + faileTIme + "]" + Environment.NewLine; + logText += "例外の生じた処理:ログファイルの移動" + Environment.NewLine; + logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine; + File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText); + //referenceErrorFlag = true; + } //レポートのパスを表示 ResultConsole.Text += " 検版レポートのパス:"; @@ -386,9 +427,23 @@ namespace CSRender reportBox.Text = System.IO.Path.Combine(workBoxText, "report", PDFName); } + //リファレンスファイルを発見できず検版回数0の場合、メッセージを出力して通知 + if (allPDFNum == 0) + { + CustomMsgBox.Show(mainWindow, "指定先のリファレンスフォルダから、対象フォルダ内のファイルと対応するファイルを発見できませんでした。", + "検版対象を発見できませんでした。", MessageBoxButton.OK, MessageBoxImage.Warning); + } + //生成したレポートinf.txtを全削除 deleteReportTexts(); + //生成したダミーファイルを削除 + if (dummyFlag) + { + deleteDummyFile(System.IO.Path.Combine(workBoxText, "Dummy", "Target"), dummyFileName); + deleteDummyFile(System.IO.Path.Combine(workBoxText, "Dummy", "Reference"), dummyFileName); + } + //パラメータを次回初期値用に保存 Properties.Settings.Default.resolutionSetting = ResolutionBox.Value; Properties.Settings.Default.formatSetting = FileSelect.Text; @@ -397,8 +452,8 @@ namespace CSRender Properties.Settings.Default.removePointSetting = SmallDiffBox.Value; Properties.Settings.Default.shadingOffSetting = VisualBox.Value; Properties.Settings.Default.workSpaceSetting = workBoxText; - Properties.Settings.Default.targetSetting = targetBoxText; - Properties.Settings.Default.referenceSetting = referenceBoxText; + Properties.Settings.Default.targetSetting = targetBox.Text; + Properties.Settings.Default.referenceSetting = referenceBox.Text; Properties.Settings.Default.reportPathSetting = reportBoxText; Properties.Settings.Default.Save(); @@ -556,8 +611,16 @@ namespace CSRender /// private string[] getPDFName(string targetDir) { - string[] targetFiles = System.IO.Directory.GetFiles(targetDir, "*.pdf", System.IO.SearchOption.TopDirectoryOnly); - return targetFiles; + if (File.Exists(targetDir)) + { + string[] targetFiles = { targetDir }; + return targetFiles; + } + else + { + string[] targetFiles = System.IO.Directory.GetFiles(targetDir, "*.pdf", System.IO.SearchOption.TopDirectoryOnly); + return targetFiles; + } } /// @@ -836,6 +899,28 @@ namespace CSRender return InspectionPDFs.ToArray(); } + /// + /// ダミーのPDFファイルを作成する + /// + private string createDummyFile(string inTargetPath, string inDummyDir, string inFileName) + { + string TargetDir = System.IO.Path.GetDirectoryName(inTargetPath);//ファイルパスを取得 + string TargetFile = System.IO.Path.GetFileName(inTargetPath);//ファイル名を取得 + if(inFileName == "")//名前が空ならパスから取得した名前を代入 + { + inFileName = TargetFile; + } + File.Copy(inTargetPath, System.IO.Path.Combine(inDummyDir, inFileName), true); + return inFileName; + } + + /// + /// ダミーのPDFファイルを削除する + /// + private void deleteDummyFile(string inDummyPath, string inDummyName) + { + File.Delete(System.IO.Path.Combine(inDummyPath, inDummyName)); + } /// /// TIFF画像化を実行する