AcrobatJS

[JavaScript]全ページに『しおり』を追加する

Acrobat standardやprofessional でしおりの作成をプログラムできますか?
https://forums.adobe.com/message/8732930

反応

しかし…Adobe『フォーラム』の中の人達のルールってどうなん?
サポートしません!って…わざわざ言わんでも…と思うのですが
電話サポートでフォーラムで聞いてと言うんなら
せめてStd版でのjavascriptのサポートの有無ぐらい……ねぇ…と…

さて
『フォルダレベル』のスクリプトになります。
インストール先は11の場合は
/Users/ユーザー名/Library/Application Support/Adobe/Acrobat/11.0/JavaScripts
DCなら
/Users/ユーザー名/Library/Application Support/Adobe/Acrobat/DC/JavaScripts

※しおりにJavascriptを使うのは個人的には良くないと思っています。
利用者のセキュリティ設定等に依存がありますので、普通のしおりにした方が良いと思います。
 
 

Website_image00280508_01843


こんな感じのPDFに

Website_image00280508_02856


スクリプトを実行する事で
しおりを追加します


Website_image00280508_02903

ソースはこちら
https://github.com/force4u/SetBookmarkAllPage.js/blob/master/SetBookmarkAllPage.js

---------ここから
//
//SetBookmarkAllPage
//20160507 v1
//各ページへのしおりを追加します
//Adobe Reader 11 OSX 10.6.8 にて確認
//インストール先は
//ディスク名/Users/ユーザー名/Library/Application Support/Adobe/Acrobat/11.0/JavaScripts
//ダウンロード後に文字コードをUTF16に変換してからインストールする事
//
//メニュー本体

function SetBookmarkAllPage(){
//まずはコンソール(デバッガー)を出さないと
//結果が見れませんので出しておきます
console.show();
//最初のページに移動
this.pageNum = 0;
//ページのカウント用の数値の初期化
var numPageCnt = 0;
//全ページ数を取得
var numAllPageCnt = this.numPages ;
//最後のページに移動する
this.pageNum = +numAllPageCnt;
//繰り返しの始まり
while (+numAllPageCnt >= 0) {
//ページ番号を定義(1ページ目が0なので1足す)
var theNowPageNum = this.pageNum + 1;
//しおりに指定する移動先としてのページ番号
var theGotoPageNum = this.pageNum;
//しおりに設定するスクリプトを定義
var theAction = "this.pageNum = " + theGotoPageNum + ";";
//しおりを追加する
this.bookmarkRoot.createChild(theNowPageNum + "ページ", theAction);
//前ページへ移動する
var numAllPageCnt = +theGotoPageNum - 1;
//ページカウントをカウントアップ
this.pageNum = +numAllPageCnt;
//繰り返しの終わり
}
//処理の終わり
}

///拡張メニュー部
app.addToolButton({
cName: "SetBookmarkAllPage",
cParent: "Bookmark",
cExec: "SetBookmarkAllPage()",
cEnable: "event.rc = true",
cMarked: "event.rc = false",
cTooltext: "全ページにブックマークを追加する",
nPos: -1,
cLabel: "全ページにブックマークを追加する"

});


---------ここまで

スクリプト本体
「SetBookmarkAllPage.js.zip」をダウンロード

元PDF
「sample12page.pdf」をダウンロード


しおり追加済PDF
「sample12pageAddBookmark.pdf」をダウンロード


|

メニュー項目をリスト表示する(ツールバーからサインインを非表示にする方法)

ツールバーからサインインを非表示にする方法
https://forums.adobe.com/message/7780831
これに、反応

まずはメニューリストを取得するのですが
SDKのヘルプに記載通りで取得出来ます。
listMenuItemsの所に記載があります

SDKのヘルプはこちらLINKの記事を見てください


こんな感じで取得できます。

Website_image00270722_235200

サンプルファイル
「サンプルファイル」をダウンロード

取得したコンソールは以下のような感じ
 
Example 2
 
Website_image00270724_03308

 

Example 1
 
Website_image00270724_03213


取得したメニュー項目で
Jsファイルを作成します。
内容は簡単
app.hideMenuItem("AMTDynamic1");

Website_image00270723_00328


対象の機器の全てのユーザーに反映するなら
ローカルドメインのJavascriptsフォルダ
(の…はずだが動作せず…私の環境依存かもしれないけど…)

Website_image00270723_00831


アプリケーションドメインなら動作します

Website_image00270724_03835

特定のユーザー対象なら
ユーザードメインのJavascriptsフォルダに入れて

Website_image00270723_00520

Acrobatを起動すればOK

Website_image00270723_00637


|

[Acrobat]フルスクリーンの設定項目

Website_image00270426_111033

業務先の展示会でモニター表示用にPDFを加工したので
メモがてら
細かい設定はボタン内を見てください

//10.6での画面ズレ対策のためツールバーを格納
app.toolbar = false;
//カーソルの有無 cursor.delay cursor.visible cursor.hidden
app.fs.cursor = cursor.delay
//トランジション;
app.fs.defaultTransition = "UncoverLeftDown";
//ページをめくるタイミング 秒
app.fs.timeDelay = 2;
//クリック有効にするか true false
app.fs.clickAdvances = true;
//タイマー使うか true false
app.fs.useTimer = true;
//ページタイミング使うか true false
app.fs.usePageTiming = true;
//ループさせるか?させないか? true false
app.fs.loop = true;
//背景色
//Transparent color.transparent
//Black color.black
//White color.white
//Red color.red
//Green color.green
//Blue color.blue
//Cyan color.cyan
//Magenta color.magenta
//Yellow color.yellow
//Dark Gray color.dkGray
//Gray color.gray
//Light Gray color.ltGray
app.fs.backgroundColor = color.white;
//フルスクリーン実行
//SDKの文書には『FullScreen』になっているが11では『FullScreenMode』
app.execMenuItem("FullScreenMode");
//↓このコマンドでもフルスクリーン実行になる
//app.fs.isFullScreen = true;


SDKの文書に誤りがあり
app.execMenuItemを利用する場合は
FullScreenではなくFullScreenModeになる(ver11限定かも)


「app.fs.defaultTransition.pdf」をダウンロード

11で対応しているトランジッションは以下の76種類
UncoverLeft
UncoverRight
UncoverDown
UncoverUp
UncoverLeftDown
UncoverLeftUp
UncoverRightDown
UncoverRightUp
CoverLeft
CoverRight
CoverDown
CoverUp
CoverLeftDown
CoverLeftUp
CoverRightDown
CoverRightUp
PushLeft
PushRight
PushDown
PushUp
PushLeftDown
PushLeftUp
PushRightDown
PushRightUp
FlyInRight
FlyInLeft
FlyInDown
FlyInUp
FlyOutRight
FlyOutLeft
FlyOutDown
FlyOutUp
FlyIn
FlyOut
Blend
Fade
Random
Dissolve
GlitterRight
GlitterDown
GlitterRightDown
BoxIn
BoxOut
BlindsHorizontal
BlindsVertical
SplitHorizontalIn
SplitHorizontalOut
SplitVerticalIn
SplitVerticalOut
WipeLeft
WipeRight
WipeDown
WipeUp
WipeLeftDown
WipeLeftUp
WipeRightDown
WipeRightUp
Replace
ZoomInDown
ZoomInLeft
ZoomInLeftDown
ZoomInLeftUp
ZoomInRight
ZoomInRightDown
ZoomInRightUp
ZoomInUp
ZoomOutDown
ZoomOutLeft
ZoomOutLeftDown
ZoomOutLeftUp
ZoomOutRight
ZoomOutRightDown
ZoomOutRightUp
ZoomOutUp
CombHorizontal
CombVertical

|

【LINK】全てのページにリンクオブジェクトを付加する

Website_image00260812_215029

issuuのリンク付加に対応
PDF全てのページにリンクを付けます。

アドオンツールから実行で

Website_image00260812_223938


ダイアログに入力したURLで全てのページにリンクを付加します


Website_image00260812_223949

//
//setLinkAllPage.js
//20140812 v1
//ダイアログで入力されたURLを
//全てのページへリンクオブジェクトとして付加します
//Detected linksに対応
//Arobat 11 OSX 10.6.8 にて確認
//インストール先は
//ディスク名/Users/ユーザー名/Library/Application Support/Adobe/Acrobat/11.0/JavaScripts


//処理部
function setLinkAllPage(){
//まずはコンソール(デバッガー)を出さないと
//結果が見れませんので出しておきます
//console.show();
//URL入力用のダイアログ
var strResponse = app.response({
cQuestion: "リンクオブジェクト用のURLを入力",
cTitle: "URLを入力してください",
cDefault: "http://",
cLabel:"入力:"
});
//デバッグ用のコンソールログ
console.println(strResponse);
//繰り返しのはじまり
for ( var i=0; i < this.numPages; i++)
{
//Cropサイズを取得
var cropBox = this.getPageBox("Crop",i);
//デバッグ用のコンソールログ
console.println('cropBox: ' + cropBox + ' ');
//rectの4つの値をそれぞれに分ける
var numXll = cropBox[0];
var numYll = cropBox[1];
var numXur = cropBox[2];
var numYrl = cropBox[3];
//少数点以下を切り捨て
var numXll = Math.floor(numXll);
var numYll = Math.floor(numYll);
var numXur = Math.floor(numXur);
var numYrl = Math.floor(numYrl);
//デバッグ用のコンソールログ
console.println('numXll: ' + numXll + ' ');
console.println('numYll: ' + numYll + ' ');
console.println('numXur: ' + numXur + ' ');
console.println('numYrl: ' + numYrl + ' ');
//幅
var linkWidth = numXur;
//高さ
var linkHeight = numYll;
//並び替えてリンクオブジェクトのサイズにする
var linkRect1 = [0,linkHeight,linkWidth,0];
//↑ここはお好みで↓このように設定しても良いですね(左下にリンク部)
//var linkRect1 = [0,100,320,0];
//リンクオブジェクトを作成
var lhLink = this.addLink(i, linkRect1);
//リンクオブジェトにリンクを設定
lhLink.setAction("app.launchURL('" + strResponse + "');");

//ボーダーカラーは白
//lhLink.borderColor = color.white;
//デモ用の赤ボーダー
lhLink.borderColor = color.red;
//ボーダー幅は1px
lhLink.borderWidth = 1;
//繰り返しの終わり
}
//処理の終わり
}

//拡張メニュー本体
app.addToolButton({
cName: "setLinkAllPage",
cParent: "Annots",
cExec: "setLinkAllPage()",
cEnable: "event.rc = true",
cMarked: "event.rc = false",
cTooltext: "リンクを全ページに付加します",
nPos: -1,
cLabel: "setLinkAllPage"

});

----------------------------

「setLinkAllPage.js.zip」をダウンロード

https://github.com/force4u/setLinkAllPage

|

【訂正記事】AcrobatのJavaScriptsはUTFコードに対応している部分もある

こちらの記事の訂正です


昔から(確認した範囲ではAcrobat9でも同じつー事はAcro7ぐらいからかなぁ)
AcrobatJavaScript APIはUTF8に対応している項目もありました…
SDKのヘルプファイルにもキチンと記載がりました…

Website_image00261116_212311


思い込みって怖いなぁ…


ここからは言い訳ですのでね…汗
流してください…汗

項目によりですので
対応していない項目もありますので
詳細はSDKをご確認ください

例えば
Acrobatでいうアドオン
AdobeReaderでいう拡張>アドオンツール

Website_image00261116_212759

こちらで『日本語を通す』にはUTF-16かSJISのみで
相変わらず、UTF8だとエラーになります。
(そんな意味で間違いじゃなかったけどね…言い訳)

ダイアログ等は
SJIS-Macだと

Website_image00261116_205353

2バイト目が0x5cの文字はバケます

Website_image00261116_205329

UTF-8だと

Website_image00261116_205437

バケバケ

Website_image00261116_205429

UTF-16で

Website_image00261116_205343


キチンと表示されます

Website_image00261116_213427

また
メニュー項目のように
日本語自体が通らない(通らせ方あるなら教えて欲しい…汗)項目もあります

Website_image00261116_213630


|

[tacさんへの回答]AcrobatでPDFのドキュメントサイズ等を取得するポイント

PDFのドキュメントサイズ等についてはこちらを読んでほしいですが

ピクセルで取得

インチ換算

ミリ表示 と順番を踏むのがわかりやすいでしょうか?

回答をそのまま掲載するのもナニなので
ヒントだけ

あとは自分で頑張ってください


ポイントは
this.getPageBox("Media"); の戻り値は
リスト形式で値が帰ってきます
そのままでは使えないって所でしょうか?

Website_image20130822_10821

まずは
メディアサイズを取得して、値をそのまま表示します

var McropBox = this.getPageBox("Media");
//ここではメディアボックスの値(ピクセル)を求めています
event.value = (McropBox).toString();
//出来た値をイベントとして値をストリングスで戻します


感の良い人はもうわかったと思います

Website_image20130822_10840


var McropBox = this.getPageBox("Media");
//ここではメディアボックスの値(ピクセル)を求めています
//戻り値は0,720,1280,0となります 
//2つ目が縦幅ピクセル
//3つ目が横幅ピクセルになります
var Mwidth = McropBox[2] - McropBox[0];
//とりあえず 横幅のピクセルを取得して
event.value = (Mwidth + "px").toString();
//出来た値をイベントとして値をストリングスで戻します


こんな風にすると 横幅ピクセルを取得できます

Website_image20130822_10857

var McropBox = this.getPageBox("Media");
//ここではメディアボックスの値(ピクセル)を求めています
//戻り値は0,720,1280,0となります 
//2つ目が縦幅ピクセル
//3つ目が横幅ピクセルになります
var Mwidth = McropBox[2] - McropBox[0];
//とりあえず 横幅のピクセルを取得して
var McropBoxW = Math.round((Mwidth/72*100))/100;
//インチに変更します小数点2位で四捨五入
event.value = (McropBoxW + "in").toString();
//出来た値をイベントとして値をストリングスで戻します


四捨五入等の方法はお好みで

そして最後にミリ表示になります

Website_image20130822_10913


var McropBox = this.getPageBox("Media");
//ここではメディアボックスの値(ピクセル)を求めています
//戻り値は0,720,1280,0となります 
//2つ目が縦幅ピクセル
//3つ目が横幅ピクセルになります
var Mwidth = McropBox[2] - McropBox[0];
//とりあえず 横幅のピクセルを取得して
var McropBoxW = Math.round(((Mwidth/72)*25.4));
//インチ→ミリに変更します四捨五入
event.value = (McropBoxW + "mm").toString();
//出来た値をイベントとして値をストリングスで戻します


サンプルPDFをダウンロード

|

【旧記事:訂正あり】Acrobat11のJavaScripts (あぁ〜残念)


この記事は誤りです。
訂正があります。訂正はこちら

スクリプトのUTF8化はされませんでした

Website_image20121018_01028


UTF8のスクリプトは
エラーになります。

Website_image20121018_01058

Acrobat用のスクリプトは
相変わらず
MacはMac
WinはSJIS

Website_image20121018_01111


別で用意しましょう

JavaScriptsフォルダはユーザーのApplication Supportです

Website_image20121018_01518


|

Acrobatのしおり表示倍率の一括変更(追加)

リンク先【Acrobatのしおり表示倍率の一括変更(追加) - YouTube 】のイメージ画像

Source:【Acrobatのしおり表示倍率の一括変更(追加) - YouTube 】   



http://goo.gl/6DFGO
Source:Acrobatのしおり表示倍率の一括変更(追加) - YouTube


設定を変更するわけではなく
JavaScriptを追加する事で全てのしおりの表示設定を『追加』する事で
結果
全てのしおりの表示設定を変更出来ます。

| | トラックバック (0)

[FORM]Acrobatのフォームで四捨五入

Website_image20110905_230104

| | トラックバック (0)

[Acrobat]Javascript開き方・レイアウトと倍率

Image00221220_200015

(ページレイアウト)
●SinglePage(単一ページ)
●OneColumn(連続ページ)
●TwoColumnLeft(見開き左)
●TwoColumnRight(見開き右)
●TwoPageLeft(見開きページ左)
●TwoPageRight(見開きページ右)

表示方法(ページレイアウト)
this.layout = "SinglePage"
this.layout = "OneColumn"
this.layout = "TwoColumnLeft"
this.layout = "TwoColumnRight"
this.layout = "TwoPageLeft"
this.layout = "TwoPageRight"

Image00221220_201633
倍率
●NoVary
●FitPage
●FitWidth
●FitHeight
●FitVisibleWidth
●Preferred
●ReflowWidth


this.zoomType = zoomtype.none;
this.zoomType = zoomtype.fitP; 全体表示ページフィット
this.zoomType = zoomtype.fitW; 幅に合わせる
this.zoomType = zoomtype.fitH; 高さに合わせる
this.zoomType = zoomtype.fitV; 描画領域の幅に合わせる
this.zoomType = zoomtype.pref; 推奨?デフォルト?
this.zoomType = zoomtype.refW; 見開き時水平方向幅に合わせる?


Image00221220_202030
ページ

this.pageNum = 30;

| | コメント (0) | トラックバック (0)

その他のカテゴリー

Accessibility | AccessibilityCheck | AccessibilityForm | AccessibilityInDesign | AccessibilityPDF | Acrobat | Acrobat Action | Acrobat Annotation | Acrobat AppleScript | Acrobat Layer | Acrobat Plug-ins | Acrobat Portfolios | Acrobat Print | AcrobatBarcode | AcrobatDialog | AcrobatForm | AcrobatJS | AcrobatMenu | AcrobatPDF | AcrobatStamp | AcrobatYouTube | AddressBook | Adobe | Adobe InDesign | AdobeAppleScript | AdobeBridge | AdobeIllustrator | AdobeJSX | aed | Alfresco | Android | AnimationGif | Apple | AppleScript | AppleScriptBasics | AppleScriptCharacter | AppleScriptColor | AppleScriptDroplet | AppleScriptErrorNum | AppleScriptFolder | AppleScriptFontBook | AppleScriptRename | AppleScriptTools | AppleSymbols | Applications | Barcode | Barcode2D | BarcodePostal | BetterHTMLExport | Book | Browser | buzz | Certificates | CharacterEntity | CharacterSets | Colors | Cool Site | CSS | Cutting | DecoMail | DecorationMail | Design | Desktop | Diff | DJ | dmg | DNS | Documents | Download | eBook | Editer | eMail | Envelopes | ExifTool | Facebook | FFmpeg | File System | Fonts | FontsTool | FontsWeb | FOOD | FormPrint | ftp | Gadget | Gif Animation | Google | HexEditor | HTML | info | iPhoto | ISBN | ISO | iTunes | iWork | iWorkNumbers | iWorkNumbersCalendar | iWorkNumbersTimecard | iWorkPages | JavaScript | JeditX | JeditX Regexp | JeditXAppleScript | JIS | jquery | Letterpress | Library | logo | Mac Admin | Mac Archiver | Mac Browser | Mac Browser Plugin | Mac QuickLook | Mac Spotlight | Mac Video | Map | Mobby | Moto | Movies | Music | Network Basic | ntp | OCR | Office | OSX | Pantone | Paper | PDFlib | Permission | Photo | Pictograms | Print | Public | QuickLook | QuickTime | QuickTimeSetting | QuickTimeSound | Real Media | ReName | ResourceFork | ruby | Screen | ScreenCast | Search | Security | SEO | Sharing | SLAResource | Spotlight | Stamp | SWF | Tutorial PSD | TV | Twitter | Typography | Unicode | Utilities | Video | WebFont | Wedding | Windows | WindowsMedia | XML | XMP | XPS | YouTube | YouTube Rss