- ベストアンサー
javaスクリプト 読み解けますか
下記、Adobeアクロバットにて 実行したく、ネットで探してきたのですが、実行すると最後の1文が出て、実行されませんでした。 何か間違ってるところありますでしょうか???やりたいことは、Adobeのpdf内の全てのページに、同じスタンプを押したい。。。 this.syncAnnotScan(); var annt = this.getAnnots(this.pageNum)[0]; var props = annt.getProps(); for(var i=0;i<this.numPages;i++){ props.page = i; if(i !=this.pageNum) this.addAnnot(props); } [Markup 2 bce44816-3c74-4e95-8bfd-c5d4ca46cc3c] 全然よくわかっていないものですが、何か教えていただけますと幸いです。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>2ページ目以降、スタンプが反転します 一口に反転と言っても、左右反転か上下反転か。 ただどちらにしても、解決できません。 自分の中では、選択したオブジェクトをそっくりそのままコピーするイメージなんですが、それがどうして崩れるのか。 反転に関わるプロパティがあるのか、少し調べようとしましたが、全然情報が見つかりません。 私の力不足ですみませんがお手上げです。 仕方が無いので、AIに聞いてみたら次のような回答でした。 var selectedAnnot = this.selectedAnnots[0]; var props = selectedAnnot.getProps(); var nCurrent = props.page; for (var i = 0; i < this.numPages; i++) { props.page = i; // 取得したアノテーションの向き情報を設定 props.rotation = selectedAnnot.rotation; props.isHorizontalFlip = selectedAnnot.isHorizontalFlip; if (i !== nCurrent) this.addAnnot(props); }
その他の回答 (3)
- luka3
- ベストアンサー率72% (424/583)
このスクリプトの問題の1つは、複製したいスタンプがそのページの1番目になっていないとならないこと。 それをふまえると、こちらのページの最後にあるスクリプトの方がいいかもしれません。 選択中のダイナミックスタンプを他ページにコピー、だそうです。 https://community.adobe.com/t5/acrobat-sdk-discussions/custom-dynamic-stamp-to-every-page-automatically/m-p/10894065 var props = this.selectedAnnots[0].getProps(); var nCurrent = props.page; for(var i=0;i<this.numPages;i++) { props.page = i; if(i!=nCurrent) this.addAnnot(props); }
- luka3
- ベストアンサー率72% (424/583)
スクリプトの解説をご希望のようですので、わかる範囲で説明します。 (私はAcrobatでスクリプトを常用するプロではありません。回答・説明のために必要な情報を調べているに過ぎませんのでご容赦ください) this.syncAnnotScan(); 解説によると 注釈の同期化 だそうです var annt = this.getAnnots(this.pageNum)[0]; getAnnots 指定した条件の注釈を全て取得する this.pageNum 今開いているページ番号? 上と合わせて「このページの注釈全部」 [0] …の1番目(コンピュータでは効率化のためゼロから始めることがよくある) すなわち「このページにある最初の注釈を取得してannt変数に入れる」 var props = annt.getProps(); 取得した注釈のプロパティ情報をprops変数に入れる(コピーする?) for(var i=0;i<this.numPages;i++){ 簡単に言うと「このPDFのページ数だけループする」 変数iをカウンタとして使う props.page = i; ページ番号iに挿入するための準備? if(i !=this.pageNum) iが今開いているページじゃなかったら次の行を実行 this.addAnnot(props); propsのデータを使って注釈を追加する? いちおう確認ですが、スタンプは「注釈(コメント)」のスタンプですよね? あと「Markup」は何個追加したかの結果を表示したものと思われます。スクリプトの一部ではないようです。
補足
Markup2 と出たので、どこかに追加されていたのでしょうか?2個? 総ページはもっとあったのですが🥺 スタンプは、Adobeacrobatproの、スタンプ機能から作ったスタンプです。デバック?はこのhttps://youtu.be/ZRmXJqkIqpw?si=ywXzpzo97ct3uZ9_ YouTubeの通りにして画面出しました!!コントロールエンター押す直前に、スタンプは押してます!! 訳して頂き、やはり合ってそう なのに!!なぜ動かなかったのでしょうー!!!涙涙涙
- luka3
- ベストアンサー率72% (424/583)
前準備として、このページの手順のとおり、「後で削除.js」を作成し、Acrobat\Javascriptsのフォルダにコピーします。 https://qiita.com/yuyamaga/items/fee9313fac6d02a5d3de 私の場合、Acrobat再起動、PDFを開く、最小化・元に戻す でデバッガ画面が出ました。 デバッガ画面が出たら、「コンソール」の下のエリアに質問者さんのスクリプトを(this.syncAnnotScan(); から } まで)貼り付けて、貼り付けた分を範囲選択して、Ctrl+Enterを押したところ、(適当に押してみた)スタンプが他のすべてのページにコピーされました。 なお、「後で削除.js」をAcrobat\Javascriptsのフォルダにコピーする際、管理者権限が必要になります。 最後の [Markup ...] の行が何をするものかわかりませんが、この行を含めて実行しようとするとエラーで動きませんでした。
補足
聞いてください!デバッカ(?)画面に貼り付けてコントロールエンターを押したのですが。。涙。 全部に押せたんですね!羨ましいです。このコードでなぜスタンプが選択できるんですかね? 補足、Adobeアクロバットプロの、Javaスクリプト選択したらデバッカ画面でましたそこで、コードを全選択し、コントロールとエンター押したら「」のエラーでました
補足
var props = this.selectedAnnots[0].getProps(); var nCurrent = props.page; for(var i=0;i<this.numPages;i++) { props.page = i; if(i!=nCurrent) this.addAnnot(props); } 回答頂きありがとうございます! またお聞きしたいのですが、 2ページ目以降、スタンプが反転します😂 改善できますでしょうか??