Aspose.words(Java)にて、縦書きの文字をPDF出力すると文字が重なる

テンプレートファイル(Word)に縦書きの文字を印字してPDF変換すると
20行目のあたりから文字が重なる事象が発生しております。
対応策などございましたらご教示をお願い致します。

Aspose.wordsバージョン:23.8
文字フォント:IPAゴシック
文字サイズ:22pt
行間:固定値(setLineSpacingにより指定)
間隔:33pt(setLineSpacingRuleにより指定)
※Asposeのバージョンを最新化、文字フォントを変更しても事象は変わらず

・テンプレートファイル(Word)
PB01_2.docx (17.8 KB)
・PDF出力ファイル
PDF出力サンプル.pdf (13.5 KB)

@kksse

概要
Aspose.Words for Java 23.8 で縦書き段落に固定行間(EXACTLY)を設定したまま PDF に変換すると、20 行目以降で文字が重なるという現象が報告されています。公開されているリリースノートや FAQ にはこの組み合わせに関する既知の不具合や回避策は記載されていません。そのため、以下の一般的なトラブルシューティング手順をお試しください。

考えられる原因

  1. 固定行間(EXACTLY)と縦書きの相性 – 縦書きでは行の高さ算出が横書きと異なるため、固定行間が正しく適用されないことがあります。
  2. PDF 保存時のレンダリング設定 – デフォルト設定ではフォントメトリクスの一部が簡略化され、細かいレイアウト差異が顕在化する可能性があります。
  3. バージョン依存のバグ – 23.8 以前のバージョンでも同様の問題が報告されているケースがあるため、最新版への更新で改善する可能性があります。

対策(一般的なガイドライン)

  1. 行間設定を変更して確認
  • LineSpacingRule.EXACTLY を使用せず、LineSpacingRule.AUTO または LineSpacingRule.AT_LEAST に変更して PDF を生成し、文字の重なりが解消されるか確認します。
  1. PDF 保存オプションで高品質レンダリングを有効化
  • PdfSaveOptionssetUseHighQualityRendering(true) を設定し、フォント埋め込み (setEmbedFullFonts(true)) も併せて有効にします。これによりフォントメトリクスがより正確に反映される可能性があります。
  1. 最新バージョンへのアップデート
  • Aspose の公式サイトから最新の Aspose.Words for Java(例: 25.x 系)を取得し、同様の手順で PDF を生成して問題が再現するか確認します。リリースノートに PDF 出力や縦書きに関する改善が記載されていれば、アップデートで解決できることがあります。
  1. 最小再現サンプルの作成とサポートへの問い合わせ
  • 問題が解消しない場合は、縦書きの数行だけを含むシンプルな .docx と、使用した Java コード(PDF 保存オプション含む)を添付して Aspose のサポートフォーラムへ投稿してください。開発チームが原因解析と回避策を提示してくれます。

まとめ

  • 縦書き+固定行間(EXACTLY)はレイアウト計算上のリスクがあるため、まずは行間設定を AUTOAT_LEAST に変更し、PDF 保存時に高品質レンダリングを有効にして様子を見ることを推奨します。
  • 最新バージョンでも同様の現象が続く場合は、公式サポートへ最小再現サンプルを提供し、バグとして報告・調査してもらうのが確実です。

SDK version unclear — refer to the official release notes before applying this guidance.

@kksse 問題の再現が可能な、ご使用中のコードまたは縦書きテキストを追加した.docx文書をご提供いただけますでしょうか。

サンプルソースを添付させて頂きます。
最新バージョンの25.11でも再現しました。

サンプルソース.docx (14.5 KB)

PB01_2.docx (17.8 KB)

@kksse この問題をご報告いただきありがとうございます。内部の問題追跡システムで次の新しいチケットをオープンし、無料サポート ポリシー に記載されている条件に従って修正を提供します。

Issue ID(s): WORDSNET-28855

優先的にサポートが必要な場合は、有料サポート サービス を利用できるほか、有料サポート管理チームに直接アクセスすることもできます。