ปลอดภัยกว้างเป็นพิกเซลสำหรับการพิมพ์หน้าเว็บ?


86

ความกว้างที่ปลอดภัยเป็นพิกเซลในการพิมพ์หน้าเว็บคือเท่าใด

หน้าของฉันมีภาพขนาดใหญ่และฉันต้องการให้แน่ใจว่าจะไม่ถูกตัดออกเมื่อพิมพ์

ฉันรู้เกี่ยวกับระยะขอบเบราว์เซอร์และขนาดกระดาษ US Letter / DIN A4 ที่แตกต่างกัน ดังนั้นเราจึงมีขนาดตัวอักษรมาตรฐานและค่า DPI เริ่มต้นบางค่า แต่ฉันสามารถแปลงค่าเหล่านี้เป็นค่าพิกเซลเพื่อระบุในwidthแอตทริบิวต์ของรูปภาพได้หรือไม่


3
แทนที่จะใช้ความกว้างเป็นพิกเซลคุณควรใช้width:autoซึ่งจะปรับความกว้างของเนื้อหาให้เท่ากับความกว้างของกระดาษ
Marko Vranjkovic

คำตอบ:


89

สำหรับ "คำตอบสากล" ที่แท้จริงฉันไม่สามารถให้คำตอบได้ อย่างไรก็ตามฉันสามารถให้คำตอบที่เรียบง่ายและชัดเจนสำหรับบางเรื่อง ...

670 พิกเซล

อย่างน้อยนี่ก็เป็นคำตอบที่ปลอดภัยสำหรับผลิตภัณฑ์ของ Microsoft ฉันอ่านคำแนะนำมากมายรวมถึง 675 แต่หลังจากทดสอบตัวเองแล้ว 670 คือสิ่งที่ฉันคิดขึ้นมา

DPI ทั้งหมดปัญหาระยะขอบความแตกต่างของฮาร์ดแวร์คำตอบนี้อ้างอิงจากข้อเท็จจริงที่ว่าถ้าฉันใช้ตัวอย่างก่อนพิมพ์ใน IE9 (ที่มีระยะขอบมาตรฐาน) - และตั้งค่าขนาดการพิมพ์เป็น 100% แทนที่จะเป็นค่าเริ่มต้นของ "ย่อขนาดให้พอดี" ทุกอย่างพอดีกับหน้าโดยไม่ถูกตัดออกที่ความกว้างนี้

ถ้าฉันส่งอีเมล HTML ถึงตัวเองและรับด้วย Windows Live Mail 2011 (Outlook Express กลายเป็นอะไร) และฉันพิมพ์หน้ากว้าง 670 - อีกครั้งทุกอย่างพอดี สิ่งนี้ถือเป็นความจริงถ้าฉันส่งไปยังสำเนาจริงหรือไฟล์ MS XPS (งานพิมพ์เสมือนจริง)

ก่อนที่ฉันจะทำการทดลองฉันใช้ความกว้าง 700 โดยพลการในสถานการณ์ทั้งหมดที่กล่าวถึงข้างต้นส่วนหนึ่งของหน้าถูกตัดออก เมื่อฉันลดเหลือ 670 ทุกอย่างลงตัว

สำหรับวิธีตั้งค่าความกว้าง - ฉันเพิ่งใช้ตาราง html "wrapper" แบบดั้งเดิมและกำหนดความกว้างเป็น 670

หากคุณสามารถกำหนดซอฟต์แวร์ของผู้ใช้ปลายทางได้เรื่องดังกล่าวสามารถตรงไปตรงมาได้ หากคุณทำไม่ได้ (ตามปกติในกรณีนี้) คุณสามารถทดสอบรายการเฉพาะเช่นเบราว์เซอร์ที่ใช้อยู่เป็นต้นและฮาร์ดโค้ดโซลูชันสำหรับเบราว์เซอร์ที่สำคัญ ระหว่าง IE และ FF คุณจะครอบคลุมผู้ใช้เว็บประมาณ 90% ใส่รหัสอื่น ๆ สำหรับ“ คนอื่น ๆ ” ซึ่งโดยทั่วไปดูเหมือนจะใช้ได้ผลและเรียกว่าวัน ...


ฉันแค่อยากจะเพิ่มความคิดเห็นว่าในขณะที่คำตอบนี้ FF และ IE อาจมีส่วนแบ่งระหว่างพวกเขา 90% ของเบราว์เซอร์ที่ใช้ (ฉันคิดว่ามันไม่น่าเป็นไปได้ที่ google จะเสนอ chrome ให้กับบุคคลที่ค้นหาด้วยคนอื่น ๆ เบราว์เซอร์ที่ imo อยู่ในขณะนี้เป็นเบราว์เซอร์ที่เบากว่า) แต่ไม่น่าเป็นไปได้ที่พวกเขาจะยังคงทำอยู่เนื่องจากแนวโน้มเปลี่ยนไปและส่วนแบ่งของเบราว์เซอร์มักจะเปลี่ยนไปเช่นเดียวกับส่วนแบ่งการตลาดอื่น ๆ
คริส

สิ่งนี้ตอบคำถามได้แม้ว่าจะเห็นได้ชัดว่าซับซ้อนกว่าขนาด px ธรรมดา
rune711

46

มันไม่ตรงไปตรงมาเหมือนรูปลักษณ์ ฉันเพียงแค่ใช้เป็นคำถามที่คล้ายกันและนี่คือสิ่งที่ผมได้รับ: First, พื้นหลังน้อยของวิกิพีเดีย

ถัดไปใน CSS สำหรับกระดาษพวกเขามีptซึ่งคือจุดหรือ 1/72 นิ้ว ดังนั้นหากคุณต้องการให้ภาพมีขนาดเท่ากับบนจอภาพก่อนอื่นคุณต้องรู้ DPI / PPI ของจอภาพของคุณ (โดยปกติคือ 96 ตามที่กล่าวไว้ในบทความวิกิพีเดีย) จากนั้นแปลงเป็นนิ้วจากนั้นแปลงเป็น คะแนน (หารด้วย 72)

แต่อีกครั้งเบราว์เซอร์มีปัญหาทุกประเภทเกี่ยวกับเนื้อหาที่พิมพ์ได้เช่นหากคุณพยายามใช้แท็ก float css เบราว์เซอร์ที่ใช้ Gecko จะตัดรูปภาพของคุณกลางหน้าแม้ว่าคุณจะใช้ตัวแบ่งหน้า: หลีกเลี่ยง ; บนภาพของคุณ (ดูที่นี่ในระบบติดตามข้อบกพร่องของ Mozilla )

มี (มาก) มากขึ้นเกี่ยวกับการพิมพ์จากเบราว์เซอร์ในบทความนี้ในรายการนอกเหนือ

นอกจากนี้คุณต้องจัดการความกว้าง "Shrink to Fit" ในตัวอย่างก่อนพิมพ์และขนาดกระดาษและการวางแนวต่างๆ

ดังนั้นคุณเพียงแค่หาขนาดภาพที่ดีเป็นนิ้วฉันหมายถึงจุด (7.1 "* 72 = 511.2 ดังนั้นwidth: 511pt;จะใช้ได้กับกระดาษขนาด Letter) ไม่ว่าพิกเซลจะมีขนาดเท่าใดหรือใช้ความกว้างเปอร์เซ็นต์ความกว้างและกำหนดความกว้างของรูปภาพของคุณ บนขนาดกระดาษ

โชคดี...


ฉันมีเวลาที่ง่ายกว่าในการสร้างเนื้อหาเวอร์ชัน PHP Image GD ที่ฉันต้องการพิมพ์ (โปสการ์ดใบปลิว ฯลฯ ) ซึ่งฉันเพิ่งป้อนข้อมูลจากฐานข้อมูลและจัดรูปแบบใหม่ตามนั้น ฉันแค่รักษาอัตราส่วนของพิกเซลให้ถูกต้อง โปสการ์ด 4x6 (350dpi) == 2135x1435 px
Michael J. Calkins

20

วิธีแก้ปัญหาอย่างหนึ่งที่ฉันพบคือกำหนดความกว้างเป็นนิ้ว จนถึงตอนนี้ฉันได้ทดสอบ / ยืนยันว่าใช้งานได้ใน Chrome เท่านั้น มันใช้งานได้ดีกับสิ่งที่ฉันใช้สำหรับ (เพื่อพิมพ์ 8.5 x 11 แผ่น)

@media print {
    .printEl { 
        width: 8.5in;
        height: 11in;
    }
}

5
คุณไม่ได้คำนึงถึงระยะขอบของหน้า หรือความเป็นไปได้ของขนาดกระดาษ A4
Blazemonger

1
สิ่งนี้เหมาะสำหรับฉันมันสมเหตุสมผลมาก
leedotpang

@Blazemonger ด้วย@media printคุณสามารถตั้งค่าเหล่านั้นได้ คุณสามารถตั้งค่าsize: letterหรือsize: A4. smashingmagazine.com/2015/01/designing-for-print-with-css
J.Ko

@ J.Ko นั่นไม่ใช่ประเด็น; เป็นผู้ใช้ปลายทางที่อาจใช้กระดาษ A4 หรือ Letter และผู้ออกแบบ CSS ไม่สามารถมั่นใจได้ว่าผู้ใช้จะใช้งานใดได้บ้าง
Blazemonger

10

สำหรับการพิมพ์ฉันไม่ได้กำหนดความกว้างและขจัดสิ่งกีดขวางใด ๆ ที่ทำให้เค้าโครงงานพิมพ์ของคุณมีความกว้างแบบไดนามิก หมายความว่าถ้าคุณทำให้หน้าต่างเบราว์เซอร์เล็กลงเรื่อย ๆ จะไม่มีการตัด / ซ่อนเนื้อหา แต่เอกสารจะยาวขึ้น ด้วยวิธีนี้คุณสามารถมั่นใจได้ว่าส่วนที่เหลือจะถูกจัดการโดยเครื่องพิมพ์ / pdf-creator

องค์ประกอบที่มีความกว้างคงที่เช่นรูปภาพหรือตารางล่ะ

รูปภาพ

ตัวเลือกที่ฉันคิดได้:

  • ลดขนาดรูปภาพลงใน CSS การพิมพ์ของคุณให้มีความกว้างซึ่งคุณสามารถสันนิษฐานได้ว่าจะพอดีในทุกกรณีใช้ pt ไม่ใช่ px (แต่การพิมพ์จะต้องใช้จุด / หน่วยมากขึ้นดังนั้นสิ่งนี้จึงไม่น่าจะเป็นปัญหา)
  • ไม่รวมจากการพิมพ์

ตาราง

  • ลบความกว้างคงที่
  • ใช้แนวนอนหากคุณมีตารางที่มีข้อมูลมากมาย
  • อย่าใช้ตารางเพื่อวัตถุประสงค์ในการจัดวาง
  • ไม่รวมจากการพิมพ์
  • แยกเนื้อหาพิมพ์เป็นย่อหน้า

http://www.intensivstation.ch/en/css/print/

หรือผลการค้นหาอื่น ๆ ของ Google สำหรับการรวมกันของ: CSS, พิมพ์, สื่อ, เค้าโครง


2
แต่องค์ประกอบที่มีความกว้างคงที่เช่นรูปภาพและตารางล่ะ?
aemkei

5

วิธีแก้ไขเพื่อให้แน่ใจว่ารูปภาพจะไม่ถูกตัดเมื่อพิมพ์ในเว็บเพจคือต้องมีกฎ CSS ต่อไปนี้

@media print { 
  img { 
    max-width:100% !important;
  } 
}

4

เครื่องพิมพ์ไม่เข้าใจพิกเซล แต่เข้าใจจุด (pt ใน CSS) ทางออกที่ดีที่สุดคือการเขียน CSS พิเศษสำหรับการพิมพ์โดยมีหน่วยวัดทั้งหมดเป็นจุด ๆ

จากนั้นในโค้ด HTML ของคุณในส่วน head ให้ใส่:

<link href="style.css" rel="stylesheet" type="text/css" media="screen">
<link href="style_print.css" rel="stylesheet" type="text/css" media="print">

แต่รูปภาพต้องการแอตทริบิวต์ความกว้างและความสูงที่ระบุเป็นพิกเซล ฉันต้องการแปลงค่า PT เป็นพิกเซลตาม DPI และขนาดมาตรฐานของเครื่องพิมพ์
aemkei

จากนั้นคุณต้องเล่นกับคอนเทนเนอร์รูปภาพ ... หรือใช้การลองผิดลองถูก;) อย่างไรก็ตามฉันคิดว่าการใช้ไฟล์ CSS สองไฟล์ที่แยกจากกันไฟล์หนึ่งสำหรับหน้าจอและอีกไฟล์สำหรับการพิมพ์เป็นแนวทางปฏิบัติที่ดี
ARemesal

1
ให้<img>แท็กล้อมรอบ<div>div ได้รับความกว้างความสูงเป็น pt และ img ได้รับwidth:100%; height:100%;
Hafenkranich

0

ฉันสงสัยว่ามีอย่างใดอย่างหนึ่ง ... ขึ้นอยู่กับเบราว์เซอร์บนเครื่องพิมพ์ (Physical max dpi) และไดรเวอร์ขนาดกระดาษตามที่คุณชี้ (และฉันอาจต้องการพิมพ์บนกระดาษ B5 ด้วย ... ) ในการตั้งค่า ( แนวนอนหรือแนวตั้ง) นอกจากนี้คุณมักจะเปลี่ยนมาตราส่วน (เปอร์เซ็นต์) ฯลฯ
ให้ผู้ใช้ปรับแต่งการตั้งค่า ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.