diff --git a/Code/CSRender/CSRender/FilePathSelect.cs b/Code/CSRender/CSRender/FilePathSelect.cs index bc9ba75828e1b2c274fd78ef3ec1439c6335a186..869b1f73db818287ac33c9fcb2c5a9b0299b3d2a 100644 --- a/Code/CSRender/CSRender/FilePathSelect.cs +++ b/Code/CSRender/CSRender/FilePathSelect.cs @@ -63,7 +63,10 @@ namespace CSRender workBox.Text = dropFiles[0]; workBox.Focus(); workBox.Select(this.workBox.Text.Length, 0); - + if (!Directory.Exists(System.IO.Path.Combine(workBox.Text, "report"))) + { + Directory.CreateDirectory(System.IO.Path.Combine(workBox.Text, "report")); + } } private void ReportBox_Drop(object sender, System.Windows.DragEventArgs e) @@ -125,6 +128,10 @@ namespace CSRender } //共通部分 workBox.Text = selectFile.FileName; + if(!Directory.Exists(System.IO.Path.Combine(selectFile.FileName, "report"))) + { + Directory.CreateDirectory(System.IO.Path.Combine(selectFile.FileName, "report")); + } //reportBox.Text = System.IO.Path.Combine(selectFile.FileName, "report") + @"\"; } @@ -187,10 +194,11 @@ namespace CSRender directoryCount = reportBox.Text.Split(char.Parse(@"\")).Length - 1;//入力文字列がファイル名のみかディレクトリも含むか if (directoryCount == 0)//ファイル名のみならば作業ディレクトリのreportフォルダに出力 { + reportBox.Text = NameCalibration(reportBox.Text); reportBox.Text = System.IO.Path.Combine(workBox.Text, "report", reportBox.Text); } pdfReportPath = reportBox.Text.Substring(0, reportBox.Text.LastIndexOf(@"\"));//メニュー入力から出力パスを取得 - pdfReportName = reportBox.Text.Substring(reportBox.Text.LastIndexOf(@"\"));//メニュー入力から出力パスを取得 + pdfReportName = reportBox.Text.Substring(reportBox.Text.LastIndexOf(@"\"));//メニュー入力からレポートファイル名を取得 if (!System.IO.Path.IsPathRooted(pdfReportPath))//指定したパス文字列にルートが含まれているかどうか { pdfReportPath = System.IO.Path.Combine(workBox.Text, "report", pdfReportPath);//含まれていなければ作業フォルダのreportフォルダに出力 @@ -200,6 +208,10 @@ namespace CSRender Directory.CreateDirectory(pdfReportPath);//なければ作成 } pdfReportPath = System.IO.Path.GetFullPath(pdfReportPath);//フルパスを取得 + + //レポートファイル名に不正文字が使用されいないかチェック + pdfReportName = NameCalibration(pdfReportName); + if (pdfReportName.Length < 4 || pdfReportName.Substring(pdfReportName.Length - 4) != ".pdf")//入力に拡張子がついているか { pdfReportName += ".pdf"; @@ -209,5 +221,25 @@ namespace CSRender } return reportFlag; } - } + + //レポート名に使用不可の文字が含まれている場合の処理 + private string NameCalibration(string inFileName) + { + string[] charsToRemove = new string[] { "/", ":", "*", "?", "<", ">", "|" }; + char[] charsTocheck = new char[] { '/', ':', '*', '?', '<', '>', '|' }; + if (inFileName.IndexOfAny(charsTocheck) >= 0) + { + foreach (var allNg in charsToRemove) + { + inFileName = inFileName.Replace(allNg, string.Empty); + } + ResultConsole.Text += " 検版レポート名に使用できない文字が含まれていたため、自動修正しました。"; + ResultConsole.Text += "\r\n\r\n"; + DoEvents(); + } + + return inFileName; + } + + } } diff --git a/Code/CSRender/CSRender/MainWindow.xaml.cs b/Code/CSRender/CSRender/MainWindow.xaml.cs index dd490d6172f84b29fa1c9386d75aa002e51c2d9e..d81b598e41b629bd692beb5f7dd4622d21b4cbdc 100644 --- a/Code/CSRender/CSRender/MainWindow.xaml.cs +++ b/Code/CSRender/CSRender/MainWindow.xaml.cs @@ -132,7 +132,7 @@ namespace CSRender if (!Directory.Exists(workBox.Text) && !File.Exists(workBox.Text)) { CustomMsgBox.Show(mainWindow, "指定された作業フォルダが存在しません。" + - "\nもう一度設定してください。", "The specified reference file or folder does not exist", MessageBoxButton.OK, MessageBoxImage.Information); + "\nもう一度設定してください。", "The work space folder does not exist", MessageBoxButton.OK, MessageBoxImage.Information); ResultConsole.Text += " 指定された作業フォルダを発見できませんでした\r\n"; ResultConsole.Text += "\r\n"; workBox.Text = ""; @@ -140,6 +140,26 @@ namespace CSRender Properties.Settings.Default.Save(); return; } + string workLogPath = System.IO.Path.Combine(workBox.Text, "report"); + + bool reportFlag = false; + try + { + //検版レポートの入力チェック + reportFlag = checkReportPath(); + } + catch (Exception ex) + { + CustomMsgBox.Show(mainWindow, ex.Message + "\r\nレポート名を初期化しました。", "例外が発生しました", 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); + reportBox.Text = ""; + //referenceErrorFlag = true; + } //検版パラメータの取得 string shiftPixel = PositionBox.Text; @@ -170,8 +190,22 @@ namespace CSRender Directory.CreateDirectory(targetTIFFPath);//新規でTIFF用フォルダを作成 //CSRenderの実行 - string targetTIFFResult = + try + { + string targetTIFFResult = OutputTIFF.runCSRender(ResolutionBox.Text, "TIFF", pageFlag, selectedPage, targetBox.Text, targetTIFFPath); + } + catch (Exception ex) + { + CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning); + //ログ記述 + DateTime faileTIme = DateTime.Now; + string logText = "[" + faileTIme + "]" + Environment.NewLine; + logText += "例外の生じた処理:対象PDFのTIFF画像生成" + Environment.NewLine; + logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine; + File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText); + //referenceErrorFlag = true; + } ResultConsole.Text += " リファレンスファイルをTIFF画像に変換中\r\n"; DoEvents(); @@ -185,31 +219,85 @@ namespace CSRender Directory.CreateDirectory(referenceTIFFPath);//新規でTIFF用フォルダを作成 //CSRenderの実行 - string referenceTIFFResult = + try + { + string referenceTIFFResult = OutputTIFF.runCSRender(ResolutionBox.Text, "TIFF", pageFlag, selectedPage, referenceBox.Text, referenceTIFFPath); + } + catch (Exception ex) + { + CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning); + //ログ記述 + DateTime faileTIme = DateTime.Now; + string logText = "[" + faileTIme + "]" + Environment.NewLine; + logText += "例外の生じた処理:リファレンスPDFのTIFF画像生成" + Environment.NewLine; + logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine; + File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText); + //referenceErrorFlag = true; + } ResultConsole.Text += "\r\n\r\n"; DoEvents(); - //検版レポートの入力チェック - bool reportFlag = checkReportPath(); - - //PureVerifyの実行 - string workDir = CompareTIFF.runPureVerify(targetTIFFPath, referenceTIFFPath, workBox.Text - , shiftPixel, colorMargin, removePoint, shadingOff, reportFlag, reportBox.Text); + string workDir = ""; + try + { + //PureVerifyの実行 + workDir = CompareTIFF.runPureVerify(targetTIFFPath, referenceTIFFPath, workBox.Text + , shiftPixel, colorMargin, removePoint, shadingOff, reportFlag, reportBox.Text); + } + 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; + } - //レポートを出力 - outputLog(System.IO.Path.Combine(workDir, "report")); + try + { + //レポートを出力 + outputLog(System.IO.Path.Combine(workDir, "report")); + } + 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; + } - //レポート名を取得 string PDFName = ""; - if (reportBox.Text != "") + try { - PDFName = reportBox.Text; + //レポート名を取得 + if (reportBox.Text != "") + { + PDFName = reportBox.Text; + } + else + { + PDFName = CompareTIFF.getReportName(workDir); + } } - else + catch (Exception ex) { - PDFName = CompareTIFF.getReportName(workDir); + 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; } //指定先にレポートを移動 @@ -219,6 +307,10 @@ namespace CSRender ResultConsole.Text += " 検版レポートのパス:"; ResultConsole.Text += System.IO.Path.Combine(workBox.Text, "report", PDFName); ResultConsole.Text += "\r\n"; + if(reportBox.Text == "") + { + reportBox.Text = System.IO.Path.Combine(workBox.Text, "report", PDFName); + } //パラメータを次回初期値用に保存 Properties.Settings.Default.resolutionSetting = ResolutionBox.Value; diff --git a/Code/CSRender/CSRender/PageComboBox.cs b/Code/CSRender/CSRender/PageComboBox.cs index 4874d07682038d1281178a016aa02e306201c569..ec4360b8a0ed79bf02338b071a17ed02d647ae70 100644 --- a/Code/CSRender/CSRender/PageComboBox.cs +++ b/Code/CSRender/CSRender/PageComboBox.cs @@ -75,7 +75,7 @@ namespace CSRender if (Pagebox.CaretIndex == 0 && inputPage == ",") { e.Handled = true; return; } } - //誤ったハイフン・カンマの入力を修正 + //誤ったハイフン・カンマ、数字の入力を修正 private void PageBox_LostFocus(object sender, RoutedEventArgs e) { //ハイフン、カンマの削除 @@ -98,6 +98,12 @@ namespace CSRender inputText = inputText.TrimStart('-'); inputText = inputText.TrimEnd('-'); } + //先頭が0の場合は1に修正 + if (inputText.StartsWith("0")) + { + inputText = inputText.TrimStart('0'); + inputText = "1" + inputText; + } PageBox.Text = inputText; }