Delphi Programming / Object Pascal
[掲載 2015年04月21日] [更新 2015年04月22日] ワード操作フォームEx
ワード操作フォームEx 参考コード類
PDF 形式の文書で保存
動作確認等
Windows 7 U64(SP1) + Delphi XE(UP1) Pro + Word 2010
Word 2007 以降であれば,システムに Acrobat 関係のアプリがインストールされていなくても,ワードの文書を PDF 形式の文書として保存できます.
Word 2013 では,[ファイル] メニューに [エクスポート] という項目が追加されています.[エクスポート] で,[PDF/XPS ドキュメントの作成] を選択して,PDF 形式の文書で保存できます.
本ページのサンプルは,PDF 形式の文書として保存する操作をコードで実行するものです.
PDF 形式の文書で保存 - SaveAs メソッド
参考コードの [文書の保存・形式を指定した保存等] のサンプルを,保存ダイアログを表示し,PDF 形式の文書として保存するようにしたコードです.
リスト1
SaveAs メソッドを使用して,PDF 形式の文書として保存
copy code
// =============================================================================
// PDF形式の文書で保存
// SaveAsメソッドを使用するコード
// Word 2007以降はPDF文書の表示可能だが,本コードは保存後もワード文書のまま
// したがって,実際にはワード文書のエクスポートと同じ
// =============================================================================
procedure TplWordFormEx2.Button1Click(Sender: TObject);
const
wdFormatPDF = 17 ;
var
pFilePath : OleVariant;
pFileFormat : OleVariant;
objWordDoc : OleVariant;
begin
wdfWordApp.ScreenUpdating := False;
// 保存ファイル名のフルパス
pFilePath := ChangeFileExt(wdfFileFullPath, '.pdf' );
SaveDialog1.InitialDir := ExtractFileDir(wdfFileFullPath);
SaveDialog1.Filter := 'PDF文書|*.pdf' ;
SaveDialog1.DefaultExt := '.pdf' ;
SaveDialog1.FileName := ExtractFileName(pFilePath);
if SaveDialog1.Execute then begin
// 保存形式
pFileFormat := wdFormatPDF;
// SaveAsの引数を省略するため,文書のオブジェクトをOleVariantに変更
objWordDoc := wdfWordApp.ActiveDocument;
try
// 保存ファイル名以外はデフォルトの設定で保存
objWordDoc.SaveAs(SaveDialog1.FileName, pFileFormat);
wdfWordDoc.Saved := True;
except
end ;
end ;
wdfWordApp.ScreenUpdating := True;
end ;
PDF 形式の文書で保存 - ExportAsFixedFormat メソッド
ExportAsFixedFormat メソッドを使用すると,PDF 形式で保存する際の詳しい設定ができます.
引数の IncludeDocProps := False は,[ドキュメントのプロパティ]を,作成した PDF に含めない設定です.DocStructureTags := False は,[アクセシビリティ用のドキュメント構造タグ] を,作成した PDF に含めない設定です.
これは,次項の図で,該当する項目のチェックをオフ (チェックを外す) にすることに相当します.
リスト2
ExportAsFixedFormat メソッドを使用して,PDF 形式の文書として保存
copy code
// =============================================================================
// PDF形式の文書で保存
// ExportAsFixedFormatメソッドを使用するコード
// =============================================================================
procedure TplWordFormEx2.Button2Click(Sender: TObject);
const
wdExportFormatPDF = 17 ;
wdExportFormatXPS = 18 ;
var
pFilePath : OleVariant;
pFileFormat : OleVariant;
objWordDoc : OleVariant;
begin
wdfWordApp.ScreenUpdating := False;
// 保存ファイル名のフルパス
pFilePath := ChangeFileExt(wdfFileFullPath, '.pdf' );
SaveDialog1.InitialDir := ExtractFileDir(wdfFileFullPath);
SaveDialog1.Filter := 'PDF文書|*.pdf' ;
SaveDialog1.DefaultExt := '.pdf' ;
SaveDialog1.FileName := ExtractFileName(pFilePath);
if SaveDialog1.Execute then begin
// 保存形式
pFileFormat := wdExportFormatPDF;
// SaveAsの引数を省略するため,文書のオブジェクトをOleVariantに変更
objWordDoc := wdfWordApp.ActiveDocument;
try
pFilePath := SaveDialog1.FileName;
// 指定の引数の値だけをセットする方法
// 引数を順番通りに設定する場合は,引数名は省略可能
objWordDoc.ExportAsFixedFormat(OutputFileName := pFilePath,
ExportFormat := pFileFormat,
IncludeDocProps := False,
DocStructureTags := False);
wdfWordDoc.Saved := True;
except
end ;
end ;
wdfWordApp.ScreenUpdating := True;
end ;
[ アクセシビリティ用のドキュメント構造タグ ] と PDF 出力のオプション
下図は,Word 2010 の PDF 出力オプションの設定画面です.このダイアログでデフォルトの設定を変更することができます.
[アクセシビリティ用のドキュメント構造タグ] にチェックが入ったままだと,作成した PDF の操作で問題が発生することが報告されています.また,[ドキュメントのプロパティ] がオンの場合,ワードの文書のプロパティが含まれ,個人情報等も PDF に埋め込まれる可能性があります.
図1
PDF 出力のオプション
保存のダイアログで [オプション] ボタンをクリックすると表示される
図は Word 2010 の初期設定値