差し込み印刷はMicrosoft Wordの標準機能です。このため、Word APIでは既に作成されたテンプレートファイルを流用することもできます。
テンプレートの作成方法等に関するMicrosoft Wordの差し込み印刷とWord APIの簡単な活用例はMicrosoft Wordの差し込み印刷を活用する方法(概要)に記載しております。
ここでは、Word APIの差し込み印刷に共通する部分を説明します。
Word APIで差し込み印刷を実行するためには、テンプレートファイルと差し込み印刷データが必要です。
テンプレートファイルは、差し込み印刷フィールドが定義されたMicrosoft Wordのdocx形式のファイルです。
差し込み印刷データは、差し込み印刷フィールド名をカラムとし、対応するデータが定義されたファイルです。
Word APIでは、文字列(下図の緑枠)と画像(下図の赤枠)の差し込み印刷ができます。
Microsoft Wordの文書は、ヘッダー領域(図の赤枠)、本文領域(図の青枠)、フッター領域(図の緑枠)に分けられています。
Word APIでは、これら各領域の段落およびセル内に定義された差し込み印刷フィールドに差し込みができます。
Word APIでは、差し込み印刷データにはCSV形式とJSON形式のファイルを使えます。各ファイルのエンコードにはShift_JIS、UTF-8、BOM付UTF-8を使えます。
Microsoft Wordの標準の差し込み印刷機能と同様に、差し込み印刷データに指定されたデータが差し込み印刷されます。
Word APIでは、文字列の差し込み印刷以外に画像の差し込み印刷ができます。
通常の文字列の差し込み印刷の時と異なり、テンプレートの作成、差し込み印刷データの作成、Word API実行時に画像の差し込み印刷があることを指定する必要があります。
同一段落に通常の差し込み印刷フィールドと代替画像を挿入します。
このとき決定した画像サイズが差し込み印刷実行結果の画像サイズにも反映されます。
フィールド名は差し込み印刷フィールド名(通常の差し込み印刷と同様)、差し込み印刷データには差し込む画像のファイル名を指定します。
画像の差し込み印刷で差し込み可能なファイルは以下です。
差し込み印刷データに指定したファイルが格納されているディレクトリを設定する必要があります。
差し込み印刷データに指定したファイルが存在しない場合、文字列の差し込み印刷と同様の差し込み印刷結果になります。
差し込み印刷フィールドに指定したファイル名が差し込まれ、代替画像は残ります。
下図に、本章で説明した内容の実行例を示します。
下図の差し込み印刷データ(CSV形式)の3レコード目の"顔写真"である"大沢.png"は存在しない場合を想定します。
差し込み印刷のデータによってはセル幅を超える場合があります。
Microsoft Wordでは、セル幅を超えた場合は、超過分が改行されて表示されますが、Word APIでは、データを編集する以下の4つの制御方法を用意しています。
Word APIのデフォルトの設定で、Microsoft Wordと同様の処理です。
各インターフェイスの該当するオプションのNormalが対応します。
データが1行に収まるように、フォントサイズを調整します。
各インターフェイスの該当するオプションのFontSizeChangeが対応します。
データが1行に収まるように、超過分の文字を削除します。
各インターフェイスの該当するオプションのCutExcessが対応します。
CutExcessされた文字列を、埋め字に変換します。
各インターフェイスの該当するオプションのPaddingが対応します。
データのフィールド名を指定することによって、図のように出力ファイル名を変更することができます。これによって、出力ファイルとデータのレコードの対応関係が明確になります。
ただし、フィールド名に指定されたデータが複数レコードで重複している場合、出力ファイルは後続のレコードの差し込み印刷の結果で上書きされるため、データ内で一意になるフィールド名を指定する必要があります。
デフォルトの場合、指定された出力ファイル名に、レコードの順番に1から連番で文字列を先頭に追加(n_出力ファイル名.docx)します。
出力ファイル名の文字列の追加位置のオプションで、以下の2種類の形式で文字列を追加することが可能です。
Word APIのデフォルトの設定で、指定された出力ファイルの先頭に文字列が追加(追加文字_出力ファイル名.docx)されます。
各インターフェイスの該当するオプションのHeadが対応します。
指定された出力ファイル名の末尾に文字列が追加(出力ファイル名_追加文字列.docx)されます。
各インターフェイスの該当するオプションのTailが対応します。
指定したテンプレートファイルに定義されている、差し込み印刷フィールド名の一覧を取得することができます。
以下の画像の場合、"社員番号","氏名","顔写真"を取得することができます。
以上が、Word APIの差し込み印刷の共通部分の説明です。複雑な形式のテンプレートファイル固有の機能説明は以下に記載しています。
シンプル版の差し込み印刷
複合版の差し込み印刷
ネスト構造のテーブル版の差し込み印刷