Images
Images
Halaman ini membahas penempatan gambar raster pada halaman, memeriksa gambar yang sudah disematkan dalam dokumen, dan mengurangi ukurannya. Untuk merender sebuah page ke gambar, lihat Conversion.
Menyematkan Gambar
Page.AddImage() menempatkan byte gambar JPEG, PNG, BMP, atau TIFF ke dalam sebuah persegi panjang dengan presisi piksel pada halaman.
// 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 menerima opacity, sebuah format eksplisit ketika tidak dapat dikenali dari byte, sebuah tag (sebuah StructElement untuk melampirkan gambar dalam dokumen bertanda), dan sebuah layer untuk konten opsional.
Memeriksa Gambar yang Disematkan
Page.Images mencantumkan setiap gambar yang sudah ada di halaman sebagai ImageInfo[], tanpa mendekode data piksel apa pun — setiap entri menampilkan Width, Height, Bits, ColorSpace, dan Filter. Panggil Decode() pada sebuah ImageInfo untuk mendapatkan byte contoh mentahnya, Replace() untuk menukar data gambar baru di tempat, atau Remove() untuk menghapusnya dari halaman.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}Mengoptimalkan Gambar
Document.Optimize() mengurangi ukuran file di seluruh dokumen; berikan opsi images (OptimizeImageOptions, dengan bidang dpi dan quality) untuk juga downsample dan re-encode gambar yang disematkan sebagai bagian dari satu pass.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });Tips dan Praktik Terbaik
Page.Imageshanya membaca metadata — mendekode semua data piksel penuh setiap gambar denganDecode()di awal tidak diperlukan jika Anda hanya membutuhkan dimensi atau ruang warna.- Berikan
formateksplisit dalamAddImageOptionsketika byte sumber berasal dari aliran atau buffer tanpa ekstensi file yang dapat diandalkan untuk dideteksi. - Gunakan
Document.Optimize({ images: { dpi, quality } })untuk memperkecil dokumen dengan banyak gambar, daripada secara manual mendekode dan menambahkan kembali masing-masing. - Kotak
Page.AddImage()menetapkan ukuran penempatan secara langsung — skala kotak target ke rasio aspek gambar sumber sendiri untuk menghindari peregangan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Gambar tampak tertarik atau tertekan | Target rect yang diberikan ke AddImage() tidak cocok dengan rasio aspek gambar sumber | Hitung lebar/tinggi persegi panjang dari dimensi asli gambar sumber |
Page.AddImage() menempatkan format yang salah | Format byte gambar tidak dapat dideteksi secara andal | Berikan format secara eksplisit dalam AddImageOptions |
| Dokumen jauh lebih besar dari yang diharapkan setelah menambahkan gambar | Gambar disematkan dengan resolusi dan kualitas penuh | Panggil Document.Optimize({ images: { dpi, quality } }) untuk menurunkan resolusi dan mengkode ulang |
FAQ
Bagaimana cara menempatkan gambar pada halaman?
Panggil page.AddImage(imageBytes, rect), di mana rect adalah sebuah persegi panjang [x0, y0, x1, y1] dalam poin ruang halaman.
Bagaimana cara mendaftar gambar yang sudah ada di halaman tanpa mendekodenya?
Baca page.Images — sebuah ImageInfo[] yang menampilkan Width, Height, ColorSpace, dan Filter untuk setiap gambar tanpa mendekode data piksel.
Apakah saya dapat mengurangi ukuran file dokumen dengan mengompresi gambar-gambarnya?
Ya — panggil Document.Optimize({ images: { dpi, quality } }), yang melakukan downsampling dan mengenkode ulang gambar yang disematkan sebagai bagian dari proses optimalisasi seluruh dokumen.
Bagaimana menyematkan gambar berbeda dari merender halaman menjadi gambar?
Page.AddImage() menempatkan byte gambar raster pada halaman yang sudah ada. Page.ToImage() (lihat Conversion) melakukan kebalikan — merender seluruh halaman menjadi byte PNG.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Page.AddImage() | Tempatkan byte gambar ke dalam persegi panjang pada halaman |
AddImageOptions | Opsi untuk AddImage(): opacity, format, tag, layer |
Page.Images | Setiap gambar yang sudah ada di halaman, sebagai ImageInfo[] hanya metadata |
ImageInfo.Decode() / Replace() / Remove() | Baca data piksel, tukar dengan byte baru, atau hapus sebuah gambar |
Document.Optimize() | Kurangi ukuran file secara keseluruhan dokumen, secara opsional menurunkan resolusi gambar melalui images: { dpi, quality } |