【MATLAB】WordファイルをPDFに変換する


はじめに

前回はmatlabで作成したグラフをwordに貼り付けて保存する方法を説明した.
今回はその続きとして,作成済のwordファイルを開いて全体のフォントカラーを変える方法と,編集したwordファイルをpdfとして保存する方法を説明する.

なお,matlab経由でwordを開いて処理する流れのため,wordのインストールは必須である.

経緯

なぜ全体のフォントカラーを変えるのか?という点だが,簡単に経緯を説明する.
社内でドキュメント(wordファイル)を作る際に,途中で修正した部分はフォント色を変えておくというやり方をしている.
下図でいうと,「振幅グラフ」と「2306684」の部分が修正箇所だ.
そして,作成したwordファイルを客先に納品する際にpdf化を行うが,その際にはフォント色を黒色に戻すわけである.

フローは以下のような感じ.
Wordファイルをtmpフォルダにコピーして,そっちをWordで開いて,Ctrl+Aで全選択してフォントカラーを黒にする.Wordのメニューから「エクスポート」を選んで,pdfとして保存する.

matlabによる自動化

フォントカラーじゃなくてもっとこう先進的な,バージョン管理ツール的なものは使わないんか? とかそういうツッコミは完全に無視して,上記のやり方をmatlabで自動化してみる.
図にすると↓である.こうなったら嬉しいわね.

Wordファイル全体のフォントカラーを変える

wordをCtrl+Aで全選択して,フォントカラーを変えるやつである.
ヘッダー部分などの色はこのやり方では変えられないので注意.

% 全選択(Ctrl+A)
selection.WholeStory
% フォントカラーを変える
selection.Range.Font.ColorIndex = 'wdBlack';

WordをPDFに変換する

pdfFileには保存するpdfファイルのフルパスを入れる.

document.ExportAsFixedFormat(pdfFile, 'wdExportFormatPDF');

実装

以下にコードの全文を載せる.

clc
clear all
close all

path1 = pwd;
file1 = 'a.docx';
docFile = fullfile(path1, file1);

% word 初期化
word = actxserver('Word.Application');
word.Visible = 1;
document = word.Documents.Open(docFile);
selection = word.Selection;

% 全体のフォントカラーを変える
selection.WholeStory
selection.Range.Font.ColorIndex = 'wdBlack';

% pdf 出力
[path1, file1, ext1] = fileparts(docFile);
file1 = strcat(file1,  '.pdf');
pdfFile = fullfile(path1, file1);
document.ExportAsFixedFormat(pdfFile, 'wdExportFormatPDF');

document.Close(0);
word.Quit();

wordファイルを閉じる際に引数0にすると編集内容を保存せずに閉じる.
フォントカラーを黒色にしたwordファイルは不要なので,保存せずに閉じよう.
(引数を指定しないと上書きしちゃうので注意)

document.Close(0);

指定フォルダ内のwordファイルを全部処理したいといった場合には下記の記事と組み合わせれば行けるので,特に説明しない.
【MATLAB】指定フォルダ内のファイルを検索して処理をする

結果

保存した結果は以下の通りである.期待通り,文字色が黒色に変わっている.
もちろん,元のwordファイルの文字色は特に書き換えられてはいない.(タイムスタンプも変更無し)

まとめ

今回はwordファイルをmatlabで適当に編集してpdf変換して保存する方法を述べた.
この調子でwordとの和解を続け,自動化を進めていきたい.