htmlプリント関連操作と実装の詳細
2022-01-07 04:35:56
原則はwindow.print()メソッドを呼び出すことですが、このメソッドは現在のページ全体を印刷するだけなので、部分印刷には次のような解決策が用意されています。
1: iframeを使用して、印刷が必要な要素とスタイルを注入し、printを呼び出します。
// Sample code
function print () {
let ifElement = document.getElementById('ifId')
const addHtmlPrint = () => {
const content = ifElement.contentWindow || ifElement.contentDocument
content.document.body.innerHTML = this.detailTable
const styleEle = document.createElement('style')
/* Remove the header and footer when printing */
styleEle.innerHTML = '@media print {@page { margin: 5mm; }}'
content.document.getElementsByTagName('head')[0].appendChild(styleEle)
/* Ensure that the resources in the iframe are loaded, and that the images are brought in as img */
ifElement.onload = () => {
content.print()
}
}
this.getDetailTable()
if (ifElement) {
// If it is already created, print it directly
addHtmlPrint()
} else {
ifElement = document.createElement('iframe')
ifElement.setAttribute('id', 'ifId')
ifElement.setAttribute('style', 'display:none')
document.body.appendChild(ifElement)
addHtmlPrint()
}
}
2: @media printを使用して、現在のページで印刷操作中に非表示になるように要素を設定します。
@media print{
/* Here the elements that don't need to be printed are set to not show */
.hidden-element{
display:none;
/* visibility:hidden; */
}
/* The paper is set to 1200px wide by 800px high */
@page{
size:1200px 800px;
}
}
- <link href="/example.css" media="print" rel="stylesheet" /> マークアップが印刷されるときにのみ使用されるスタイル
- 印刷イベントをリッスンする window.addEventListener('beforeprint|| afterprint', ()=> {});
以上が今回の記事の内容ですが、皆様の学習のお役に立てれば幸いです。また、スクリプトハウスをより一層応援していただければ幸いです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン