Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2015年04月21日] [更新 2015年04月22日] ワード操作フォームEx
ワード操作フォームEx   参考コード類
PDF 形式の文書で保存
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro + Word 2010







ワードの PDF 形式の保存機能


Word 2007 以降であれば、システムに Acrobat 関係のアプリがインストールされていなくても、ワードの文書を PDF 形式の文書として保存できます。
Word 2013 では、[ファイル] メニューに [エクスポート] という項目が追加されています。[エクスポート] で、[PDF/XPS ドキュメントの作成] を選択して、PDF 形式の文書で保存できます。

本ページのサンプルは、PDF 形式の文書として保存する操作をコードで実行するものです。






PDF 形式の文書で保存 - SaveAs メソッド


参考コードの [文書の保存・形式を指定した保存等] のサンプルを、保存ダイアログを表示し、PDF 形式の文書として保存するようにしたコードです。


リスト1
SaveAs メソッドを使用して、PDF 形式の文書として保存
//=============================================================================
//  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 形式の文書として保存
//=============================================================================
//  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 の初期設定値