Saya telah melihat pertanyaan ini ditanyakan dalam beberapa cara berbeda pada SO dan beberapa situs web lain, tetapi kebanyakan dari mereka terlalu spesifik atau ketinggalan zaman. Saya berharap seseorang dapat memberikan jawaban yang pasti di sini tanpa menjadi spekulasi.
Apakah ada cara, baik dengan CSS atau javascript, untuk mengubah pengaturan printer default ketika seseorang mencetak di dalam browser mereka? Dan tentu saja dengan "cetakan dari browser mereka" maksud saya beberapa bentuk HTML, bukan PDF atau plug-in mime-type yang bergantung.
Tolong dicatat:
Jika beberapa browser menawarkan ini dan yang lainnya tidak (atau jika Anda hanya tahu cara melakukannya untuk beberapa browser), saya menyambut solusi khusus browser.
Demikian pula, jika Anda mengetahui peramban utama yang memiliki batasan spesifik terhadap EVER melakukan ini, itu juga bermanfaat, tetapi beberapa dokumentasi yang cukup mutakhir akan dihargai. (hanya mengatakan "itu bertentangan dengan kebijakan keamanan XYZ" tidak terlalu meyakinkan ketika XYZ telah membuat perubahan signifikan dalam kebijakan tersebut dalam tiga tahun terakhir).
Akhirnya, ketika saya mengatakan "ubah pengaturan cetak default" saya tidak bermaksud selamanya, hanya untuk halaman saya, dan saya merujuk secara khusus untuk mencetak margin, header, dan footer.
Saya sangat menyadari bahwa CSS menawarkan opsi untuk mengubah orientasi halaman serta margin halaman. Salah satu dari banyak perjuangan adalah dengan Firefox. Jika saya mengatur margin halaman ke 1 inci, itu ADDS ini ke setengah inci yang sudah dimasukkan ke tempatnya.
Saya sangat ingin mengurangi penggunaan PDF di situs klien saya, tetapi pelanggaran pada presentasi (serta kurangnya keandalan) adalah perhatian utama mereka.
Jawaban:
Standar CSS memungkinkan beberapa pemformatan tingkat lanjut. Ada
@page
arahan dalam CSS yang memungkinkan beberapa pemformatan yang hanya berlaku untuk media halaman (seperti kertas). Lihat http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html .Kelemahannya adalah bahwa perilaku di browser yang berbeda tidak konsisten. Safari masih tidak mendukung pengaturan margin halaman printer sama sekali, tetapi semua browser utama lainnya sekarang mendukungnya.
Dengan
@page
arahan, Anda dapat menentukan margin printer dari halaman (yang tidak sama dengan margin CSS normal dari elemen HTML):Ini tidak berfungsi di Firefox 3.6 , IE 7 , Safari 5.1.7 atau Google Chrome 4.1 .
Pengaturan margin halaman memang memiliki efek di IE 8 , Opera 10 , Google Chrome 21 dan Firefox 19 .
Meskipun margin halaman diatur dengan benar untuk konten Anda di browser ini, perilaku tersebut tidak ideal dalam mencoba menyelesaikan penyembunyian header / footer.
Ini adalah bagaimana berperilaku di browser yang berbeda:
Di Internet Explorer , margin sebenarnya diatur ke 0mm di pengaturan untuk pencetakan ini, dan jika Anda melakukan Preview, Anda akan mendapatkan 0mm sebagai default, tetapi pengguna dapat mengubahnya di preview.
Anda akan melihat bahwa konten halaman sebenarnya diposisikan dengan benar, tetapi header dan footer print browser ditampilkan dengan latar belakang yang tidak transparan, dan secara efektif menyembunyikan konten halaman pada posisi itu.
Di Firefox versi yang lebih baru, ia diposisikan dengan benar, tetapi teks header / footer dan teks konten ditampilkan, sehingga terlihat seperti campuran yang buruk dari teks header browser dan konten halaman Anda.
Di Opera , konten halaman menyembunyikan header saat menggunakan latar belakang non-transparan di css standar dan posisi header / footer bertentangan dengan konten. Cukup bagus, tetapi terlihat aneh jika margin diatur ke nilai kecil yang menyebabkan header sebagian terlihat. Juga margin halaman tidak diatur dengan benar.
Di Chrome versi yang lebih baru, header dan footer browser disembunyikan jika margin halaman diatur sangat kecil sehingga posisi header / footer bertentangan dengan konten. Menurut pendapat saya, beginilah seharusnya perilaku ini.
Jadi kesimpulannya adalah bahwa Chrome memiliki implementasi terbaik dalam hal ini untuk menyembunyikan header / footer.
sumber
@page
margin danbody
margin pada dasarnya hal yang berbeda:body
marjin hanya berlaku untuk seluruh tubuh , yaitu bagian atas halaman pertama dan bagian bawah halaman terakhir. Untuk semua halaman perantara, bagian atas / bawah masih memiliki margin nol.Versi Chrome dan Opera terbaru, serta Firefox 48 alpha 1 dan lebih tinggi
Anda dapat mengatur margin halaman ke ukuran yang terlalu kecil untuk memuat teks untuk menonaktifkannya (meminjam dari jawaban awe ):
Untuk versi Firefox hingga 48 alpha 1
Anda dapat menambahkan
mozNoMarginBoxes
atribut ke<html>
tag untuk mencegah URL, nomor halaman, dan hal-hal lain yang ditambahkan oleh Firefox pada margin halaman.Ini bekerja di Firefox 29 dan seterusnya. Anda dapat melihat tangkapan layar perbedaannya di sini , atau lihat di sini untuk contoh langsung.
Perhatikan bahwa
mozDisallowSelectionPrint
atribut dalam contoh tidak diperlukan untuk menghapus teks dari margin; lihat Apa yang dilakukan atribut mozdiselowselectionprint dalam PDF.js? .Peramban lain
Sayangnya, sepertinya tidak ada cara untuk menyelesaikan masalah ini di Internet Explorer, jadi Anda harus menggunakan PDF atau meminta pengguna untuk menonaktifkan teks margin.
Hal yang sama berlaku untuk Safari; menurut komentar oleh @Luiz Perez , versi terbaru Safari (8, 9.1 dan 10) masih tidak mendukung
@page
untuk menekan teks margin.Saya tidak dapat menemukan apa pun di Edge dan saya tidak memiliki instalasi Windows 10 yang tersedia untuk diuji.
sumber
<!DOCTYPE html> <html moznomarginboxes mozdisallowselectionprint>
sudah diatur. Sumber:https://bug743252.bugzilla.mozilla.org/attachment.cgi?id=714383
@page{ size: auto; margin: 3mm; }
untuk mendukung chrome dan safari melakukan solusi lintas-browser untuk saya.Seperti yang telah dikatakan @Awe di atas, ini adalah solusinya, yang dikonfirmasi untuk berfungsi di Chrome !!
Pastikan ini di dalam tag kepala:
sumber
padding: 0.25in 0.5in;
ke gaya tubuh sehingga saya memiliki margin yang tepat yang saya butuhkan untuk cetakan yang bagus dan bersih. Bekerja di Chrome v25, dan untungnya untuk proyek khusus ini kami dapat meminta pengguna akhir untuk memilih dari beberapa browser modern.Saya memiliki permintaan serupa dari klien yang ingin agar header, nomor halaman, dan footer html dihapus. Dalam hal ini, klien menyajikan halaman HTML yang dapat berfungsi ganda sebagai sertifikat formal. URL, halaman, dan tajuk yang ditambahkan tidak relevan dan mengarah pada produk akhir yang kurang menyenangkan. Dalam beberapa hal, itu hanya terlihat murah.
Media = Print belum dapat menonaktifkan default browser ini. Satu-satunya solusi adalah memberi tahu pengguna untuk mengklik tombol "Gear" dan mengaktifkan / menonaktifkan item-item tersebut. Serius, saya tidak tahu saya bisa melakukan itu selama 20 tahun (dan kami pikir pengguna biasa akan memiliki petunjuk untuk mengklik tombol sakelar?).
Jika CSS mendukung Media = Cetak, itu harus mendukung kemampuan untuk mengontrol seluruh pengalaman cetak pengguna akhir. Saya menghargai bahwa browser menyediakan bidang yang ditambahkan, tetapi, mengapa tidak mengizinkan CSS untuk mengontrol keseluruhan pengalaman cetak-jika itu yang diinginkan. Solusi 90% bisa 100% dengan tiga bidang lagi! Sederhana:
sudah cukup.
Sekali lagi, bukan masalah apakah pengguna akhir ingin mencetaknya atau tidak (mungkin klien Anda sangat pribadi dan tidak ingin URL yang dicetak mengambang. Atau mungkin tim eksekutif menggunakan situs kolaborasi pribadi?). Senang membela pengguna akhir, tetapi jika seseorang mencari jawaban, jangan menjawab mengatakan itu adalah hak pengguna akhir untuk menunjukkan atau menyembunyikan. Kadang-kadang itu adalah hak klien membayar tagihan.
sumber
@Page
arahan untuk mengatur margin printer (yang tidak sama dengan margin tubuh dari halaman html). Saat ini didukung oleh semua browser utama kecuali Safari, tetapi bagaimana pengaruhnya terhadap header / footer bervariasi. Implementasi terbaik ada di Opera dan Chrome.Coba kode ini, berfungsi 100% untuk saya:
UNTUK Lansekap:
UNTUK Portait:
sumber
Karena Anda menyebutkan "di dalam peramban mereka" dan firefox, jika Anda menggunakan Internet Explorer, Anda dapat menonaktifkan header halaman / footer dengan mengatur sementara nilai dalam registri, lihat di sini untuk contoh. AFAIK Saya belum pernah mendengar cara untuk melakukan ini di browser lain. Baik jawaban Daniel dan Mickel tampaknya saling bertabrakan, saya kira mungkin ada pengaturan serupa di suatu tempat di registri untuk firefox untuk menghapus header / footer atau menyesuaikannya. Sudahkah Anda memeriksanya?
Semoga ini bisa membantu dan Selamat liburan, Salam, Tom.
sumber
@halaman margin: 0mm sekarang berfungsi di Firefox 19.0a2 (2012-12-07).
sumber
Saya memecahkan masalah saya menggunakan beberapa css ke halaman web.
sumber
Ini bekerja untuk saya dengan margin sekitar 1cm
sumber