Win/MacのFirefox(手元のバージョンは2.0)にて、HTMLページを印刷する際、コンテンツにFlash(SWF)が含まれていると、その部分がぽっかり空白になって印刷されてしまう。
FirefoxでHTMLと一緒にFlashコンテンツを印刷したいのだが……どうしたらよいものか。
いろいろ調べた結果、
:
:
:
ずばり、対処法はありません。
SafariやIEだと問題ない。
どうもFirefoxの仕様のようです。(バグ?)
Firefox 3はどうなんでしょうか。まだ使ってません。
HTMLはそもそも印刷に向いてない!というのは、制作側の言い分で、ほとんどのオーナーさんは、かなりの確立でHTMLページを印刷してチラシ代わりに使ったり、資料として使ったりする。
CSSのmediaでprintを指定しておけば、印刷時にFlashの代替えを表示することは可能だが、Safari/IEではFlashコンテンツを印刷できるのに、静止画に差し替えるのはもったいない。
Flash(SWF)を印刷できないFirefoxの時のみ、静止画に差し替えたいのだ。
そこで、
・Safari/IEは、通常時(screen)、印刷時(print)ともに、Flashコンテンツをそのまま使用
・Firefoxは、通常時は、Flashコンテンツを使用、印刷時は、代替えのイメージや文字を表示
する方法を考えた。
つまり、ブラウザ毎にCSSを切り替えかつ、mediaもチェックするということ。
ブラウザ毎のCSSの切り替えには
Simple CSS Hack – CSS Browser Selector – SCREAMO
CSS Browser Selector
を使った。これはコードも短いし、便利だね。
で、実際に作成したコードはこんな感じ。
HTMLコード
<script src="/lib/css_browser_selector.js" type="text/javascript"></script> <div id="flashcontent"> // フラッシュコンテンツ </div> <div id="flashcontent_fw_print"> // Firefoxの印刷時にのみ、表示する部分 </div>
CSSのコード
/* flash部分の指定 */
div#flashcontent{
}
/* 基本、非表示 */
div#flashcontent_fw_print{
display:none;
}
/* 印刷時 Gecko(Firefox)のみ、swfを非表示、印刷用を表示*/
@media print {
.gecko div#flashcontent{
display:none;
}
.gecko div#flashcontent_fw_print{
display:block;
}
}
これで、Firefoxのみ、印刷時に代替えブロック(div id=”flashcontent_fw_print”>が表示され、Safari/IEでは、そのまま印刷されます。
FirefoxがFlashコンテンツの印刷にちゃんと対応してくれれば、こんな小手先の対応しなくてもいいんだけどね~
理想的なのは、Flashが、ブラウザからの印刷リクエストをちゃんと理解して、そのときに表示するステージを指定できたら一番いいんだけどねー。たとえば、IEからFlashが含まれるページを印刷しようとすると、その時点で表示されているFlashが印刷されてしまう。
そうじゃなくて、Flash側でブラウザの印刷リクエストを処理できれば、印刷向けに用意したムービークリップなりを表示して、印刷しても情報の不備が無いようにできたらいいんだけどね~
adobeは印刷のソリューションもやってるんだから、そのあたりもちゃんとやってくれてもいいのにネー。
…もっといい方法があったらコメントorトラバお願いします。
Popularity: 44% [?]




