Staff’s Blog

開発実績

Staff's Blog

採用情報

  • 日本ベンチャーシステム株式会社
  • 〒541-0051
    大阪市中央区備後町1丁目4番5号
    堺筋東野村ビル5階
  • TEL:06-6266-8755
  • お問い合わせ
2010/11/22/(月)10:25
 (1月14日 改変)
 ■ ブラウザ上に表示したFlash上にPDFファイルを表示する方法
 
  AIR環境下であれば、HTMLLoaderを利用することで比較的簡単に実現できる
  この機能も、ブラウザで行うには一工夫が必要です。
  
  一つの解決策として、予めiFrame内にPDFファイルを表示する機能を
  Html/Javascriptで作成しておき、それをFlexから呼び出す方法があります。
  
  サンプル プログラム
  
   IE / FireFox / ※Chrome で動作検証を行っています。
   (Chrome v8.xx系は、内蔵PDFビューアの不具合により正常に動作しません。)
  
  主となるファイルの構成は以下の通りで、
  PreviewSample.html/Preview.html/Preview.swf の3ファイルがPDFファイル表示
  機能となり、メインアプリであるPreviewSampleからの呼び出しによって、PDFファイル
  の表示を行っています。
  
  
  
  ソースファイル
  


  作成のポイントはいくつかあります。
  
  一つは、iFrameタグをJavascriptで出力している部分です。


[previewSample.html]

[previewSample.js]
var openPreview = function(title, url){
  var o1 = encodeURIComponent(title);
  var o2 = url;
  $("#previewFrame").html("");
}

  予めPreviewSample.html内にiFrameタグでPreviewタグを作成しておき、
  必要に応じてスタイルシートで表示/非表示の切り替えを行う方法を試したところ、
  ChromeブラウザではPDFファイルがメインアプリケーションの後ろに隠れて表示
  されてしまい、見えなくなってしまうことが分かりました。

  無駄ではありますが、この様に毎回iFrameタグを出力する事で、この現象を
  回避することができます。


  もう一つのポイントは、PDFプレビュー画面の枠を別swfで作成している所です。
  
  これは、ブラウザの機能である拡大縮小に対応する為となります。
  
  メインアプリであるPreviewSample.swfは、ブラウザの拡大/縮小の影響を
  受けないのですが、iFrameで表示しているPreview.htmlは、その影響を
  受けてしまいます。つまり、拡大/縮小を行うとプレビュー画面の枠のサイズ
  は同じのまま、中身のPDFファイルだけが拡大縮小されてしまい、
  レイアウトが崩れてしまいます。
  
  そのため、プレビューの枠自体を別swfファイルで作成しておき、iFrame内で
  表示させることにより、レイアウトが崩れるのを防いでいます。
  
2010/11/15/(月)11:31

ExternalInterface
 FlashからJavascriptの関数を呼び出したり、その逆の
 JavascriptからFlashの関数を呼び出す場合に利用する AS3 の関数。
 
 この動作確認を行っていたところ、FireFoxから利用した場合にのみ
 Javascript から Flash の関数が呼び出せない事象が発生しました。
 その原因の調査を行いましたので、その結果を記載します。
 
 まず、ExternalInterface の仕様を確認すると、以下の一文を発見。
 
 ObjectID
  「Internet Explorer の場合は object タグの id 属性を返し、
    Netscape の場合は embed タグの name 属性を返します。」
 
 どうやら、ブラウザとタグの組み合わせによって動作に違いがでるみたい。
 そこで、まずはブラウザとタグを組み合わせていろいろと動作検証をしてみました。
 
 Java -> Flash
 

 
 Flash -> Java
 

 
 予想と反して、FireFoxは全ての組み合わせで動作していました。
 
 そこでもう一度、要因調査を行うと動作するプログラムと動作しない
 プログラムの差として、swfObjectの利用有無がありました。
 
 結論から言いますと、ExternalInterfaceが動作しなかった原因は、
 この swfObject にありました。
 
 swfObjectを利用してのflash公開方法には、「static publishing」と
 「dynamic publishing」の2通りが存在し、このうち「static publishing」
 と呼ばれる方法で公開すると、この現象が発生するようです。
 
 どうやら、「static publishing」では object タグが入れ子となり、firefox
 では、内側のojectタグでflashが貼り付けられるのですが、id指定でオブジェクト
 取得すると、外側のobjectタグが取得されてしまい、うまく動作しないように見えました。
 
 対応策としては、「dynamic publishing」を利用することとなります。
 

2010/11/11/(木)14:26

Flash 10.1 のリリースノートで、


 「wmode が opaque 又は transparent に指定されていると、
   Internet Explorer 以外のブラウザで日本語入力ができません。」


というBUG[FP-1877]がなおったとの記載があったので、さっそく試してみました。


wmode-1.JPG

△:日本語の入力は可能であるが、ずれて表示される。
1:全角文字が入力できない。
2:全角・半角文字が入力できない。


いろいろと問題がありあそうですね。

2010/11/10/(水)20:14

帳票作成ツール BIRT のフォント周りについて調べてみました。
(2010年12月10日 更新)

BIRT 3.7.1 では、フォントの設定方法が変わっています。詳しくは、こちら 
(2012年2月 更新)


以下のような問題・疑問の解決に役立つかもしれません!?
 
 ・帳票デザイン時に指定されたフォントで帳票が作成されない。
 ・WindowsとLinuxのそれぞれで帳票を出力した場合、異なるフォントで帳票が作成される。
 ・独自のフォントを利用したい。
 
 ちなみに、BIRT のバージョンは 2.5.2 です。
 
 

■まずは、PDFのフォントの扱いがよくわからなかったので、おさらい...
 
 PDFの文字表示に利用されるフォントには、以下の二種類があります。
 
  ・PDFビューアに組み込まれているフォント
 
  ・PDFファイル事態に組み込まれたフォント
 
 ビューアーに組み込まれたフォントを利用すると、ファイルサイズを
 抑えることができ、さらに表示速度もはやくなるとか。ただし、環境に
 よってはフォントが見つからずに表示できなくなる事があるようです。
 (英語版Acrobat Readerでフォントを入れずに、日本語PDFファイルを
  読み込んだ場合などなど..)
 
 PDFファイルにフォントを組み込んだ場合は、上記のような問題は起きません。
 (Acrobat Readerは、フォントの表示機能でさえもOSに依存しないようですね。)
 ただし、ファイルサイズは大きくなります。また、フォントの著作権によっては、
 埋め込めない場合がありますので、慎重な利用が求められます。
 
 

■BIRTで埋め込みフォントを利用する場合は
 
 BIRTでPDFを出力する場合、作業としては大きく、
  ・Eclipseで、rptdesign(レポートのテンプレートファイル)を作成する。
  ・作成したrptdesignを、reportEngineでPDFファイルに変換する。

 の二つになります。
 

 
 PDFファイルにフォントを埋め込む場合、rptdesignでフォントを指定
 するだけでなく、reportEngineにもフォント情報を設定してあげる必要
 があります。
 
 

■rptdesignにフォントを設定する方法
 
 1. コンパネのフォントを開き、

  その中にフォントファイルをコピーします。

 
 2. rptdesignを作成する際に、フォントを指定する。

 
   これだけ!
 


■reportEngineにフォントを設定する方法
 
 1. reportEngineの設定ファイルに、フォントファイルのありかを登録します。
 
  ファイル名
   ./ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.2.v20091224
    /fontsConfig.xml
 

 
  font-paths のセクションに、フォントファイルが置いてあるディレクトか
  ファイルそのものを指定します。
 
  ちなみに、デフォルトで幾つかフォントフォルダが指定されていました。
 
 
 以上の作業で、指定したフォントでPDFファイルが作成されると思います。
 
 

■フォントファイルのリファレンス
 

 設定ファイルのありか
 
  ./ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.2.v20091224
 
 設定ファイルの種別
 
  1. 出力フォーマットに依存しない設定ファイル
 
   a. デフォルト設定ファイル: fontsConfig.xml
   b. プラットホーム毎の設定ファイル: fontsConfig_Windows_XP.xml
   c. プラットホーム/指定ロケール毎の設定ファイル: fontsConfig_win32_zh.xml
 
  2. 出力フォーマットに依存する設定ファイル
 
   d. デフォルトの設定ファイル: fontsConfig_pdf.xml
   e. プラットフォーム毎の設定ファイル: fontsConfig_pdf_win32.xml
   f. プラットホーム/指定ロケール毎の設定ファイル: fontsConfig_pdf_win32_zh.xml
 
  ※ 各設定ファイルの優先順度は f > e > d > c > b > a となります。(fが最優先)
 
 

 利用するフォントを決定するロジック
 
  基本的には、帳票レイアウト時に指定されたフォントを利用します。
  また汎用的なフォントが指定された場合、AcrobatReader 組込みフォントへ
  自動的に置き換えられます。※フォントのマッピングは、設定ファイルで記載します。
 
  BIRTは、プラグインのフォントフォルダ("org.eclipse.birt.report.engine.fonts")内にある
  フォントを利用します。ただし、設定ファイルで font-paths が指定されている場合、
  その設定を利用します。この場合は、プラグインのフォントフォルダは利用されません。
  (どちらか一方が利用されます。)
 
  利用すべきフォントが見つからない場合、変換に失敗したことを示す文字 "?" を
  代わりに表示します。 なお "?" の表示には、デフォルトのフォントが利用されます。
  ※デフォルトのフォントは、設定ファイルで記載します。
 
 

設定ファイルの記載方法
 
 font-aliases セクション
 
  フォントのマッピングを設定します。
  なお、古いバージョンで利用されていた "font-mapping" エントリーも有効です。
  "font-aliases" と "font-mapping" で同じエントリーがある場合、
  "font-aliases"が優先されます。
 
 composite-font セクション
 
  合成フォントを作成することができます。このエントリーでは、
  通貨記号のように言語毎に異なるフォントを指定することもできます。
  
   character value="\u0068" font-family="Time Roman"/
  
  value値には、文字そのものか、ユニコード値を指定することができます。
  なお、複合フォント名に "all-fonts"を指定すると、デフォルトの
  フォントとなります。 該当するフォントが指定されていない場合、
  この設定が利用されます。
 
 font-paths セクション
 
  BIRTが利用するフォントファイルを指定します。
 
 font-encodings セクション
 
  各フォントのエンコードを設定します。
 
 ※ちなみに、設定ファイルで指定できるAcrobat Readerの組込みフォントは
  HeiseiMin-W3, HeiseiKakuGo-W5, KozMinPro-Regula の3つみたいです。

前の5件 1  2  3  4  5  6
カテゴリー
  • その他
  • イベントキャンペーン
  • インフォメーション
  • 最新情報
カレンダー
2013年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
アーカイブ