AcroExch.PDDoc: Save メソッド

TOP > AcroExch.PDDoc > Save      [...]


説明

PDFドキュメントを保存します。

保存方法の指定が出来ます。

最適化や別名での保存も出来ます。

 

形式

VARIANT_BOOL Save(short nType,
         BSTR szFullPath);

 

引数

  1. 第1引数(short nType) :
    保存方法。※IAC.BASからの定数を使用する。
    • PDSaveIncremental(&H0):変更が加わっても最適化しないで保存されます。よって保存後はサイズが大きくなく場合があります。但し、この引数は開いているPDFファイルのPDF仕様を変更する事は無いのが最大の特徴です。
    • PDSaveFull(&H1):szFullPathによって指定されたファイル名にでPDFドキュメント全体を出力する。
    • PDSaveCopy(&H2):szFullPathによって指定されたファイル名にPDFドキュメントのコピーを出力する。ただし、出力前のPDFドキュメントは状態を維持しています。 また、PDSaveFullが使用される場合にだけ、このフラグを指定できます。
    • PDSaveCollectGarbage(&H20):参照されないオブジェクトを取り除く。 これによりPDFファイルサイズを減少させる事もある。この用法は奨励されています。 また、PDSaveFullが使用される場合にだけ、このフラグを指定できます。
    • PDSaveLinearized(&H4):ヒントテーブルを提供して、ウェブの為に最適化されたファイルで保存する。 これは、PDFファイルにバイトによって役立たれるのを許容します。また、PDSaveFullが使用される場合にだけ、このフラグを指定できます。
      このPDSaveLinearizedフラグを使ってWEB用に最適化したいのならば、以下の手順をロジックを操作しないといけない。
      1. PDDoc.Openメソッドを使ってPDFファイルを開く。
      2. PDSaveLinearizedフラグを使ってSaveメソッドを実行する。
      3. 最後はPDDoc.CloseメソッドでPDFファイルを閉じる。
  2. 第2引数(BSTR szFullPath) :
    保存先フルパス名。別名も指定できる。
    ""を指定した場合はOpenした同じファイル名と見なし、上書きする。

 

戻り値

  • -1 : 保存成功。
  • 0 : 失敗。セキュリティで認められていない時など。

 

動作するバージョン

Version Adobe
Acrobat
備考
4
-
Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-

Acrobat 5.0.5
6
-

Acrobat 6.0.3 Pro
7
OK
(Acrobat 7.0.9 Proは未確認)
Acrobat 7.1.4 Pro
8
OK
Acrobat 8.1.2 Pro
9
-
Acrobat 9.3.2 Extended
10
-
Acrobat X (10.1.8) Extended
11
-
Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。

 






サンプル:ExcelのVBA

 

説明:PDFドキュメントの最初のページを削除し、最適化をして別名で保存する。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。

 

Private Const PDSaveFull = &H1
Private Const PDSaveLinearized = &H4
Private Const PDSaveCollectGarbage = &H20

Sub AcroExch_PDDoc_Save()

    Dim objAcroPDDoc    As New Acrobat.AcroPDDoc
    Dim lRet            As Long
    
    'PDFファイルを開いて表示する
    lRet = objAcroPDDoc.Open("E:¥Test01.pdf")
    
    '最初のページのみ削除する
    lRet = objAcroPDDoc.DeletePages(0, 0)
    
    '別名でPDFファイルを保存する
    lRet = objAcroPDDoc.Save _
        (PDSaveFull + PDSaveLinearized + _
         PDSaveCollectGarbage, _
         "E:¥Test01_T.pdf")
    
    'PDFファイルを閉じる
    lRet = objAcroPDDoc.Close
    
    'オブジェクトを強制開放する
    Set objAcroPDDoc = Nothing

End Sub

 

補足

  • 第1引数に関しては不明な箇所が多いです。
    よって使用する時は十分にテストをして下さい。
  • 上記サンプルは、Acrobat本体が画面に表示されなく、サイレントで処理されます。
    実行後のPDFファイルで動作確認してください。
  • 同じファイル名が存在する時は上書き保存されます。
    エラーステータスは帰りません。

 

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate

 

戻る

「AcroExch.PDDoc: Save メソッド」への5件のフィードバック

  1. 現在、PDFを出力するシステムの開発をしています。
    「Actobat7 Professional」を使用しているのですが、PDFファイルへのパスワードのかけ方が分からず困っています。
    どのようにコードを記述すれば実現可能かご存知でしたらご教授ください。
    よろしくお願いいたします。

  2. masaruさん。初めまして。
    >・・PDFファイルへのパスワードのかけ方・・
    とりあえず現段階での即答をさせて頂きます。
    当サイトで解説しているOLE機能には有りません。サイト内容も半分程度で不完全です。よって断言は出来ませんが。
    AcrobatJavaScriptでも無かった様な・・。
    他の逃げ手も含めて、少し時間を下さい。
    ん~~~、2~3日。
    但し、当てにはしないで下さい。
    これは難しいです。

  3. masaruさん。
    いろいろ検討した結果を提案させて頂きます。
    OLE、DDE、AcrobatJavaScriptではありません。
    「pdftk」という有名なGPLソフトを使います。もちろんフリーです。
    書籍「PDF HACKS」にも記載されています。Windows以外のOSにも対応したソフトです。
    基本的にCUI(コマンドライン)から操作します。
    よって各種アプリケーションから起動操作が可能です。
    バッチファイルからの一括処理も可能です。
    以下はコマンドラインからPDFにパスワードを掛けるサンプルです。
    pdftk Test.pdf output test_ps.pdf owner_pw test1 user_pw test2
    説明:Test.pdfにオーナーパスワード(Acrobatも起動させないパスワード)「test1」をセットし、更にPDFの文書プロパティのユーザーパスワードに「test2」を設定して、印刷やテキスト選択を出来なくしています。動作確認済みです。
    http://www.accesspdf.com/pdftk/ のサイトから「pdftk-1.41.exe.zip」をダウンロードすると本体「pdftk.exe」が手に入ります。
    「pdftk」の他の使い方はネット上に多数あるのでそちらを参考にして下さい。
    業務システム等にフリーのソフトを入れるのは壁があるかもしれません。
    しかし、このソフトはGPLです。
    世界中の人がサポートしています。
    一度、検討して下さい。

  4. 管理人様
    ご回答ありがとうございます。
    こんなに早く回答頂けるとは、まだまだ調査が足りませんでした・・・。
    教えていただいた方法で試させていただきます。
    本当にありがとうございます!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン