関連ページ  
HTML コントロールで PDF 表示 :【AIR Flex】


ブラウザでダウンロード

AIR では、HTML コントロールによって、通常はブラウザで表示するようなコンテンツ
を使用する事ができますが、主に対象として 3 つ考えられます。

1) PDF
2) SWF
3) HTML

PDF と SWF は、もともと adobe のプラグインであり、
AIR に表示する事に特に問題はありません。

しかし、HTML はブラウザとしての機能には当然及ばず、
いろいろ問題があるようです。
2) SWF


3) 簡易ブラウザ


4) Google MAP

Mainw.mxml
001.<?xml version="1.0" encoding="utf-8"?>
002.<mx:WindowedApplication
003.    xmlns:mx="http://www.adobe.com/2006/mxml"
004. 
005.    showFlexChrome="true"
006. 
007.    initialize="initData();"
008.    creationComplete="initApp1()"
009.    applicationComplete="initApp2()"
010.    closing="endApp(event)"
011. 
012.    visible="true"
013.    usePreloader="true"
014. 
015.    alwaysInFront="false"
016. 
017.    titleIcon="@Embed('data/icon.png')"
018.    title="lightbox"
019.>
020. 
021.<mx:Style source="extern/Style.css" />
022.<mx:Script source="extern/Parts.as" />
023. 
024.<mx:Script>
025.<![CDATA[
026. 
027.    import control.*;
028. 
029.    private var win:HtmlWindow = null;
030. 
031.    // *********************************************************
032.    // endWindow
033.    // *********************************************************
034.    private function endApp(e:flash.events.Event):void {
035. 
036.        trace("[App:end]");
037.        this.exit();
038. 
039.    }
040. 
041.    // *********************************************************
042.    // pdfWindow
043.    // *********************************************************
044.    public function pdfWindow():void {
045. 
046.        trace("[App:pdfWindow]");
047. 
048.        var win:PdfWindow = new PdfWindow();
049.        win.open();
050. 
051.    }
052. 
053.    // *********************************************************
054.    // mapWindow
055.    // *********************************************************
056.    public function mapWindow():void {
057. 
058.        trace("[App:mapWindow]");
059. 
060.        var win:MapWindow = new MapWindow();
061.        win.open();
062. 
063.    }
064. 
065.    // *********************************************************
066.    // htmlWindow
067.    // *********************************************************
068.    public function htmlWindow():void {
069. 
070.        trace("[App:htmlWindow]");
071. 
072.        if ( win == null ) {
073.            win = new HtmlWindow();
074.            win.open();
075.        }
076.        else {
077.            win.visible = true;
078.            win.restore();
079.        }
080. 
081.    }
082. 
083.    // *********************************************************
084.    // htmlWindow2
085.    // *********************************************************
086.    public function htmlWindow2():void {
087. 
088.        trace("[App:htmlWindow]");
089. 
090.        var win:GmapWindow = new GmapWindow();
091.        win.open();
092. 
093.    }
094. 
095.    // *********************************************************
096.    // initialize
097.    // *********************************************************
098.    public function initData():void {
099. 
100.        trace("[App:beforeDisplay]");
101. 
102.    }
103. 
104.    // *********************************************************
105.    // creationComplete
106.    // *********************************************************
107.    private function initApp1():void {
108. 
109.        trace("[App:afterDisplay]");
110. 
111.    }
112. 
113.    // *********************************************************
114.    // applicationComplete
115.    // *********************************************************
116.    private function initApp2():void {
117. 
118.        trace("[App:start]");
119. 
120.        dr.setFocus();
121. 
122.    }
123.]]>
124.</mx:Script>
125. 
126.<mx:Image id="dr" source="@Embed('data/dr.png')" />
127. 
128.<mx:VBox>
129.    <mx:Button 
130.        id="btn1" 
131.        label="pdf ウインドウ"
132.        styleName="blackButton"
133.        click="pdfWindow()"
134.        width="300"
135.    />
136.    <mx:Button 
137.        id="btn2" 
138.        label="map ウインドウ(swf)"
139.        styleName="blackButton"
140.        click="mapWindow()"
141.        width="300"
142.    />
143.    <mx:Button 
144.        id="btn3" 
145.        label="html ウインドウ(簡易ブラウザ)" 
146.        styleName="blackButton"
147.        click="htmlWindow()"
148.        width="300"
149.    />
150.    <mx:Button 
151.        id="btn4" 
152.        label="html ウインドウ(Google Map)" 
153.        styleName="blackButton"
154.        click="htmlWindow2()"
155.        width="300"
156.    />
157.</mx:VBox>
158. 
159.</mx:WindowedApplication>


PDF
PDF の表示は全て adobe の reader に任せる形になるので、
プログラミングは殆ど必要ありません。

しかし、resize イベントは重要で、これをやっておかないと
HTML コントロールは本来の価値が発揮できません。

ただ、調整するサイズに関しては、計算ではなく定数で行っています。
( 計算で行えるかどうかは解りません )
PdfWindow.mxml
01.<?xml version="1.0" encoding="utf-8"?>
02.<mx:Window
03.    xmlns:mx="http://www.adobe.com/2006/mxml"
04.    horizontalAlign="center"
05.    verticalAlign="middle"
06.    type="normal"
07.    systemChrome="none"
08.    transparent="false"
09.    showFlexChrome="true"
10.    alwaysInFront="false"
11. 
12.    initialize="initData();"
13.    creationComplete="initApp1()"
14.    applicationActivate="initApp2()"
15.    resize="webResize(event)"
16. 
17.    width="750"
18.    height="550"
19. 
20.    title="  PdfWindow"
21.>
22. 
23.<mx:Script>
24.<![CDATA[
25. 
26.    import mx.core.*;
27.    import mx.events.*;
28. 
29.    // *****************************************************
30.    // 初期処理
31.    // *****************************************************
32.    private function initData():void {
33. 
34.        web.location = "data\\readme.pdf";
35. 
36.    }
37. 
38.    // *****************************************************
39.    // HTML コントロール のサイズコントロール
40.    // *****************************************************
41.    private function webResize(e:mx.events.ResizeEvent):void {
42. 
43.        try {
44.            web.width = this.width-2;
45.            web.height = this.height-45;
46.        }
47.        catch (error:Error) {
48.        }
49. 
50.    }
51. 
52.    // *********************************************************
53.    // creationComplete
54.    // *********************************************************
55.    private function initApp1():void {
56. 
57.        trace("[App:afterDisplay]");
58. 
59.    }
60. 
61.    // *********************************************************
62.    // applicationComplete
63.    // *********************************************************
64.    private function initApp2():void {
65. 
66.        trace("[App:start]");
67. 
68.    }
69. 
70. 
71.]]>
72.</mx:Script>
73. 
74.<mx:HTML
75.    id="web"
76.    width="700"
77.    height="500"
78./>
79. 
80.</mx:Window>