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 の初期設定値