テキストのリンクを削除

TOP > サンプル / 関数 > *


Climb

概要

PDFのページ上に設定されいるリンクを削除します。VBAからAcrobat OLE経由でAcrobat JavaScriptを実行して処理をします。

 

サンプル

PDFの指定ページ上のリンクをすべて削除します。以下は実行するAcrobat JavaScriptです。@1と@2はVBAから変更します。

var ret = ""; var istart= @1; var iend = @2; if(istart == -1){istart=0}; if(iend == -1){iend=this.numPages}; var numLinks=0; for ( var p = istart; p < iend; p++) { var b = this.getPageBox("Crop", p); var l = this.getLinks(p, b); ret = ret + p + "," + l.length + "/"; numLinks += l.length; this.removeLinks(p, b); } event.value=ret; //console.println(ret);

 

  • @1:開始するページ番号
    • 開始ページは0
    • -1 は既定値の0を意味
  • @2: 終了ページ番号
    • 終了ページ数の -1 まで
    • -1 は既定値の最後(this.numPages)までを意味

参照設定が2つ必要です。

Download:  /p1103_AFormAut-DeleteLinks.zip ( 27.5 KB )

001 Option Explicit 002 003 '************************************************** 004 ' 005 ' サンプル:リンクを削除 006 ' 007 ' https://pdf-file.nnn2.com/?p=1103 008 ' 009 ' @1 : Firs/ Page 0=Start 010 ' -1:Default(0) 011 ' @2 : Last Page 012 ' -1:Default(this.numPages) 013 ' 014 ' Update: 2026/03/23 015 ' サンプルの引用先: 016 ' http://kb2.adobe.com/jp/cps/511/511727/attachments/ 017 ' 511727_js_api_reference.pdf#page=326 018 ' 019 '************************************************** 020 021 Sub sample_DeleteLinks() 022 023 Dim start As Double: start = Timer 024 Debug.Print "Sample_DeleteLinks " & Time 025 026 Dim sFilePathIn As String 027 Dim sFilePathOut As String 028 Dim bRet As Boolean 029 Dim i1 As Long 030 Dim sAJS As String 031 Dim sReturn As String 032 033 Dim objAcroApp As New Acrobat.AcroApp 034 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 035 Dim objAcroPDDoc As New Acrobat.AcroPDDoc 036 Dim objAcroPDPage As Acrobat.AcroPDPage 037 Dim objAFormApp As New AFORMAUTLib.AFormApp 038 Dim objAFormFields As AFORMAUTLib.Fields 039 040 objAcroApp.CloseAllDocs 041 objAcroApp.Hide 042 043 'PDFファイルを開く 044 sFilePathIn = ThisWorkbook.Path & "\test-003.pdf" 045 bRet = objAcroAVDoc.Open(sFilePathIn, "") 046 047 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc 048 ' Set objAFormApp = CreateObject("AFormAut.App") 049 Set objAFormFields = objAFormApp.Fields 050 051 Const sAcrobatJavaScript As String = _ 052 "var ret = '';" & _ 053 "var istart= @1;" & _ 054 "var iend = @2;" & _ 055 "if(istart == -1){istart=0};" & _ 056 "if(iend == -1){iend=this.numPages};" & _ 057 "var numLinks=0;" & _ 058 "for ( var p = istart; p < iend; p++)" & _ 059 "{" & _ 060 " var b = this.getPageBox('Crop', p);" & _ 061 " var l = this.getLinks(p, b);" & _ 062 " ret = ret + p + ',' + l.length + '/';" & _ 063 " n/umLinks += l.length;" & _ 064 " this.removeLinks(p, b);" & _ 065 "}" & _ 066 "event.value=ret;" & _ 067 "//console.println(ret);" 068 069 'Acrobat JavaScriptの編集 070 sAJS = sAcrobatJavaScript 071 sAJS = Replace(sAJS, "@1", -1) 072 sAJS = Replace(sAJS, "@2", -1) 073 ' Debug.Print sAJS 074 '▼Acrobat JavaScript の実行 075 sReturn = objAFormFields.ExecuteThisJavascript(sAJS) 076 Debug.Print "sReturn = " & sReturn 077 078 Dim sWk1() As String 079 Dim sWk2() As String 080 '実行結果を編集 081 sWk1 = Split(sReturn, "/") 082 Debug.Print "Delete Link Count:" 083 For i1 = 0 To UBound(sWk1) - 1 084 sWk2 = Split(sWk1(i1), ",") 085 Debug.Print "Page=" & sWk2(0) & " Cnt=" & sWk2(1) 086 Next i1 087 088 'PDFファイルを別名で保存 089 sFilePathOut = Replace(sFilePathIn, ".pdf", "-New.pdf") 090 If objAcroPDDoc.Save(1, sFilePathOut) = False Then 091 MsgBox "PDFファイルへ保存出来ませんでした", _ 092 vbOKOnly + vbCritical, "実行エラー" 093 End If 094 095 '変更しないで閉じる 096 bRet = objAcroAVDoc.Close(False) 097 098 'Acrobatアプリケーションの終了 099 objAcroApp.Hide 100 objAcroApp.Exit 101 102 'オブジェクトの開放 103 Set objAcroPDPage = Nothing 104 Set objAcroPDDoc = Nothing 105 Set objAcroAVDoc = Nothing 106 Set objAFormApp = Nothing 107 Set objAFormFields = Nothing 108 Set objAcroApp = Nothing 109 110 Debug.Print "処理時間 = " & Timer - start 111 End Sub

 

 

実行結果

Debug.Printで実行された結果を表示しました。

sReturn に結果が文字列で返されます。

  • スラッシュ「 / 」 :ページ単位の区切り
  • カンマ「 , 」 :ページ番号とリンク数の区切り

 

Acrobat JavaScript

各命令(メソッド、プロパティ)の説明は省略します。サンプルをそのままご使用ください。

詳細を知りたい方は、メーカーの公開マニュアル「JavaScript™ for Acrobat® API Reference Adobe® Acrobat® SDK バージョン 8.0」を御覧ください。

 

備考

  • Acrobat JavaScriptの日本語版の解説書は上記以降は英語版しか存在しません。機能的なUpdateも殆ど無いので最新バージョンのAcrobatに相当するマニュアルも存在しません。それが現状です。

 

参照

 

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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