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 : 失敗。セキュリティで認められていない時など。

動作するバージョン

VersionAdobe
Acrobat
備考
4-Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-
Acrobat 5.0.5
6
-
Acrobat 6.0.3 Pro
7OK(Acrobat 7.0.9 Proは未確認)
Acrobat 7.1.4 Pro
8OKAcrobat 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キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
001 Private Const PDSaveFull = &H1 002 Private Const PDSaveLinearized = &H4 003 Private Const PDSaveCollectGarbage = &H20 004 005 Sub AcroExch_PDDoc_Save() 006 007 Dim objAcroPDDoc As New Acrobat.AcroPDDoc 008 Dim lRet As Long 009 010 'PDFファイルを開いて表示する 011 lRet = objAcroPDDoc.Open("E:\Test01.pdf") 012 013 '最初のページのみ削除する 014 lRet = objAcroPDDoc.DeletePages(0, 0) 015 016 '別名でPDFファイルを保存する 017 lRet = objAcroPDDoc.Save _ 018 (PDSaveFull + PDSaveLinearized + _ 019 PDSaveCollectGarbage, _ 020 "E:\Test01_T.pdf") 021 022 'PDFファイルを閉じる 023 lRet = objAcroPDDoc.Close 024 025 'オブジェクトを強制開放する 026 Set objAcroPDDoc = Nothing 027 028 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

補足

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

動作確認環境

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

戻る

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

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

  5. こんにちは。こちらのサイトの情報感謝です。
    2023/02/13現在、最新のAcrobatだと、次の設定が必要でした。共有まで。

    編集→環境設定→セキュリティ(拡張)→起動時に保護モードを有効にする→オフ

コメントを残す

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

CAPTCHA



SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください