Images
Images
หน้านี้ครอบคลุมการวางภาพราสเตอร์บนหน้า, การตรวจสอบภาพที่ฝังไว้แล้วในเอกสาร, และการลดขนาดของภาพเหล่านั้น. สำหรับการเรนเดอร์เป็นภาพ, ดู page เป็นภาพ, ดู Conversion.
การฝังรูปภาพ
Page.AddImage() วางไบต์ของรูปภาพ JPEG, PNG, BMP, หรือ TIFF ลงในสี่เหลี่ยมผืนผ้าที่แม่นยำระดับพิกเซลบนหน้า.
// Source is 1280x1014; scaled to 60% of the page width, aspect preserved.
const srcW = 1280;
const srcH = 1014;
const imgW = pageWidth(page) * 0.6;
const imgH = (imgW * srcH) / srcW;
const x = (pageWidth(page) - imgW) / 2;
const y = (pageHeight(page) - imgH) / 2;
page.AddImage(imageBytes, [x, y, x + imgW, y + imgH]);AddImageOptions ยอมรับ opacity, format ชัดเจนเมื่อไม่สามารถสังเกตจากไบต์, tag (เป็น StructElement เพื่อผูกรูปภาพในเอกสารที่มีแท็ก), และ layer สำหรับเนื้อหาแบบเลือกได้.
การตรวจสอบรูปภาพที่ฝังอยู่
Page.Images แสดงรายการรูปภาพทั้งหมดที่อยู่บนหน้าเป็น ImageInfo[], โดยไม่ถอดรหัสข้อมูลพิกเซลใด ๆ — รายการแต่ละรายการเปิดเผย Width, Height, Bits, ColorSpace, และ Filter. เรียก Decode() บน ImageInfo เพื่อรับไบต์ตัวอย่างดิบของมัน, Replace() เพื่อสลับข้อมูลรูปภาพใหม่ในที่เดิม, หรือ Remove() เพื่อลบออกจากหน้า.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}การเพิ่มประสิทธิภาพรูปภาพ
Document.Optimize() ลดขนาดไฟล์ทั่วทั้งเอกสาร; ส่งตัวเลือก images (เช่น OptimizeImageOptions, พร้อมฟิลด์ dpi และ quality) เพื่อทำการลดความละเอียดและเข้ารหัสใหม่ของภาพที่ฝังอยู่ในขั้นตอนเดียวกัน.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
Page.Imagesอ่านเมตาดาต้าเท่านั้น — การถอดรหัสข้อมูลพิกเซลเต็มของทุกรูปภาพด้วยDecode()ล่วงหน้าไม่จำเป็นหากคุณต้องการเพียงมิติหรือสีสเปซ.- ส่งค่า
formatอย่างชัดเจนในAddImageOptionsเมื่อไบต์ต้นทางมาจากสตรีมหรือบัฟเฟอร์ที่ไม่มีส่วนขยายไฟล์ที่เชื่อถือได้สำหรับการตรวจสอบ. - ใช้
Document.Optimize({ images: { dpi, quality } })เพื่อลดขนาดเอกสารที่มีรูปภาพหลายรูป แทนการถอดรหัสและเพิ่มแต่ละรูปแบบด้วยตนเอง. - สี่เหลี่ยมของ
Page.AddImage()กำหนดขนาดที่วางโดยตรง — ปรับสเกลสี่เหลี่ยมเป้าหมายให้สอดคล้องกับอัตราส่วนของภาพต้นทางเพื่อหลีกเลี่ยงการยืดรูป.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| ภาพดูถูกยืดหรือบีบอัด | เป้าหมาย rect ที่ส่งไปยัง AddImage() ไม่ตรงกับอัตราส่วนภาพของแหล่งต้นฉบับ | คำนวณความกว้าง/ความสูงของสี่เหลี่ยมจากมิติของภาพต้นฉบับเอง |
Page.AddImage() ใส่รูปแบบที่ไม่ถูกต้อง | ไม่สามารถตรวจจับรูปแบบของไบต์ภาพได้อย่างเชื่อถือได้ | ส่ง format อย่างชัดเจนใน AddImageOptions |
| เอกสารมีขนาดใหญ่กว่าที่คาดหลังจากเพิ่มรูปภาพ | รูปภาพถูกฝังในความละเอียดและคุณภาพเต็มที่ | เรียก Document.Optimize({ images: { dpi, quality } }) เพื่อทำการลดความละเอียดและเข้ารหัสใหม่ |
FAQ
ฉันจะใส่รูปภาพลงในหน้าอย่างไร?
เรียก page.AddImage(imageBytes, rect) โดยที่ rect คือสี่เหลี่ยม [x0, y0, x1, y1] ในหน่วยจุดของพื้นที่หน้า.
ฉันจะทำรายการรูปภาพที่อยู่บนหน้าแล้วโดยไม่ต้องถอดรหัสได้อย่างไร?
อ่าน page.Images — ImageInfo[] ที่เปิดเผย Width, Height, ColorSpace และ Filter สำหรับแต่ละรูปภาพโดยไม่ถอดรหัสข้อมูลพิกเซล.
ฉันสามารถลดขนาดไฟล์ของเอกสารโดยการบีบอัดรูปภาพได้หรือไม่?
ใช่ — เรียก Document.Optimize({ images: { dpi, quality } }) ซึ่งจะทำการลดความละเอียดและเข้ารหัสใหม่ของรูปภาพที่ฝังอยู่เป็นส่วนหนึ่งของการปรับแต่งทั่วทั้งเอกสาร.
การฝังรูปภาพแตกต่างจากการเรนเดอร์หน้าเป็นรูปภาพอย่างไร?
Page.AddImage() วางไบต์ของภาพแรสเตอร์ลงบนหน้าที่มีอยู่. Page.ToImage() (ดู Conversion) ทำการย้อนกลับ — การแสดงผลทั้งหน้าเป็นไบต์ PNG.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Page.AddImage() | วางไบต์ของรูปภาพลงในสี่เหลี่ยมบนหน้า |
AddImageOptions | ตัวเลือกสำหรับ AddImage(): opacity, format, tag, layer |
Page.Images | รูปภาพทุกภาพที่มีอยู่แล้วบนหน้า, เป็น ImageInfo[] แบบเมตาดาต้าเท่านั้น |
ImageInfo.Decode() / Replace() / Remove() | อ่านข้อมูลพิกเซล, สลับไบต์ใหม่, หรือเอาภาพออก |
Document.Optimize() | ลดขนาดไฟล์ของเอกสารทั้งหมด, โดยสามารถทำการลดความละเอียดของภาพผ่าน images: { dpi, quality } |