2

XSLT を使用して目的のテンプレートに変換した後、メモリに保持されている html 文字列があります。これをクライアント プリンタに送信する最適なメカニズムは何ですか?

以前のプロジェクトで、恥知らずにごまかして印刷プレビュー画面を作成しました。これは基本的に、白い背景の ASPX ページであり、Window.print().

乾杯

4

2 に答える 2

4

「印刷プレビュー」がごまかしているとはまったく思いません。文字列はおそらくサーバー上にある (つまり、ASP.NET コード ビハインドで作成された) ため、何らかの方法でクライアントに出力し、window.print() を呼び出して印刷する必要があります。Web サーバーがクライアントのプリンターにアクセスする方法はありません。ただし、いくつかのヒントを使用して物事を合理化できる場合があります。

- CSS で @media タグを使用して、ページに印刷可能なスタイルを提供します。多くの場合、これを使用してナビゲーションなどを非表示にすることができ、「印刷プレビュー」は必要ありません。私は通常、次のようなものを .css ファイルに追加します。

.showwhenprinting {position:absolute; display:none;}
@media print
{
  .hidewhenprinting {position:absolute; display:none;}
  .showwhenprinting {position:relative; display:block;}
}

これにより、ほとんどのブラウザーで印刷するときにブロックを非表示にできます。例えば:

<div class="someclass hidewhenprinting">Navigation Menu</div>
<div class="someclass showwhenprinting">Printed Page Title</div>

このアプローチのもう 1 つの利点は、ユーザーがブラウザで通常行うように「印刷」をクリックするだけで済むことです。欠点は、一部の古いブラウザではサポートされていないことと、場合によってはレイアウトを十分に制御できないことです (たとえば、ページのヘッダー/フッターが必要な場合)。

-上記の方法で必要な出力が得られない場合 (たとえば、印刷結果にページの URL などを含めたくない場合)、別のオプションは、PDF などの印刷に適した形式を使用することです。これを行うには、Reporting Services または同様のツールを使用して PDF を生成します。

-私があまりお勧めしない最後のオプションは、非表示の iframe をページに追加し、「印刷可能な」HTML を挿入して、その中で print() を呼び出すことです。これは機能する可能性がありますが、実行するにはいくつかの JavaScript が必要になるため、クロスブラウザーにするように注意する必要があります。これにはオプション #1 と同じ欠点がありますが、正しく行うのはより困難です。

于 2008-11-04T15:50:40.040 に答える
1

CSS メディア セレクターを見てください。それらを使用して、画面上で希望する外観の単一ページを作成し、ユーザーがブラウザーで印刷を選択したときに適切に印刷することもできます。

于 2008-11-04T15:28:02.423 に答える