透かしをテキストで追加する (addWatermarkFromText)

TOP > サンプル / 関数 > addWatermarkFromText      [...]


潜水艦

説明

テキストを透かしでPDF に追加します。

透かしを追加する (addWatermarkFromText)

透かしの追加はAcrobat OLE の JSObject 経由で addWatermarkFromText メソッドを使います。


メソッド

Doc オブジェクト / addWatermarkFromText メソッド

説明

PDFファイルの指定ページに透かしを追加します。

形式

JSObject.addWatermarkFromText  cText , [nTextAlign] , [cFont] , [nFontSize] , [aColor] , [nStart] , [nEnd] , [bOnTop] , [bOnScreen] , [bOnPrint] , [nHorizAlign] , [nVertAlign] , [nHorizValue] , [nVertValue] , [bPercentage] , [nScale] , [bFixedPrint] , [nRotation]

引数

  1. 第1引数 (cText) :
    透かしとして表示するテキスト。
    複数行のテキストを使用する場合はvbCrLfコードで改行を指定します。
    ※SDKには改行文字に \r 又は ¥r と明記されてますが、出来ません。  
  2. 第2引数 (nTextAlign) : (オプション)
    透かしとして表示するテキスト(cText)の整列。
    cText が 1 行の場合はこのパラメータを指定しても影響はない。
    有効な値は以下のとおり。
    • jso.app.constants.align.left  :  左
    • jso.app.constants.align.center  :  中央
    • jso.app.constants.align.right  :  右   
  3. 第3引数 (cFont) : (オプション)
    透かしに使用するテキストのフォント。
    有効なフォントは、font オブジェクトのプロパティとして定義されています(その一覧については、Field オブジェクトのtextFont プロパティを参照)。
    任意のフォントを使用するには、フォントのPostScript 名を表す文字列を渡します。
    デフォルトは font.Helv。
    ※font オブジェクト又はPostScript名  :  テキストフォント
    • jso.font.Times  :  Times-Roman
    • jso.font.TimesB  :  Times-Bold
    • jso.font.TimesI  :  Times-Italic
    • jso.font.TimesBI  :  Times-BoldItalic
    • jso.font.Helv  :  Helvetica
    • jso.font.HelvB  :  Helvetica-Bold
    • jso.font.HelvI  :  Helvetica-Oblique
    • jso.font.HelvBI  :  Helvetica-BoldOblique
    • jso.font.Cour  :  Courier
    • jso.font.CourB  :  Courier-Bold
    • jso.font.CourI  :  Courier-Oblique
    • jso.font.CourBI  :  Courier-BoldOblique
    • jso.font.Symbol  :  Symbol
    • jso.font.ZapfD  :  ZapfDingbats
    • "MS Gothic"  :  MS ゴシック 注意 *1
    • "MS PGothic"  :  MS Pゴシック 注意 *1
    • "MS Mincho"  :  MS 明朝 注意 *1
    • "MS PMincho"  :  MS P明朝 注意 *1
    • "SimSun"  :  中国語フォント 注意 *1
    • "Meiryo"  :  メイリオ 注意 *1
    • "Meiryo-Italic"  :  メイリオ・イタリック 注意 *1
    • "Meiryo-Bold"  :  メイリオ・太字 注意 *1  
  4. 第4引数 (nFontSize) : (オプション)
    透かしに使用するテキストのフォントのポイントサイズ。
    デフォルトは 24。  
  5. 第5引数 (aColor) : (オプション)
    透かしに使用するテキストの文字色。
    デフォルトは 黒のcolor.black。
    ※Colorオブジェクト : 色
    • jso.color.transparent  :  透明
    • jso.color.black  :  黒
    • jso.color.white  :  白
    • jso.color.red  :  赤
    • jso.color.green  :  緑
    • jso.color.blue  :  青
    • jso.color.cyan  :  シアン
    • jso.color.magenta  :  マゼンタ
    • jso.color.yellow  :  イエロー
    • jso.color.dkGray  :  ダークグレー
    • jso.color.gray  :  グレー
    • jso.color.ltGray  :  ライトグレー   
  6. 第6引数 (nStart) : (オプション)
    透かしを追加するPDFのページ範囲で最初のページの番号を指定。
    0から数える。つまり1頁目は0。
    nStart と nEnd を指定しない時は、文書の全てのページが対象になります。
    nStart のみを指定した場合は、nStart で指定した単一のページが対象になります。
    nEnd のみを指定した場合は、0 から nEnd までが対象範囲になります。   
  7. 第7引数 (nEnd) : (オプション)
    透かしを追加するPDFのページ範囲で最後のページの番号を指定。
    指定方法はnStartを参照。  
  8. 第8引数 (bOnTop) : (オプション)
    PDFページ上のコンテンツ(文字、画像等)の上下を指定。
    デフォルトはTrue。
    bFixedPrint が true の場合には無視される。
    • True : コンテンツの上に透かしが表示される。
    • False : コンテンツの下に透かしが表示される。    
  9. 第9引数 (bOnScreen) : (オプション)
    PDFを画面表示する際に、透かしを表示するかどうかを示すブーリアン値。
    デフォルトは True。
    • True : 表示する
    • False : 表示しない  
  10. 第10引数 (bOnPrint) : (オプション)
    PDFを印刷する際に、透かしを表示するかどうかを示すブーリアン値。
    デフォルトは True。
    • True : 表示する
    • False : 表示しない   
  11. 第11引数 (nHorizAlign) : (オプション)
    透かしの水平方向の整列方法を表す数値。
    有効な値については、app.constants.align を参照。
    デフォルトはapp.constants.align.center (中央)。
    ※値とフローティングウィンドウ位置
    • jso.app.constants.align.left  : 左
    • jso.app.constants.align.center  : 中央
    • jso.app.constants.align.right  : 右  
  12. 第12引数 (nVertAlign) : (オプション)
    透かしの垂直方向の整列方法を表す数値。
    有効な値については、app.constants.align を参照。
    デフォルトはapp.constants.align.center  (中央)。
    ※値とフローティングウィンドウ位置
    • jso.app.constants.align.center  : 中央
    • jso.app.constants.align.top  : 上
    • jso.app.constants.align.bottom  : 下  
  13. 第13引数 (nHorizValue) : (オプション)
    ページ上で透かしの水平位置をシフトさせるために使用する数値。
    bPercentage が True の場合、この数値はページの幅のパーセンテージを示す。
    bPercentage が False の場合、この数値はオフセットするポイント数を示す。
    デフォルトは 0。
    「配置」-「左右からの距離」-「基点」項目と同様。   
  14. 第14引数 (nVertValue) : (オプション)
    ページ上で透かしの垂直位置をシフトさせるために使用する数値。
    bPercentage が true の場合、この数値はページの高さのパーセンテージを示す。
    bPercentage が false の場合、この数値はオフセットするポイント数を示す。
    デフォルトは 0 です。
    「配置」-「上下からの距離」-「基点」項目と同様。   
  15. 第15引数 (bPercentage) : (オプション)
    nHorizValue や nVertValue がページサイズのパーセンテージを示すのか、ポイント数を示すのかを表すブーリアン値。
    デフォルトは falseでポイント数を示す。
    • True : パーセンテージを示す
    • False : ポイント数を示す  
  16. 第16引数 (nScale) : (オプション)
    透かしに使用するスケール。
    1.0 が 100 %を意味する。
    値が -1 の場合は、透かし形状を維持したまま、大きさをページにフィットさせます。
    デフォルトは 1.0 です。
    「ページに合わせた相対倍率」項目と同様。   
  17. 第17引数 (bFixedPrint) : (オプション)
    「異なるページサイズで印刷する場合、透かし位置とサイズを一定にする」ことを示すブーリアン値。
    印刷するページのサイズに関係なく、透かしが固定のサイズおよび位置に印刷される。
    True の場合は、bOnTop は無視される。
    デフォルトはFalse です。
    • True : 透かしが固定のサイズおよび位置に印刷する
    • False : 透かしが固定のサイズおよび位置に印刷しない  
  18. 第18引数 (nRotation) : (オプション)
    透かしを反時計回りに回転させる角度。0~360の値を指定。
    デフォルトは 0。
    「回転」項目と同様。   
  19. 第19引数 (nOpacity): (オプション)
    透かしの不透明度を示す。
    0 が透明で、1.0 が不透明。 デフォルトは 1.0。
    「不透明度」項目と同様。

動作するバージョン

  • Acrobat 7 Pro:全角文字は処理できず「・・・」表示になります。
  • Acrobat 8 Pro:たぶん、問題無し。
  • Acrobat X Pro:問題無し。
  • Acrobat XI Pro:問題無し。

サンプル:Excel のVBA

Downloadsample-JSObject_addWatermarkFromText.xls

透かしを追加します。

  1. 透かしは1ページ目のみ
  2. 透かし文字列は「追加した/透かし文字/印刷時は非表示」の3行
  3. 透かし文字のフォント(MS明朝)サイズは80ポイント
  4. 透かし文字の色は青
  5. 透かし文字は時計反対に30度傾ける
  6. 透かし文字は水平中央寄りに配置
  7. 透かし文字は垂直中央から、200ポイント上に配置
  8. 透かし文字は印刷時に非表示
  9. test-out.pdf として別名で最適化して保存   
  • F8キーでステップ実行しながら動作確認出来ます。
  • 参照設定を事前にする。
001 Option Explicit 002 003 Public Const PDSaveFull = &H1 004 Public Const PDSaveLinearized = &H4 005 Public Const PDSaveCollectGarbage = &H20 006 007 Sub test_JSO_addWatermarkFromText() 008      009     Dim objAcroApp      As New Acrobat.AcroApp 010     Dim objAcroPDDoc    As New Acrobat.AcroPDDoc 011     Dim jso             As Object 012     Dim lRet            As Long 013      014     '透かしが追加されるPDFファイル 015     Const CON_PDF_IN = "D:¥work¥Test-in.pdf" 016     '透かしが追加されたPDFファイル 017     Const CON_PDF_OUT = "D:¥work¥Test-out.pdf" 018      019     'JSObjectオブジェクト作成時のNothingの回避策 020     'Acrobatアプリを強制的にメモリにロードする 021     lRet = objAcroApp.CloseAllDocs 022      023     'PDFファイルを開く 024     lRet = objAcroPDDoc.Open(CON_PDF_IN) 025     If lRet = False Then 026         MsgBox "AcroExch PDDoc Open エラー" 027         GoTo test_JSO_addWatermarkFromText_Skip: 028     End If 029      030     Set jso = objAcroPDDoc.GetJSObject 031      032     'PDF文書の指定のページに透かしを追加する 033     jso.addWatermarkFromText _ 034         "追加した" & vbCrLf & "透かし文字" & vbCrLf & "印刷時は非表示", _ 035         jso.app.Constants.Align.center, _ 036         "MS Mincho", _ 037         80, _ 038         jso.Color.blue, _ 039         0, _ 040         0, _ 041         True, _ 042         True, _ 043         False, _ 044         jso.app.Constants.Align.center, _ 045         jso.app.Constants.Align.center, _ 046         0, _ 047         200, _ 048         False, _ 049         1, _ 050         False, _ 051         30, _ 052         0.5 053      054 test_JSO_addWatermarkFromText_Skip: 055      056     'PDFを最適化して別名で保存する。 057     lRet = objAcroPDDoc.Save( _ 058         PDSaveFull + PDSaveLinearized + _ 059         PDSaveCollectGarbage, CON_PDF_OUT) 060      061     'アプリケーションの終了 062     'オブジェクトの強制開放 063     Set jso = Nothing 064     Set objAcroPDDoc = Nothing 065     Set objAcroApp = Nothing 066      067     Debug.Print "End: " & Date & " " & Time 068 End Sub


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


実行結果

透かしを追加した (addWatermarkFromText)
透かしを追加した (addWatermarkFromText)

補足

  1. Acrobat Reader では動作しません。
    Acrobat Pro 本体がデフォルトでインストールされているパソコン環境だけです。  
  2. 下線付きの文字を入れることはaddWatermarkFromText メソッドでは出来ません。
    その場合はaddWatermarkFromFile メソッドを使って下さい。
  3. addWatermarkFromText の引数の全ての動作確認はしていません。      
  4. 独特のフォント等を使った透かし又は画像の透かしなら addWatermarkFromFile メソッドがお勧めです。
    事前にAcrobatで透かし用のファイルを作成して、addWatermarkFromFile メソッドで追加できます。   
  5. ダイナミックスタンプ、ビジネススタンプ、メッセージスタンプ等のカスタムスタンプの代わりに透かし機能で代用出来るかもしれません。
    承認済、社外秘、却下、極秘、非公開、公開用等の文字を透かし機能を使って追加出来ます。

注意

  1. *1 : Windows 7 64bit Home + Excel 2007 環境下 で動作確認をして出した結果です。
    日本語フォントの指定方法がネット検索等でも見つけられなかったので独自の視点から割り出しました。   
  2. 透かしを一括で削除するOLEやAcobat JavaScript等は現時点(2014/02/24)では見つかっていません。
    見つけられなかったのかもしれません。  
  3. 当ページで解説している引数の説明に関してはAcrobat JavaScriptのマニュアルを御覧ください。
    当サイトに質問をされても返事は出来ません。
    理由:質問に返答出来るまで Acrobat JavaScript を理解してないからです。

名前付き引数

以下の様に引数に名前付きが使用できます。

jso.addWatermarkFromText cText:="xxxx", nTextAlign:=jso.app.Constants.Align.center

しかし、名前付き引数がVBAから使用できる理由が当サイトでは分かっていません。よって、名前付きでの引数使用は推奨できません。

動作確認環境

  • Windows 7 64bit Home + SP1 +
    Acrobat 8.3.1 Pro + Office 2007 + フルMicrosoftUpdate

Adobe Web 解説 & その他

  1. JavaScript™ for Acrobat® API Reference
    Adobe® Acrobat® SDK バージョン 8.0
    addWatermarkFromFile メソッドの日本語解説   
  2.  JavaScript for Acrobat API Reference
    (Acrobat v10) 英語解説
    addWatermarkFromText メソッドの英語解説
    (リンク先消滅)
  3. Acrobatアプリからの透かしの削除方法  日本語解説
    (リンク先消滅)
  4. MSのフォントに関してはココも参照した
  5. Watermarking a PDF with JavaScript and Acrobat X
  6. PDFファイルにヘッダーとフッターを追加するVBAマクロ
  7. 511340_AcroJSGuide.pdf

サンプル一覧


サイト管理人のメモ

これ以降はサイト管理人のメモなので見なくても結構です。

以下のPostScript名も扱える。

"MS UI Gothic"
"Meiryo UI"
"Meiryo UI-Bold"   
"Meiryo UI-Italic"  

以下のPostScript名は実行時にエラーになる。

"Verdana"
"Viva-Regular"
"Wingdings"
"MS Pゴシック"
"MS P明朝"
"MSゴシック"
"MS明朝"
"msgothic"
"HeiseiMin-W3-UniJIS-UCS2-H"
'HeiseiMin-W3'
'UniJIS-UCS2-H'
"KozMinPro-Regular”
"HeiseiKakuGo-W5”

記録

  1. 初版:2015年5月9日
  2. 2版:2019年7月12日

サンプル一覧

「透かしをテキストで追加する (addWatermarkFromText)」への5件のフィードバック

  1. はじめまして。いつもHP拝見させていただいております。
    こちらのページを参考にして
    エクセルのセルに指定されたPDF
    (例A1にC:\Users\admin\Desktop\111.PDF)
    に別セルに指定された透かしを(例B1に"あいうえお")
    を入れたいのですが
    サンプルのコードを入れて走らせるところからつまずいております。
    上記サンプルをの「追加した透かし文字"印刷時は非表示」が
    全て「・・・」で表示されてしまいます。
    数字とアルファベットはうまく表示されるのですが・・・
    おそらくフォント関係かと思いフォントをいろいろ変えてみたのですがうまくいきませんでした。

    何が原因か教えていただけないでしょうか。
    当方の環境は
    ・OS名 バージョン:Windows 7 Professional
    ・Acrobat バージョン:Adobe Acrobat 7.0 Professional
    ・ツール(Excel等) バージョンOS:Office Home and Business 2016

    上記になります。

  2. あつし さん
    はじめまして。

    • 「フォント名の指定の不備」が最初に思い浮かびますが、半角文字は正常に出来ているので、これは違う。
    • 他の引数の影響か・・。
    • Acrobat 7.0 のバージョンが低すぎるのが原因かもしれません。
      (直ちに動作確認できる Acrobat 7.0 環境が今は無い。)
      (上記のサンプルはAcrobat 8.0で確認した様な・・)

    とりあえず、動作したサンプルをダウンロードが出来るようにしましたので、コチラを御覧ください。
    そのページ上に有る PDF-JSObject-yyyymmdd.zip 部分をクリックするとダウンロード出来ます。Dropbox からのダウンロード方法の詳細も書いてありますから御覧ください。

    <★追加★>どうしても出来ない場合は、透かし部分を別のPDFファイルで事前に作ってやる addWatermarkFromFile の方法もご検討ください。

    結果を期待したいです。

  3. めちゃめちゃ早い回答ありがとうございます。
    早速サンプルをダウンロードし実行してみましたが
    やはり漢字(全角文字)が全て点になってしまいました。
    当方がVBAを最近触りだした素人ですので他の初歩的なミスも
    あるのかと思います。
    Acrobatの他バージョンも視野に入れて方法を模索してみます。
    大変ありがとうございました。

  4. 先程acrobat x pro体験版をインストールしたところ、無事全角文字が入力できました。やはりacrobat 7 proが古いことが原因だったようです。
    お騒がせしてすいませんでした。

  5. あつし さんへ。

    結果は当ページに書かせていただきます。
    ご報告、ありがとうございます。

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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



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

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