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 }

Дивіться також

 Українська