このフレームワークは次の点で私にとって有用でした:プロジェクト(Webアプリケーション)はJavaアプレットを使用してPDFファイルを直接プリンターに印刷しましたが、Javaポリシーと権限に関するさまざまな問題により、アプレットの安定した動作+さまざまな小さなバグを達成できませんでした。ロード後にフォーカスアプレットをキャプチャするか、印刷中にブラウザがフリーズします。 たぶんそれは曲がった手です。 一般的に、マスコミは機能したかどうかに関わらず、誰にも適していない。
オプションとして、アプレットを削除してファイルを迅速かつ確実に印刷するプラグインを作成しようとすることが決定されました。 実際、印刷は同じJavaコードを実装し、jarファイルとして書き換えられています。 ただし、Javaとクライアントコードの間でやり取りするレイヤーはブラウザープラグインです。
次に、ローカルファイルシステムのファイルにデータを書き込む単純な「何もしないことを検討する」プラグインを作成しましょう。
Firebreathをインストールする
- Gitを使用してFireBreathのソースコードをダウンロードするか、FireBreath Webサイトからアーカイブをダウンロードしてください[2]:
git clone git://github.com/firebreath/FireBreath.git -b firebreath-1.5 firebreath-1.5
- ダウンロードしたFirebreathがあるフォルダーに移動し、空のプロジェクトを生成します。 このためには、Pythonをインストールする必要があります。
python fbgen.py
fbgen.pyは、プラグインに関する情報(名前や説明など)を要求し、projects / pluginNameフォルダーにプラグインソースを含むフォルダーを作成します。 次に、これらの操作を実行するときのコンソール出力:
alex@alex-laptop:~$ git clone git://github.com/firebreath/FireBreath.git -b firebreath-1.5 firebreath-1.5
Initialized empty Git repository in /home/alex/firebreath-1.5/.git/
remote: Counting objects: 16089, done.
remote: Compressing objects: 100% (4841/4841), done.
remote: Total 16089 (delta 12322), reused 14495 (delta 11066)
Receiving objects: 100% (16089/16089), 11.28 MiB | 535 KiB/s, done.
Resolving deltas: 100% (12322/12322), done.
alex@alex-laptop:~$ cd firebreath-1.5/
alex@alex-laptop:~/firebreath-1.5$ python fbgen.py
Plugin Name []: readFile
Plugin Identifier [readFile]:
Plugin Prefix [RFI]:
Plugin MIME type [application/x-readfile]:
Plugin Description []:
Invalid syntax: Description must be one or more characters long!
Plugin Description []: Read test.txt from ~ folder
Plugin has no UI [false]:
Company Name []:
Invalid syntax: Name must be at least one character, and may not contain carriage returns.
Company Name []: Takeforce
Company Identifier [Takeforce]:
Company Domain [takeforce.com]:
Done. Files placed in /home/alex/firebreath-1.5/projects/readFile
- 次に、データをファイルに書き込むコードを作成します(たとえば、/ home / alex / log.txt)。 readFileAPI.cppファイルとreadFileAPI.hファイルのコードを変更する必要があります。これらのファイルは、名前が示すように、プラグインインターフェイスを記述して実装します。
ファイルに書き込むメソッド(C ++でごめんなさい:)):
FB::variant readFileAPI::write(const FB::variant& msg) { string message; if (msg.is_of_type<FB::JSObjectPtr>()) { message = msg.cast<FB::JSObjectPtr>()->Invoke("ToString", FB::variant_list_of()).convert_cast<std::string > (); } else { message = msg.convert_cast<std::string > (); } ofstream myfile; myfile.open ("/home/alex/log.txt"); myfile << message; myfile.close(); return msg; }
- また、メソッドシグネチャを.hファイルに追加し、メソッドをクラスコンストラクターに登録します。
registerMethod("write", make_method(this, &readFileAPI::write));
プラグインアセンブリ
動作するには、次のパッケージが必要です。
- CMakeバージョン2.8
- libgtk2.0-dev
- Git
apt-get install cmake libgtk2.0-dev git
- まず、FireBreathルートフォルダーでprepmake.shを実行して、アセンブリのコードを準備する必要があります
- ビルドフォルダーが作成され、そこに移動してmakeコマンドを実行します。
実装
その結果、npreadFile.soファイルはbuild / bin / readFileフォルダーに表示されます。このフォルダーは、〜/ .mozilla / pluginsをコピーする必要があります。chromeおよびfirefoxで見つけることができます。 その後、ブラウザを起動して、ファイルbuild / projects / readFile / gen / FBControl.htmを開くことができます
ページには、プラグインが正常にロードされたことが表示され、コンソールで試してみることができます。
plugin().write('Hello');
そして、「Hello」が表示されている/home/alex/log.txtファイルを見てください。
結論
他の方法では実行できないブラウザ権限でクライアント上で何かを実行する必要がある場合、またはいくつかの重い操作を実行する必要がある場合、同時にクライアントコンピューターにソフトウェアをインストールする必要があることをうれしく思います。ファイアブレス
FireBreathで作成されたプラグインがGoogle Chome、Mozilla Firefox、IE8バージョンで動作することを確認しました。 Opera、Safari、IE6-7で動作するのと同じ方法で記述されていますが、テストしていません。
参照:
1) en.wikipedia.org/wiki/NPAPI
2) www.firebreath.org