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