Kaedah alternatif pencetakan web Dipilih daripada Blog wfmazhenhai
Kata Kunci Kaedah pencetakan web alternatif
Sumber
Saya percaya bahawa sesiapa yang telah melakukan aplikasi menggunakan kaedah B/S mungkin menghadapi masalah seperti itu, bagaimana untuk memudahkan, Indah menyedari percetakan laporan. Jika anda menggunakan menu cetak penyemak imbas untuk mencetak, beberapa perkara yang tidak berguna pada halaman web akan dicetak pada laporan, seperti menu aplikasi, dsb. Kerana memilih menu cetak untuk mencetak halaman web akan mencetak semua kandungan dalam halaman web Jika aplikasi anda mempunyai bingkai, kandungan yang dicetak akan memasukkan kandungan dalam setiap bingkai, dan kandungan yang anda inginkan hanyalah sebahagian daripadanya. Oleh itu, banyak aplikasi hanya boleh melengkapkan fungsi pencetakan di latar belakang. Apa yang perlu kita lakukan dalam keadaan ini? Sebenarnya, terdapat banyak cara untuk melaksanakan fungsi pencetakan halaman web.
Salah satu cara ialah menggunakan alat pencetak profesional, seperti Crystal Reports. Rakan-rakan yang telah menggunakan Visual Studio 5.0 pasti akan mengingati alat ini, tetapi versi pada masa itu hanya 4.0. Versi terkini kini adalah versi 9, dan versi terkini Crystal Reports menyokong pencetakan WEB. Kaedah yang paling mudah ialah menggunakan Crystal Reports untuk mencipta templat, dan kemudian menggunakan ASP untuk memanggil templat yang disediakan dengan parameter. Selepas Crystal Reports menjana laporan pada halaman web, ia boleh dicetak terus atau dipindahkan ke fail lain yang melepasi perbandingan, seperti fail Excel. Anda boleh mencipta gaya yang sangat cantik menggunakan Crystal Reports Kuncinya terletak pada keupayaan anda untuk membangunkan Crystal Reports Namun, disebabkan harga Crystal Reports yang tinggi, anda hanya mampu membelinya jika projek itu sangat menguntungkan.
Kaedah kedua ialah membeli kawalan pencetakan dalam talian pihak ketiga Kosnya lebih murah daripada Crystal Reports, tetapi keberkesanan dan prestasinya berbeza.
Kaedah ketiga ialah menggunakan helaian gaya dan fungsi tersuai JavaScript. Pencetakan halaman web dicapai melalui helaian gaya dan JavaScript, dan kesannya boleh diterima. Berikut adalah contoh untuk semua orang melihat. Berikut ialah penjelasan terperinci tentang pelaksanaan fungsi pencetakan:
<script language="JavaScript" type="text/JavaScript">
<!--
function DP() {
if ( window.print)
{
var Div1 = document.all.Div1.innerHTML
var Div2 = document.all.Div2.innerHTML; ***** *************************************
// Div1 dan Div2 adakah anda Dalam kawasan percetakan
// Bergantung pada kandungan yang ingin anda cetak, gunakan
// <div id=Div1>Div1....</div><div id=Div2> daripada halaman paparan asal Div2...</div>
// Tunggu sehingga ditanda, tandakan seberapa banyak item yang anda ingin cetak
// ************ ********* ************************************ var css = '< style type="text/css" media=all>' +
'p { line-height: 120%}' +
'.ftitle { line-height: 120%; : #000000}' +
'td { font -saiz: 10px warna: #000000}' +
'</style>' ; ****************** ******************************
// Tentukan CSS untuk pencetakan, khususnya format apa yang ingin anda cetak. Terpulang kepada anda
//, tetapi sila ambil perhatian: jika terdapat apa-apa yang tidak konsisten dengan halaman web, format dan fon yang dicetak halaman mungkin berbeza
// daripada halaman web
/ /******************************** ********************** ****
var body ='<table width="640" border="0" cellspacing="0" cellpadding="5">' +
' <tr> ' +
' < td class="fbody"> ' +
' <div align="center" class=ftitle>' + Div1 + '</div>' + Div2 +
' </td>' +
'</tr>' +
'</jadual>'; ********************** ************************** **
// Tetapkan semula format pencetakan di sini, dan tukar paparan asal mengikut keperluan pencetakan anda
// Susun semula kandungan DIV halaman web Anda boleh mengalih keluar
// perkara yang anda lakukan 'tidak mahu mencetak berdasarkan kandungan jadual asal anda Anda juga boleh menggunakan noprint yang ditakrifkan di bawah untuk mengabaikan perkara yang anda tidak mahu cetak
// perkara, hanya memanggil kandungan yang ingin anda cetak, tetapi diabaikan. tempat akan dicetak
// kosong, yang tidak begitu cantik. Lebar borang mesti sepadan dengan lebar kertas yang dicetak.
//********************************************** *** *********
document.body.innerHTML = '<center>' + css + body + '</center>'; *************************************************** *
// Heavy Set document.body, dokumen cetakan sudah sedia
//**************************** ******** ****************
window.print();
window.history.go(0); ****** ******************************************** **
// Panggil arahan cetak untuk mencetak kandungan tetingkap semasa. Apabila anda mencetak, ia sebenarnya adalah
// halaman web baharu, tetapi fail halaman web tersebut masih asli.Kemudian panggil
// window.history.go(0), dan kemudian kembali ke halaman sebelum mencetak, kesannya agak baik
// *************** *** ******************************************
}
}
- ->
</skrip>
<style>
@cetakan media {
.noprint {display:none}
}
</style>
<!-- //.noprint mentakrifkan noprint Selepas menambah class="noprint" ke tempat berikut yang tidak perlu dicetak, pencetakan dengan window.print() akan diabaikan -->
OK. , semuanya sudah sedia, apa yang perlu dilakukan sekarang Ia adalah untuk memanggil fungsi DP Jika anda mereka bentuk butang untuk dipanggil pada halaman web yang sama, anda boleh memanggilnya terus jika anda menggunakan kaedah bingkai dan butang yang akan dipanggil pada halaman web lain, kemudian dalam fungsi DP Tambah arahan window.focus() dalam baris pertama, jika tidak hanya halaman web dengan butang akan dicetak.
Kaedah keempat, pelaksanaan adalah kaedah yang rumit. Perkara yang sama dicapai dengan memanggil window.print(), tetapi kandungan yang anda ingin cetak dijana khas sebagai halaman web dan butang cetak berada pada bingkai lain. Andaikan bahawa halaman web laporan berada pada Bingkai utama dan butang berada di Bingkai atas. Butang memanggil fungsi PrintReports() adalah seperti berikut untuk mencapai pencetakan.
fungsi PrintReports() //Fungsi dalam halaman web TopFrame
{
cuba
//*********************** ******* **********************************
// Ralat pengendalian , jika halaman web dalam MainFrame tidak mempunyai fungsi DP Jangan cetak
//***************************** ***************** ************
{
window.parent.frames("mainFrame").DP() ;
}
tangkap(e)
{
makluman("tiada objek untuk dicetak!"); fungsi
{
window.focus();
if (window.print)
{
window.print();
}
}
Saya secara peribadi berpendapat ini adalah kaedah yang paling mudah.
Akhir sekali, jika anda mengalih keluar tetapan "Header, Page Corner" dalam "Fail - Tetapan Halaman" pelayar IE, kesannya akan menjadi lebih baik. (Siaran semula)