IEの印刷設定をActiveXコントロールとJavascriptで行う方法

イントラネットで表示されているページを印刷しようとすると、A4・で印刷したいのに、デフォルトはA4・になっているため、印刷設定を毎回「」に変更しなくてはならない事にガマンの限界が...。

 

イントラネットはWindowsサーバー上IISでASと一部PHPで作っています。

 

印刷設定(用紙設定)はASPやJavascriptの関数があるんかな?

といろいろ検索しましたが見つかりませんでした...。

 

しかし、替わりに見つけたのはActtiveXコントロール「ScriptX」を使った方法!

まず以下のページで「Dowload smsx.cab」ボタンを押してダウンロード

Link

301 Moved Permanently

http://www.meadroid.com/scriptx/sxdownload.asp

任意のディレクトリにアップロード

印刷設定を使うページに以下のコードを挿入し、

<object>タグでActiveXコントロール読み込む。

<!-- ScriptX 読み込み -->
<object id=factory
 classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
 codebase="http://**smsx.cabを設置した場所のパス**/smsx.cab#Version=6,5,439,72(←バージョンによって書き換える)">
</object>
<!-- ScriptX 読み込み -->

次にJavascriptファンクションで印刷設定を行う。

<script type="text/javascript">
	function printWindow() {
		factory.printing.header = "ヘッダ名";
		factory.printing.footer = "フッタ名";
		factory.printing.portrait = false; // 用紙方向 true: 縦 false: 横
		factory.printing.leftMargin = 1.0;
		factory.printing.topMargin = 1.0;
		factory.printing.rightMargin = 1.0;
		factory.printing.bottomMargin = 1.0;
		factory.printing.Print(false); // 印刷実行 ture: 印刷ダイアログなし false: 印刷ダイアログあり
}
</script>

あとはファンクションを呼び出すだけでOK!

 <input type="button" value="ScriptXで印刷" onclick="printWindow();" />
自分の場合は印刷ページ表示と同時に印刷するので、
 <body onload="printWindow();">

としました。

 

※初回使用時は「ActiveXをインストールしますか?」見たいな警告が出ますが、インストールしてしてください。

 

その他

ヘッダ・フッタに、現在日・ページ数出力

factory.printing.header = "ヘッダ名 &b 日付: &d";   // 現在日出力
factory.printing.footer = "フッタ名 &b &p/&P ページ";     //   ページ数出力

これでイントラネットとインターネットでヘッダー・フッター印刷を切り分けられそうなのがいいです。

ヘッダーとフッターで使える記号

 

直接印刷(印刷ダイアログ表示なし)だけを直接使う

factory.printing.Print(true);

 

プレビュー画面を表示

factory.printing.Preview();

 

ActiveXコントロールだけにWindowsサーバー上ブラウザがIEじゃないと動かないとは思うのですが、WindowsサーバーであればIISじゃなくてもApatchでも動き、<object>タグで「smsx.cab」さえ読み込めばPHPでも使えるようなことが書かれたページがありました。

 

有償版もあるようですが、用紙サイズの指定とかもできるみたいです。

PAGETOP