- PR -

スクロールのついた画面の印刷について

投稿者投稿内容
らぴ
会議室デビュー日: 2002/08/29
投稿数: 4
お住まい・勤務地: 墨田区
投稿日時: 2002-08-29 19:28
お世話になります、初めて投稿します。

現在、画面に印刷ボタンを付けて、それを押すとプリンタに印刷されるようにするのを作りたいと思っています。
画面はフレームが切ってあり、1つのフレームには縦横スクロールバーがついています。
ブラウザはIE5.5SP2以上です。

この会議室で見つけた
<input type="button" value="印刷" onClick="window.print()">
で、ボタンから印刷するのはできたのですが、この方法の場合、画面をスクロールさせていても、初期表示の状態でしか印刷できません。
スクロールさせた状態のままの画面を印刷させる、良い方法をご存知無いでしょうか?

想像なのですが、画面のボタンの処理に、ハードコピーを取って、何かに貼り付けて印刷させるなどと言う処理が書けたりするののでしょうか?

いろいろ検索してみたのですが分からなくて・・・。
よろしくお願いします。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-08-29 21:14
なぜこれが「Java 会議室」にあるのかは疑問ですが…

ブラウザの仕様です。
ハードコピー云々もする方法は準備されていません。

画面表示と印刷で体裁を変えたい場合は、CSS を使える可能性はあります。
勉強してみてください。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-08-29 23:03
まったくもってここの趣旨とは違う内容で申し訳ないのですが・・・、

> なぜこれが「Java 会議室」にあるのかは疑問ですが…
笑 久しぶりに、Javaのプログラミングに関する投稿か!と思って期待したらJavaScriptの方でがっかり…。最近はInsider.NETの方が人気で「Java 会議室」は閑古鳥が鳴いてますからねぇ。

去年に比べてずいぶんと会議室の流行も変わりました。私が会議室に参加したころはJava会議室が一番の賑わいだったのですけど、今は.Netですね。テクノロジーの移り変わりの速さを感じます。
らぴ
会議室デビュー日: 2002/08/29
投稿数: 4
お住まい・勤務地: 墨田区
投稿日時: 2002-08-30 10:11
Web系の開発は初めてなもので、JavaとJavaScriptの違いも良く分からなくて。
勉強不足です。

たまたまWebでの印刷で検索をしていたらここの会議室が出てきたもので・・・。
申し訳ありませんでした。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2002-08-30 11:25
しょむさんが書かれたように、CSSで対応してみてはいかがでしょうか。
CSSのことは、Yahooなどで良いページを探していただくとして、以前
CSSを印刷用に使った際、困ったことを書かせていただきます。CSSを
上手く使えば、殆どの印刷イメージを作ることはできました。しかし、
どうしてもプログラム側から制御できなかったものがありまして、ページ
の余白と用紙サイズです。IEの場合、ファイル→ページ設定を開くと
設定することができるのですが、この値はブラウザを閉じると初期状態
に戻ってしまうので、一度は設定しなければならないのです。これは
ブラウザを開いているユーザーがやらなければならないので、A3など
大型の用紙に余白ギリギリまで使うようなものを、知らずに印刷して
しまうと、A4、4ページに細切れになって出て来たりしてしまいました。
ページを開いた際に、JavaScriptで余白と用紙サイズを設定してくださ
いみたいなメッセージを表示して、ユーザーに設定してもらうなどの
方法で対応することはできると思います。私の場合、どうしてもこの辺
の取り扱いとサイズをシビアに設定する必要があったので、色々こねく
りまわしてPDFで出力する方法に変えてしまいましたが、A4サイズであ
まり余白の多きさや位置にこだわる必要のない印刷物だったら、CSSを
使う方法が良いと思います。
ご参考まで。
らぴ
会議室デビュー日: 2002/08/29
投稿数: 4
お住まい・勤務地: 墨田区
投稿日時: 2002-08-30 15:55
ありがとうございます。

このままここで質問を続けて良いのか分からないのですが・・・
やめた方が良いのであれば言って下さい。

しょむさん、小僧さんから指摘していただいたように、CSSの事を
少し調べてみたのですが、CSSで設定できるのは色やサイズや配置
などの初期値ですよね。
画面をスクロールさせている状態で印刷ボタンを押したからといって、
現在の表示位置のままで印刷させるような設定はできませんよね。

うーん、やっぱり無理なのかなぁ(T-T)
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2002-08-30 16:35
>少し調べてみたのですが、CSSで設定できるのは色やサイズや配置
>などの初期値ですよね。
>画面をスクロールさせている状態で印刷ボタンを押したからといって、
>現在の表示位置のままで印刷させるような設定はできませんよね。

いやそうではなくて、ブラウザで内容を見るページと、印刷用のページを分けてれば
いいということですよ。フレームで分けて表示している情報を、HTMLのテーブルとか
を使って1ページにまとめてしまい印刷してしまいましょうということです。今表示
させている領域内のデータを特定して、別なページでまとめてレイアウトするってい
う処理なんですがね、データベースなどと併せているページならまだ簡単なんですけ
ど・・・。イメージ的には、WORDなんかでいうと印刷プレビューをHTMLとCSSを駆使
して1ページ内にまとめましょうという感じですかね。どうしても今表示している領
域をキャプチャしたような状態で印刷したいということならば、ブラウザをそういう
仕様のものに変えるか、そういうActiveX(ブラウザ上で動作させることのできるプ
ログラム実行形態)で作るとかですかね。でも、とても面倒くさいですよねー。
私が同じ立場になったら、FLASHで作っちゃうかなページ自体を。あれならかなりムリ
が効きそうだし。
すみません、ご期待に沿えなくて。

しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-08-30 20:26
# そういえばいわゆる Web App 特有のお話に関する会議室ってないんですよね…

HTMLの一部分だけ取り出して印刷なら、こういう技もあるかも。
Mozilla では動きました。IE だとどうかな…。

コード:

<head><title>printtest</title></head>
<script>
function clicked() {
e = document.getElementById("b");
w = window.open();
newdoc = w.document;
newdoc.write("<html><body>bbbb<div id='d'></div></body></html>");
b = newdoc.getElementById("d");
b.appendChild(e);
w.print();
}
</script>
<body>
<div id="a">
<p>aaaa</p>
<p>bbbb</p>
</div>
<div id="b" style="border: solid 1px">
<p>cccc</p>
<p>dddd</p>
</div>
<form><input type="button" onClick="clicked()" value="copy"></form>
</body>
</html>



window じゃなくて隠しフレームでも使えば、それっぽいかしら。

[ メッセージ編集済み 編集者: しょむ 編集日時 2002-09-01 00:38 ]

スキルアップ/キャリアアップ(JOB@IT)