Aspose.Wordのバージョン18.7にて検知した
以下事象についてご教示いただけますでしょうか。
■事象
現在、Aspose.Wordsのバージョン10.0と18.7を使用しております。
以下(1)の差し込み印刷設定で差し込み印刷(※)を実行した場合、Aspose.Wordのバージョンによって結果が異なります。
(※)MailMerge.execute(java.lang.String[]fieldNames, java.lang.Object[]values)
(1)差し込み印刷の設定
・Word側のマージフィールド
MERGEFIELD “数値” \##'0
※「\」は円マーク
・Excel側の"数値"項目に設定されている文字列
12345
(2)(1)の差し込み結果
・バージョン10.0の場合
エラーが発生し、差し込み印刷されない
・バージョン18.7の場合
エラーが発生せず差し込み印刷されるが、「120」と表示されExcel側に設定されている「12345」と異なる
・Wordの場合
Word上で「エラー! 二重引用符が対応していません。」のエラーが表示される。
※Word上は数値形式の文字列にシングルクォーテーション「’」が奇数個含まれる場合はエラーとなる模様
■質問
以下の質問にご教示をお願いいたします。
・上記の数値形式のシングルクォーテーション「’」が奇数個含まれる場合以外に、
バージョンアップ前後でエラーハンドリングが異なるケースがありますでしょうか。
・また、上記事象はバージョン10.0の動作がWordの動作に近いと思いますが、
バージョン18.7の動作は製品不具合によるものでしょうか。
@kosuke.tsushima.acce
ご質問ありがとうございます。 Aspose.WordsはMS Wordの動作を模倣しています。 調査のためにここで以下の情報を共有してください。
- 入力したWord文書。
- 望ましくない動作を示す出力Wordファイルを添付してください。
- 目的の動作を示す期待される出力Wordファイルを添付してください。
- コンパイルエラーのない単純なJavaアプリケーション(ソースコード)を作成し、問題の再現をテストし、テストのためにここに添付してください。
ご協力いただきありがとうございます。
PS:これらのリソースを添付するには、ZIPしてアップロードしてください。
以下のリソースを作成し、「Test18.7.zip (9.9 MB)」として添付しました。
調査の程、よろしくお願いいたします。
•入力したWord文書
⇒input.docx
•望ましくない動作を示す出力Wordファイル
(Aspose.Words 18.7によって生成された出力ドキュメント)
⇒output_18.7.docx
・目的の動作を示す期待される出力Wordファイル
⇒ファイルが出力されず、エラーとなることを期待
・コンパイルエラーのない単純なJavaアプリケーション(ソースコード)を作成し、問題の再現をテストし、テストのためにここに添付してください。
⇒aposetest.18.7.0.jar
※バージョン18.7
@kosuke.tsushima.acce
詳細を共有していただきありがとうございます。 Aspose.WordsはMS Wordの動作を模倣しています。 MS Wordを使用して同じシナリオを実行すると、エラーメッセージが表示されます。
差し込み印刷フィールドの正しい数値フィールドスイッチを使用してください。 それでも問題が解決しない場合は、ZIPして、期待される出力Word文書を添付してください。
MS Wordに次のエラーが表示されます。 出力文書に同じエラーメッセージが表示されますか? ご確認ください。
エラー! ピクチャ文字列には、比類のない引用符が含まれています。
認識齟齬があると思いますので、事象、質問の内容を改めて記載させていただきます。
再度ご確認をお願いいたします。
■事象
・MSWord上にて「MERGEFIELD “金額” \##'0」を指定し、数値「123456」の差し込み印刷を実行すると、
Wordファイルに「エラー! 二重引用符が対応していません。」が表示されます。
・Aspose.Wordsのバージョン10.0にて、「MERGEFIELD “金額” \##'0」を指定したWordに対して、
数値「123456」を引数にMailMerge.executeを実行すると、以下エラーが発生し、Wordファイルは作成されません。
※添付ファイルAsposeTest.zip (4.4 MB)の「Test10.0/execute.bat」を実行すると事象が確認できます。ソースコードは「Test10.0/WordTest1.java」です。
java.lang.IllegalArgumentException: Malformed pattern “#'0”
at java.text.DecimalFormat.applyPattern(Unknown Source)
at java.text.DecimalFormat.applyLocalizedPattern(Unknown Source)
at asposewobfuscated.jt.a(PalFormatterCore.java:225)
at asposewobfuscated.jr.a(PalFormatter.java:631)
at com.aspose.words.ij.bT(DoubleConstant.java:125)
at com.aspose.words.aqc.bT(StringConstant.java:28)
at com.aspose.words.mw.c(FieldFormatter.java:95)
at com.aspose.words.mw.a(FieldFormatter.java:26)
at com.aspose.words.ny.FP(FieldUpdateActionApplyResult.java:73)
at com.aspose.words.ny.perform(FieldUpdateActionApplyResult.java:55)
at com.aspose.words.Field.a(Field.java:404)
at com.aspose.words.oi.a(FieldUpdater.java:144)
at com.aspose.words.oi.l(FieldUpdater.java:101)
at com.aspose.words.of.execute(FieldUpdateExecutionItem.java:81)
at com.aspose.words.oi.gz(FieldUpdater.java:91)
at com.aspose.words.oi.a(FieldUpdater.java:67)
at com.aspose.words.xz.a(MailMergeRegion.java:257)
at com.aspose.words.xz.QV(MailMergeRegion.java:233)
at com.aspose.words.xz.a(MailMergeRegion.java:70)
at com.aspose.words.MailMerge.execute(MailMerge.java:128)
at com.aspose.words.MailMerge.execute(MailMerge.java:153)
・Aspose.Wordsのバージョン18.7にて、「MERGEFIELD “金額” \##'0」を指定したWordに対して、
数値「123456」を引数にMailMerge.executeを実行すると、エラーとならずWordファイルが作成されますが、Wordファイルには「120」と表示されます。
※添付ファイルTest18.7.zipの「Test18.7/execute.bat」を実行すると事象が確認できます。ソースコードはAsposeTest.zip (4.4 MB)の「Test18.7/WordTest2.java」です。
■質問
上記事象を踏まえ、以下質問に回答をお願いいたします。
・上記事象のバージョン18.7の動作は製品不具合によるものでしょうか。
・上記事象はMERGEFIELDに「’(シングルクォーテーション)」が含まれるために発生していると思いますが、
バージョン18.7のMailMerge.executeで、バージョン10.0ではエラーとなるがバージョン18.7でエラーにならないケースが他にありますでしょうか。
@kosuke.tsushima.acce
ご質問ありがとうございます。 私たちはこの問題を WORDSJAVA-1930 の問題追跡システムに記録しました。 この問題が解決すると、このフォーラムスレッドを通じて通知されます。
ご迷惑をおかけして申し訳ありません。
ご確認ありがとうございます。
上記事象はMERGEFIELDに「’(シングルクォーテーション)」が含まれるために発生していると思いますが、
バージョン18.7のMailMerge.executeで、バージョン10.0ではエラーとなるがバージョン18.7でエラーにならないケースが他にあるかをご確認いただけますでしょうか。
@kosuke.tsushima.acce
ご質問ありがとうございます。 Aspose.WordsはMS Wordの動作を模倣しています。 誤った出力を生成する非常に古いバージョンのAspose.Wordsを使用しています。 正しい出力は、MS Wordによって生成されたエラーメッセージでなければなりません。
The issues you have found earlier (filed as WORDSJAVA-1930) have been fixed in this Aspose.Words for .NET 18.12 update and this Aspose.Words for Java 18.12 update.