Aspose.Word 18.7差し込み印刷結果について

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.