Images
Images
На цій сторінці розглядаються розміщення растрових зображень на сторінці, перевірка вже вбудованих у документ зображень та зменшення їх розміру. Для рендерингу a 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 } |