このコンテンツには確定マークが設定されています。
4 件の返信
の表示
-
1. Re: レイヤーをJavaScriptから制御したい
(brazil) May 22, 2006 2:08 PM ((honey_pot) への返信)以下のサイトが参考になるはず。
・Focus on PDF Layers (OCG)
http://www.planetpdf.com/developer/article.asp?ContentID=6527
レイヤーはOCG(Optional Content Groupsの略)に属するが、これを全ページ分にわたって表示/非表示を切り替える手法がそこにはのっている。
// Visible
var docOCGs = this.getOCGs();
for (var x=0; x < docOCGs.length; x++)
{
docOCGs[x].state = true;
}
// InVisible
var docOCGs = this.getOCGs();
for (var x=0; x < docOCGs.length; x++)
{
docOCGs[x].state = false;
}
あとは、ページ指定、レイヤーの名前指定などをさがせばよいわけだ。このあたりは「Acrobat JavaScript Scripting Reference 7.0.5」や「Acrobat JavaScript Scripting Guide 7.0.5」に載っているはず。
キーワードは上記内サンプル内から探れるだろう。
上記サイトにもあるが、以下のようにすれば、現在のレイヤー表示状態を逆にすることになる。これをボタンのアクションに設定すると、1つのボタンでレイヤーの表示/非表示ができる。
var docOCGs = this.getOCGs();
for (var x=0; x < docOCGs.length; x++)
{
docOCGs[x].state = !docOCGs[x].state;
}
質問者は、スクリプトが完成したら、情報共有のためにもサンプルスクリプトを投稿してもらいたい。 -
2. Re: レイヤーをJavaScriptから制御したい
(honey_pot) May 26, 2006 9:12 AM ((honey_pot) への返信)brazil様
有益な情報のご提示ありがとうございました。以下のスクリプトで解決しました。
チェックボックスのアクションスクリプト
EJ_Control ( "01EC", "01E", "01EB-1", "01EB-2" )
文書のスクリプト
function EJ_Control ( CB_name, Lyer_name, B1_name, B2_name, B3_name, B4_name, B5_name, B6_name, B7_name, B8_name, B9_name )
{
var C = this.getField ( CB_name ) ;
var docOCGs = this.getOCGs ( ) ;
if ( B1_name != "" )
{
var B1 = this.getField ( B1_name ) ;
}
if ( B2_name != "" )
{
var B2 = this.getField ( B2_name ) ;
}
if ( B3_name != "" )
{
var B3 = this.getField ( B3_name ) ;
}
if ( B4_name != "" )
{
var B4 = this.getField ( B4_name ) ;
}
if ( B5_name != "" )
{
var B5 = this.getField ( B5_name ) ;
}
if ( B6_name != "" )
{
var B6 = this.getField ( B6_name ) ;
}
if ( B7_name != "" )
{
var B7 = this.getField ( B7_name ) ;
}
if ( B8_name != "" )
{
var B8 = this.getField ( B8_name ) ;
}
if ( B9_name != "" )
{
var B9 = this.getField ( B9_name ) ;
}
if ( C.isBoxChecked ( 0 ) )
{
//app.alert ( "The Box is Checked" ) ;
for ( var x=0; x < docOCGs.length; x++ )
{
if ( docOCGs[x].name == Lyer_name )
{
docOCGs[x].state = false;
}
}
if ( B1_name != "" )
{
B1.display = display.hidden;
}
if ( B2_name != "" )
{
B2.display = display.hidden;
}
if ( B3_name != "" )
{
B3.display = display.hidden;
}
if ( B4_name != "" )
{
B4.display = display.hidden;
}
if ( B5_name != "" )
{
B5.display = display.hidden;
}
if ( B6_name != "" )
{
B6.display = display.hidden;
}
if ( B7_name != "" )
{
B7.display = display.hidden;
}
if ( B8_name != "" )
{
B8.display = display.hidden;
}
if ( B9_name != "" )
{
B9.display = display.hidden;
}
}
else
{
//app.alert("The Box is not Checked");
for (var x=0; x < docOCGs.length; x++)
{
if(docOCGs[x].name == Lyer_name)
{
docOCGs[x].state = true;
}
}
if ( B1_name != "" )
{
B1.display = display.visible;
}
if ( B2_name != "" )
{
B2.display = display.visible;
}
if ( B3_name != "" )
{
B3.display = display.visible;
}
if ( B4_name != "" )
{
B4.display = display.visible;
}
if ( B5_name != "" )
{
B5.display = display.visible;
}
if ( B6_name != "" )
{
B6.display = display.visible;
}
if ( B7_name != "" )
{
B7.display = display.visible;
}
if ( B8_name != "" )
{
B8.display = display.visible;
}
if ( B9_name != "" )
{
B9.display = display.visible;
}
}
}
ただ、ファイルサイズを縮小させるとVer.6以降でないとレイヤの表示/非表示制御ができません。これは仕様? -
3. Re: レイヤーをJavaScriptから制御したい
(habacchi(古い船のことしか解らない古い水夫)) May 26, 2006 9:42 AM ((honey_pot) への返信)PDFがレイヤ(画層)の概念を持ったのは、
PDFのバージョン1.5(Acrobat 6.x互換)から後なのです。
PDFのバージョン1.4(Acrobat 5.x互換)にすると、レイヤは実現出来ません。
また、Acrobat 5.0 のナビゲーションパネルには「レイヤー」タブがありません。 -
4. Re: レイヤーをJavaScriptから制御したい
(honey_pot) May 26, 2006 12:19 PM ((honey_pot) への返信)habacchi(かもされました) 様
教えて頂き、ありがとうございます。
更に追加の質問があります。(皆様へ)
途中まで書きかけて、別問題であることに気付きましたので、別にスレッドを起こします。
