Firefox アドオン JPPrintSetup を発見!
WEBアプリを作る上での、避けて通れない、プリンタの制御。
やっと見つけました。とりあえず、Firefox用なので、それで試してみることに。
https://addons.mozilla.org/en-US/firefox/addon/8966
から入手。
作者のURLのリファレンス
http://jsprintsetup.mozdev.org/reference.html
追記
暇があれば、下記を修正したりしているけど、用紙のサイズの指定ができなさそう;_;
それができれば、良かったのに・・・。
JSPrintSetupオブジェクトのリファレンスっぽいの。
Methods
- setOption , getOption
プリンタへの設定値の設定と取得。
jsPrintSetup.setOption( '設定文字列', 設定値 ); //設定 jsPrintSetup.getOption( '設定文字列' ); //取得
設定文字列 | 用途 | 設定値 |
---|---|---|
orientation | 用紙の方向 | |
marginTop | 上部の余白 | 数値。単位はミリメートル |
marginBottom | 下部 〃 | 〃(mm) |
marginLeft | 左側 〃 | 〃(mm) |
marginRight | 右側 〃 | 〃(mm) |
headerStrLeft | ページのヘッター左側文字列 | 文字列を指定します。以下特殊文字 |
headerStrCenter | 〃 中央 | 〃。〃 &T タイトル |
headerStrRight | 〃 右側 | 〃。〃 &U URL |
footerStrLeft | ページのフッター左側文字列 | 〃。〃 &D 日付/時間 |
footerStrCenter | 〃 中央 | 〃。〃 &P ページ番号 |
footerStrRight | 〃 右側 | 〃。〃 &PT 総ページ/ページ番号 |
設定文字列 | 用途 | 設定値 |
shrinkToFit | ページ合わせて縮小印刷する | 0 or 1 |
numCopies | コピーする枚数 | 数値 |
outputFormat | ??? | ※alert(jsPrintSetup.getOption( 'outputFormat' )); 戻り値は、0 |
paperData | ??? | ※alert(jsPrintSetup.getOption( 'outputDate' )); 戻り値は null だが、現在サーポートされていないとalertされる |
paperName | 用紙の名前 | 文字列 |
paperHeight | 用紙の高さ | 数値(mm) |
paperWidth | 用紙の幅 | 数値(mm) |
paperSizeType | ??? | ※alert(jsPrintSetup.getOption( 'printSizeType' )); 戻り値は null だが、現在サーポートされていないとalertされる |
paperSizeUnit | 用紙のサイズの単位 | 読み出し専用 |
scaling | 拡大縮小率 | パーセント指定(%) |
printRange | ページ指定 | ページの範囲を指定。省略すると全ページ |
startPageRange | 印刷範囲の最初のページ | 数値 |
endPageRange | 印刷範囲の最後のページ | 数値 |
printSilent | 確認なしでの印刷 | 数値。0 or 1 |
printBGColors | 背景の色を印刷 | 数値。0 or 1 |
printBGImages | 背景の画像を印刷 | 数値。0 or 1 |
- setGlobalOption( in string option, in wstring value);
おそらく、登録されたプリンタへの設定だと思う
- setPaperSizeUnit(), getPaperSizeUnit();
用紙サイズの単位の設定と取得。ただし意味をなさないかも。
- refreshOptions();
おそらく、設定値を保存しておいた設定値に戻すためだと思う
- saveOptions(in long optionSet);
おそらく、プリンタの設定値を保存するのだと思う
- saveGlobalOptions(in long optionSet);
おそらく、登録されたプリンタの設定値を保存するのだと思う
- getPrintersList();
登録されたプリンタの名前を取得する
戻り値は、配列ではなく","区切りの文字列を返す。
- setPrinter('プリンタの名前');
制御するプリンターを指定する。
※ネットワークに繋がれたプリンタを指定する場合、"\"の文字に注意
getPrinter();を実行し返される値と同じなら設定されたことと判断する
jsPrintSetup.setPrinter( 'EPSON PM-4000PX' ); jsPrintSetup.setPrinter( '\\\\SERVER\\EPSON PM-4000PX' ); //\をエスケープ
- setShowPrintProgress(in boolean flag);
現在、未検証。
- getShowPrintProgress();
現在、未検証。
- setSilentPrint( true | false );
直接印刷(印刷ダイアログ確認なし)の設定
(trueの他に0以外の数値でも可)
jsPrintSetup.setSilentPrint( true ); //もしくは、 jsPrintSetup.clearSilentPrint(); jsPrintSetup.setOption('printSilent', 1);
- getSilentPrint( );
直接印刷(印刷ダイアログ確認なし)の、設定値の取得
※setSilentPrint()で設定を行っていない場合や、clearSilentPrint()後の
値の取得は、現在のところエラーになるようだ。
- clearSilentPrint();
直接印刷(印刷ダイアログ確認なし)の設定を、初期化する
- print();
印刷実行。標準のプリンタの設定で印刷なら、単に winows.print();を。
jsPrintSetup.print();
標準のプリンタの設定で印刷なら、単に winows.print();を。
- printWindow(in nsIDOMWindow aWindow);
print()と類似しているが、フレームが利用されている場合に利用する(未検証)
jsPrintSetup.printWindow( window.frames[0] ); //親側から子だけ印刷 jsPrintSetup.printWindow( window ); //子側から親を含め全体
以下書きかけ
<script type="text/javascript"> var Printer = function ( ) { if( ! jsPrintSetup ) { alert( 'jsPrintSetup がありません\ nhttps://addons.mozilla.org/en-US/firefox/addon/8966' ); } }; Printer.getList = function ( ) { var List = jsPrintSetup.getPrintersList( ).split( ',' ); return List; }; Printer.has = function ( printer_name ) { var list, reg, flag = false;; if( printer_name ) { reg = new RegExp( '(^|,)' + printer_name + '($|,)' ); flag = reg.test( jsPrintSetup.getPrintersList( ) ); } return flag; }; Printer.use = function ( printer_name ) { var flag = this.has( printer_name ); flag && jsPrintSetup.setPrinter( printer_name ); return flag; }; Printer.docMargin = function( /* top, left, bottom, left */ ) { var n = arguments.length - 1; if( 0 <= n ) { jsPrintSetup.setOption( 'marginTop', arguments[0] ); jsPrintSetup.setOption( 'marginRight', arguments[ [ 0, 1, 1, 1][n] ] ); jsPrintSetup.setOption( 'marginBottom', arguments[ [ 0, 0, 2, 2][n] ] ); jsPrintSetup.setOption( 'marginLeft', arguments[ [ 0, 1, 1, 3][n] ] ); } } Printer.docHeader = function() { }; </script>