Images
Images
Trang này đề cập đến việc đặt hình ảnh raster trên một trang, kiểm tra các hình ảnh đã được nhúng trong tài liệu, và giảm kích thước của chúng. Đối với việc render một page đối với một hình ảnh, xem Conversion.
Nhúng hình ảnh
Page.AddImage() đặt các byte hình ảnh JPEG, PNG, BMP, hoặc TIFF vào một hình chữ nhật có độ chính xác từng pixel trên trang.
// 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 chấp nhận opacity, một format rõ ràng khi không thể xác định từ các byte, một tag (một StructElement để gắn hình ảnh vào trong tài liệu có thẻ), và một layer cho nội dung tùy chọn.
Kiểm tra các hình ảnh đã nhúng
Page.Images liệt kê mọi hình ảnh đã có trên trang dưới dạng ImageInfo[], mà không giải mã bất kỳ dữ liệu pixel nào — mỗi mục hiển thị Width, Height, Bits, ColorSpace, và Filter. Gọi Decode() trên một ImageInfo để lấy các byte mẫu thô của nó, Replace() để thay thế dữ liệu hình ảnh mới tại chỗ, hoặc Remove() để xóa nó khỏi trang.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}Tối ưu hóa Hình ảnh
Document.Optimize() giảm kích thước tệp trên toàn bộ tài liệu; truyền một tùy chọn images (OptimizeImageOptions, với các trường dpi và quality) để cũng hạ mẫu và mã lại các hình ảnh được nhúng như một phần của cùng một lần xử lý.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });Mẹo và Thực hành Tốt nhất
Page.Imageschỉ đọc siêu dữ liệu — giải mã toàn bộ dữ liệu pixel của mỗi hình ảnh bằngDecode()ngay từ đầu là không cần thiết nếu bạn chỉ cần kích thước hoặc không gian màu.- Truyền một
formatrõ ràng trongAddImageOptionskhi các byte nguồn đến từ một luồng hoặc bộ đệm mà không có phần mở rộng tệp đáng tin cậy để xác định. - Sử dụng
Document.Optimize({ images: { dpi, quality } })để thu nhỏ tài liệu có nhiều hình ảnh, thay vì tự giải mã và thêm lại từng hình một cách thủ công. - Hình chữ nhật của
Page.AddImage()đặt kích thước đặt trực tiếp — điều chỉnh khung mục tiêu theo tỉ lệ khung hình của hình ảnh nguồn để tránh việc kéo dài.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
| Hình ảnh bị kéo dài hoặc nén lại | Đối tượng rect được truyền cho AddImage() không khớp với tỉ lệ khung hình của hình ảnh nguồn | Tính chiều rộng/chiều cao của hình chữ nhật dựa trên các kích thước của hình ảnh nguồn |
Page.AddImage() đặt định dạng sai | Không thể xác định định dạng của byte ảnh một cách đáng tin cậy | Cung cấp một format rõ ràng trong AddImageOptions |
| Tài liệu lớn hơn dự kiến rất nhiều sau khi thêm hình ảnh | Hình ảnh đã được nhúng ở độ phân giải và chất lượng đầy đủ | Gọi Document.Optimize({ images: { dpi, quality } }) để giảm mẫu và mã hóa lại |
FAQ
Làm thế nào để đặt một hình ảnh vào trang?
Gọi page.AddImage(imageBytes, rect), trong đó rect là một hình chữ nhật [x0, y0, x1, y1] tính bằng điểm trong không gian trang.
Làm thế nào để liệt kê các hình ảnh đã có trên một trang mà không giải mã chúng?
Đọc page.Images — một ImageInfo[] cung cấp Width, Height, ColorSpace và Filter cho mỗi hình ảnh mà không giải mã dữ liệu điểm ảnh.
Tôi có thể giảm kích thước tệp của tài liệu bằng cách nén các hình ảnh không?
Có — gọi Document.Optimize({ images: { dpi, quality } }), hàm này sẽ giảm mẫu và mã lại các hình ảnh nhúng như một phần của quá trình tối ưu hoá toàn bộ tài liệu.
Việc nhúng một hình ảnh khác với việc rendering một trang thành hình ảnh như thế nào?
Page.AddImage() đặt byte hình ảnh raster lên một trang hiện có. Page.ToImage() (xem Conversion) thực hiện ngược lại — render toàn bộ trang thành các byte PNG.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
Page.AddImage() | Đặt các byte hình ảnh vào một hình chữ nhật trên trang |
AddImageOptions | Các tùy chọn cho AddImage(): opacity, format, tag, layer |
Page.Images | Mỗi hình ảnh đã có trên trang, dưới dạng ImageInfo[] chỉ có siêu dữ liệu |
ImageInfo.Decode() / Replace() / Remove() | Đọc dữ liệu pixel, thay thế bằng byte mới, hoặc xóa một hình ảnh |
Document.Optimize() | Giảm kích thước tệp trên toàn bộ tài liệu, tùy chọn giảm độ phân giải hình ảnh thông qua images: { dpi, quality } |