AcroExch.PDAnnot: SetContents メソッド

TOP > AcroExch.PDAnnot > SetContents      [...]


説明

PDFファイル上のテキスト注釈のテキスト(=コンテンツ)をセットします。

形式

VARIANT_BOOL SetContents(BSTR szContents);

引数

  1. 第1引数(BSTR szContents) :
    テキスト注釈の文字列

戻り値

  • -1 : 設定出来た。
  • 0 : 設定出来なかった。

動作するバージョン

VersionAdobe
Acrobat
備考
4-Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-
Acrobat 5.0.5
6
-
Acrobat 6.0.3 Pro
7-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ファイルの1ページ目にテキスト注釈を追加する。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
001 Sub AcroExch_PDAnnot_SetContents() 002 003 Debug.Print "AcroExch_PDAnnot_SetContents:" & Now 004 Dim objAcroApp As New Acrobat.AcroApp 005 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 006 Dim objAcroPDDoc As New Acrobat.AcroPDDoc 007 Dim objAcroRect As New Acrobat.AcroRect 008 Dim objAcroPDPage As Acrobat.AcroPDPage 009 Dim objAcroPDAnnot As Acrobat.AcroPDAnnot 010 Dim lRet As Long '戻り値 011 012 'Acrobatを起動表示する 013 lRet = objAcroApp.Show '(TEST用) 014 'PDFドキュメントを開く 015 lRet = objAcroPDDoc.Open("E:\Test01.pdf") 016 '画面にPDFを表示する。 017 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "") '(TEST用) 018 '1ページ目のPDPageオブジェクトを取得します 019 Set objAcroPDPage = objAcroPDDoc.AcquirePage(0) 020 'テキスト注釈の4枠サイズをセットする 021 With objAcroRect 022 .Top = 751 023 .bottom = .Top - 60 024 .Left = 100 025 .Right = .Left + 90 026 End With 027 'テキスト注釈を追加します 028 Set objAcroPDAnnot = objAcroPDPage.AddNewAnnot( _ 029 -2, "Text", objAcroRect) 030 lRet = objAcroPDAnnot.SetContents( _ 031 "これはテストのテキスト注釈です。") 032 lRet = objAcroPDAnnot.SetOpen(1) '開く 033 '別名でPDFファイルを保存する 034 lRet = objAcroPDDoc.Save(PDSaveFull, _ 035 "E:\Test01_A.pdf") 036 'PDFファイルを保存しないで閉じる'(TEST用) 037 lRet = objAcroPDDoc.Close 038 039 'Acrobatを閉じる 040 lRet = objAcroApp.Hide '(TEST用) 041 lRet = objAcroApp.Exit '(TEST用) 042 'オブジェクトを強制解放する 043 Set objAcroAVDoc = Nothing '(TEST用) 044 Set objAcroRect = Nothing 045 Set objAcroPDAnnot = Nothing 046 Set objAcroPDPage = Nothing 047 Set objAcroPDDoc = Nothing 048 Set objAcroApp = Nothing 049 050 End Sub


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

 

実行結果

TEST_PDAnnot_SetContents:2008/09/12 15:15:13

※実行途中のテキスト注釈

PDAnnot:SetContents メソッド

補足

  • 説明では”セット”と言っているが”更新する”とも言える。
  • ここで設定しているobjAcroRectオブジェクトの値はあまり意味を持たない部分がある。

動作確認環境

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

戻る

「AcroExch.PDAnnot: SetContents メソッド」への8件のフィードバック

  1. こんにちは。早速ですが、このページを応用し、テキストボックスを作りました。
    Set objAcroPDAnnot = objAcroPDPage.AddNewAnnot(-2, "FreeText", objAcroRect)
    とするだけで、PDF上にテキストボックスが作成できるのですが、問題が・・・。
    画面上ではちゃんとテキストボックスがあるのに、なぜか印刷されません。
    横に手でテキストボックスを作ると、それは印刷されます。
    もちろん印刷時に「注釈とフォーム」は「文書と注釈」にしています。
    「注釈の一覧」で「印刷する文書に注釈の一覧テキストを含めますか」を「はい」にすると、別紙にテキストボックスの内容のみが印刷されます。

    環境は7 Pro+Excel 2010+Acrobat X Standard です。
    考えられる原因がわかれば教えて下さい。

    追伸、引数の-2を-1にすると、既存のテキストボックスより下層になるようです。その他ではエラーが出ます。

  2. すいまーひろ さんへ。
    返答が複数有りますので、分けて書かせて頂きます。

    1. Acrobat X Standard バージョンに関してですが。
    確証が持てる情報を見つけるのは時間的に無理と思っていますので以下、予想で返答します。
    Acrobat 7 , 8 に関しはStandardバージョンではOLE(IAC)は利用できません。
    利用できるのはProfessionalバージョンのみです。SDKに記述有り。
    よってAcrobat X StandardでOLEが動作するとは思っていません。
    環境も無いので調査は残念ですが不可です。
    但し、すいまーひろさんの環境で正常に動作しているのであれば、可として頂いても結構です。確証は無いですが。

    2.OLEで作成した(注釈)テキストボックスが画面上では表示されても印刷されない現象はこちらのテスト環境でも確認しました。
    プロパティ上はなんら違いは無いです。
    この印刷されないテキストボックスの対処は無いです。
    バグと思っているからです。
    それに関する詳細は次の3で。

    3. OLEのテキスト注釈のAnnot関連のメソッドは絶望的な状態です。
    かなりの時間を掛けて調査しましたが、まともに最後まで動作した記憶が無いです。
    この箇所に関してはAcrobat 7と8バージョンで調査した結果をサイトに紹介しています。
    ただOLEに関してはメーカ側の技術提供はAcrobat 7バージョンでストップしています。
    よってAcrobat Xでも同じ結果になるはずです。実際に同じでした。
    この情報に関してはメーカーでの公表等は見当たらなく、サイト管理人の経験上の結果です。

    4. 逃げ手 - その①
    テキスト文字の表示だけに注目すれば、フォームフィールドのテキストボックス・フィールドとして表示すれば可能です。
    AFormAutオブジェクトテキストボックス追加をサンプルとして御覧ください。
    フォームフィールドに関するメソッドやプロパティは沢山有るのですが、技術的な需要が無いと思われたので、必要最低限の解説にとどまっています。

    5. 逃げ手 - その②
    AFormAutオブジェクトAcrobat JavaScriptの実行でテキスト注釈を追加します。
    試していませんが、Acrobat JavaScript上でテキスト注釈(テキストボックス)を作成すれば印刷出来るかもしれません。
    Acrobat JavaScriptに関してはコチラを御覧ください。
    Acrobat JavaScriptに関しては返答出来るレベルでは無いので動作検証はしていません。

    6. PDFをOLEだけで操作するのは当サイトを見れば無理と分かるはずです。
    今後、PDFを操作する上でAcrobat JavaScriptの使用が不可欠になってくる場合が有るはずです。
    どうしてもプログラミング的な操作をしたい時はAcrobat JavaScriptも視野に入れてください。
    それでもAcrobatアプリ本体が持っている機能の半分も出来ない事に気がつくと思います。

    少しでも解決につながれば幸いです。

  3. ご指導ありがとうございました。
    テキストボックスの追加でうまくいきました。

  4. お世話に成っています
    御存知でしたら教えて下さい
    文書レベルJavascriptへプログラムを追加する方法て
    どのようにしたら良いのでしょうか?
    Fieldに対しるSetJavaScriptActionのような方法が
    見つからず 困っています。
    やりたいことは 初期処理を文書レベルJavascriptへ
    埋め込みたいのですが...

  5. AKIRA さんへ。

    AFormAut : Fields.AddDocJavascript メソッド

    上記メソッドで文書レベルのJavaScriptの追加が出来たはずです。
    サンプルは結構、手が込んだ内容でわかりにくいかもしれません。
    質問内容にあった返答が出来ていることを願ってます。

  6. ありがとうございます。
    うまく行きました。
    今後ともよろしくお願い致します。

  7. 管理人さ~ん

    初めて訪問させていただいています。

    EXCELのシート列として、社員のコード番号が並んでおり、
    その番号を取得して、PDFファイル名にしています。

    例としてA列の1行目から10行目まで各社員コードの
    記載があり、所定範囲のPDF印刷に対して、この社員
    コードを取得して10個のPDFファイル名を自動で
    一気に作成することは、EXCELのVBAにてひとまず出来ました。

    ここで、私は出来れば、B列の1行目から10行目までに
    各社員の指定したパスワードの記載があった場合、この
    パスワードを取得して各PDFにパスワードを設定できれば
    と考えています。

    こうしたことは、可能でしょうか?

    ご教示いただければと思います。

    よろしくお願いいたします。

  8. run0450run さん
    はじめまして

    当サイト内の現時点( 2014/12/28 )での技術情報からでは出来ません。
    しかし以下のソフトならコマンドライン起動でのパスワード設定が出来るのではないかと想像しています。

    ① PDFtk
    https://www.pdflabs.com/tools/pdftk-server/

    GPLライセンスです。
    PDFtkは昔からPDFを編集するツールとして有名なソフトです。
    知らない間にバージョンアップがされ有償版も出ていますが、GPLのフリー版はそのままで提供されています。
    PDF仕様が上がったPDFファイルでも使用できるか等のテストは未確認です。
    「pdftk decrypt パスワード」で検索すれば日本語解説が見つかります。

    ② QPDF
    http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?QPDF

    GPLに似たArtisticライセンスです。
    パスワード設定が出来そうですが、これも未検証です。

    ③ PDFill PDF Editor
    http://www.pdfill.com/

    一部の機能は無料版として提供されていますが、
    コマンドラインでのパスワード設定が出来るのは有償版のみです。
    (と、サイトに書かれてました)

    ④ xpdf-utils
    https://packages.debian.org/ja/sid/poppler-utils
    GPLソフト。
    パスワードを設定する機能は無いみたいです。
    パスワードが掛かっているPDFを開く時にパスワードを指定するパラメータは存在します。

    GUI画面でのツールなら沢山ありますが、プログラム操作となるとコマンドライン操作が出来るツールに限定されます。

    ご検討ください。

コメントを残す

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

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

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

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



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

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