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.Images chỉ đọc siêu dữ liệu — giải mã toàn bộ dữ liệu pixel của mỗi hình ảnh bằng Decode() 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 format rõ ràng trong AddImageOptions khi 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ânKhắ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ồnTí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 saiKhông thể xác định định dạng của byte ảnh một cách đáng tin cậyCung 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 ảnhHì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ứcMô tả
Page.AddImage()Đặt các byte hình ảnh vào một hình chữ nhật trên trang
AddImageOptionsCác tùy chọn cho AddImage(): opacity, format, tag, layer
Page.ImagesMỗ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 }

Xem thêm

 Tiếng Việt