Adobe Acrobat で JavaScript を使用して動的な凡例を実装します。
ドキュメントには多くのレイヤーが含まれています。すべてのレイヤーには独自の凡例があります。元のアイデアは、表示レイヤーのダイアログ ボックスに画像が含まれるように凡例を実装することです。
ドキュメントレベルで状態を false または true (this.getOCGs()[i].state = false;) に設定することによってのみ、レイヤーを非表示/表示できます。
質問 1: 凡例を確立するために、レイヤーから何らかの方法でデータを抽出できますか? getIntent()、setIntent()、および setAction() のレイヤーにのみこれらの関数があるため、いいえと思います。右?したがって、すべてのレイヤーに必要なすべてのアイコンが、対応する名前のフォルダーに保存されるように配置することにしました。JavaScript はアイコンをインポートする必要があり、可視レイヤーのアイコンを含むダイアログ ウィンドウを作成し、テキスト (このアイコンの説明) を配置します。
ここで説明されている画像インポートのすべての可能性を試しました: http://pubhelper.blogspot.com.au/2012/07/astuces-toolbar-icons-et-javascript.html。方法は 1 つしかありません (アイコンを 16 進数の文字列に変換します)。他のツールで画像から 16 進数の文字列を作成し、それを JavaScript コードに配置するのは面倒なので、この方法は良くありません。残念ながら、他の方法で画像をインポートすることはできません:(. Adobe のセキュリティ設定はバージョン 7 前後から変更されているため、app.newDoc、app.openDoc、さらには app.getPath などの機能をドキュメント レベルで使用することはできません。次のような信頼できる関数を使用して、フォルダー レベルでインポートを実装することにしました。
バリエーション 1:
var importImg = app.trustedFunction(function() {
app.beginPriv();
var myDoc = app.newDoc({
nWidth: 20,
nHeight: 20
});
var img = myDoc.importIcon("icon", "/icon.png", 0);
app.endPriv();
return img; });
var oIcon = importImg();
[設定] -> [JavaScript] -> [JavaScript セキュリティ] の設定が無効になっています (メニュー項目の JS 実行権限を有効にし、グローバル オブジェクト セキュリティ ポリシーを有効にします) NotAllowedError: セキュリティ設定により、このプロパティまたはメソッドへのアクセスが防止されます。App.newDoc:109:Folder-Level:User:acrobat.js
バリエーション 2:
var importImg = app.trustedFunction(function() {
var appPath = var phPath = app.getPath({
cCategory: "user",
cFolder: "javascript"
});
try {
app.beginPriv();
var doc = app.openDoc({
cPath: phPath + "/icon.png",
bHidden: true
});
app.endPriv();
} catch (e) {
console.println("Could not open icon file: " + e);
return;
}
var oIcon = util.iconStreamFromIcon(doc.getIcon("icon"));
return oIcon;});
var oIcon = importImg();
アイコン ファイルを開けませんでした: NotAllowedError: セキュリティ設定により、このプロパティまたはメソッドへのアクセスが禁止されています。
少なくとも、app.newDoc のようなこれらすべての関数の実行を許可しますが、2 番目のバリアントでは、コンテンツの範囲が間違っているなどと言っています。たぶん、作成された画像からのpdfは偽ですか?画像を取り込んでpdfに印刷しました。
.jpg、.png、.pdf でこれらすべての可能性を試しました。異なるサイズ (大きな画像と 20x20) では機能しません。
さまざまな可能性を試すのに多くの時間を費やしたので、誰かが私を助けてくれませんか. 上記の主な目標をドキュメントレベルで実装する方が実際には良いのですが、可能ですか?
よろしくお願いします、アレックス