From c6d00bccb7c2a7fb5caed3fce4e979e72b5a3dfd Mon Sep 17 00:00:00 2001 From: tsuji Date: Fri, 17 Dec 2021 16:36:59 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=BB=E4=BE=8B=E5=A4=96=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=20=E3=83=BB=E4=BE=8B=E5=A4=96?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E6=A4=9C=E8=A8=BC=E3=81=A7=E7=99=BA?= =?UTF-8?q?=E8=A6=8B=E3=81=97=E3=81=9F=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Code/CSRender/CSRender/FilePathSelect.cs | 38 ++++++- Code/CSRender/CSRender/MainWindow.xaml.cs | 124 +++++++++++++++++++--- Code/CSRender/CSRender/PageComboBox.cs | 8 +- 3 files changed, 150 insertions(+), 20 deletions(-) diff --git a/Code/CSRender/CSRender/FilePathSelect.cs b/Code/CSRender/CSRender/FilePathSelect.cs index bc9ba75..869b1f7 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 dd490d6..d81b598 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 4874d07..ec4360b 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; } -- 2.22.0