OkiTool開発日記

データベース参照ツールを開発しています。そのツールの開発、利用方法秘話などなどの紹介

WORDの差し込み印刷

OkiToolでWORDの差し込み印刷を行っています。

差し込み印刷のパターンは以下の3通り対応しています

1)1データをWORD1ページに印刷

2)複数データをWORD複数ページに一括印刷(WORDは1ファイル)

3)複数データをWORD1ページに印刷

テンプレートを作成し、置換して印刷する様にしていますが、ページサイズがテンプレートと同じにならない現象がずーとありましたが、ようやく原因が分かりました

C#でテンプレートを開いたとき、ヘッダー、フッターのサイズがWORD初期値になるようで、テンプレート上でヘッダー、フッターのサイズを設定すれば大丈夫になりました。

余白の設定、ヘッダー、フッターのサイズは別物なんですね

 

2)の「複数データをWORD複数ページに一括印刷」では空のDocumentに置換済みのテンプレートをInsertしていますが、この時の空のDocumentにテンプレートのページサイズを指定する様にしました

private void WordPageSetup(ref Word._Document tDocFrom, ref Word._Document tDocTo)
{
tDocTo.PageSetup.PaperSize = tDocFrom.PageSetup.PaperSize;
tDocTo.PageSetup.Orientation = tDocFrom.PageSetup.Orientation;
tDocTo.PageSetup.LayoutMode = tDocFrom.PageSetup.LayoutMode;
tDocTo.PageSetup.PageHeight = tDocFrom.PageSetup.PageHeight;
tDocTo.PageSetup.PageWidth = tDocFrom.PageSetup.PageWidth;
tDocTo.PageSetup.TopMargin = tDocFrom.PageSetup.TopMargin;
tDocTo.PageSetup.BottomMargin = tDocFrom.PageSetup.BottomMargin;
tDocTo.PageSetup.LeftMargin = tDocFrom.PageSetup.LeftMargin;
tDocTo.PageSetup.RightMargin = tDocFrom.PageSetup.RightMargin;
tDocTo.PageSetup.LinesPage = tDocFrom.PageSetup.LinesPage;

tDocTo.PageSetup.HeaderDistance = tDocFrom.PageSetup.HeaderDistance;
tDocTo.PageSetup.FooterDistance = tDocFrom.PageSetup.FooterDistance;
}

設定順番を間違いと、範囲外のエラーになる場合があるので注意が必要です

これで、テンプレートと同じ余白で印刷できるようになりました