Images
Images
Esta página trata sobre la inserción de imágenes raster en una página, la inspección de las imágenes ya incrustadas en un documento y la reducción de su tamaño. Para renderizar una page a una imagen, consulte Conversion.
Incrustar una imagen
Page.AddImage() coloca bytes de imagen JPEG, PNG, BMP o TIFF en un rectángulo de precisión de píxel en la página.
// 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 acepta opacity, un format explícito cuando no puede deducirse de los bytes, un tag (un StructElement al que adjuntar la foto en un documento etiquetado), y un layer para contenido opcional.
Inspección de imágenes incrustadas
Page.Images enumera cada foto ya presente en la página como ImageInfo[], sin decodificar datos de píxel — cada entrada expone Width, Height, Bits, ColorSpace y Filter. Llame a Decode() sobre un ImageInfo para obtener sus bytes de muestra sin procesar, a Replace() para intercambiar nuevos datos visuales en su lugar, o a Remove() para eliminarlo de la página.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}Optimización de imágenes
Document.Optimize() reduce el tamaño del archivo en todo el documento; pasa una opción images (OptimizeImageOptions, con los campos dpi y quality) para también reducir la resolución y volver a codificar las imágenes incrustadas como parte del mismo paso.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });Consejos y mejores prácticas
Page.Imagessolo lee los metadatos — decodificar los datos de píxeles completos de cada imagen conDecode()de antemano no es necesario si solo necesitas dimensiones o espacio de color.- Pasa un
formatexplícito enAddImageOptionscuando los bytes de origen provienen de un flujo o búfer sin una extensión de archivo fiable para detectar. - Utiliza
Document.Optimize({ images: { dpi, quality } })para reducir un documento con muchas imágenes, en lugar de decodificar manualmente y volver a añadir cada una. - El rectángulo de
Page.AddImage()define el tamaño colocado directamente — escala el rectángulo objetivo al propio aspecto del recurso original para evitar estirarlo.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| La imagen aparece estirada o aplastada | El objetivo rect pasado a AddImage() no coincide con la relación de aspecto de la imagen de origen | Calcule el ancho/alto del rectángulo a partir de las dimensiones propias de la imagen de origen |
Page.AddImage() coloca el formato incorrecto | No se pudo identificar con fiabilidad el formato de los bytes de la imagen | Proporcione un format explícito en AddImageOptions |
| El documento es mucho más grande de lo esperado tras añadir imágenes | Las imágenes se incrustaron a plena resolución y calidad | Llame a Document.Optimize({ images: { dpi, quality } }) para reducir la muestra y volver a codificar |
FAQ
¿Cómo coloco una imagen en una página?
Llame a page.AddImage(imageBytes, rect), donde rect es un rectángulo [x0, y0, x1, y1] en puntos del espacio de página.
¿Cómo enumero las imágenes que ya están en una página sin decodificarlas?
Lea page.Images — un ImageInfo[] que expone Width, Height, ColorSpace y Filter para cada imagen sin decodificar los datos de píxeles.
¿Puedo reducir el tamaño del archivo de un documento comprimiendo sus imágenes?
Sí — llame a Document.Optimize({ images: { dpi, quality } }), que reduce la resolución y vuelve a codificar las imágenes incrustadas como parte de una pasada de optimización a nivel de documento.
¿En qué se diferencia incrustar una imagen de renderizar una página como imagen?
Page.AddImage() coloca los bytes raster de la foto en una página existente. Page.ToImage() (ver Conversion) hace lo contrario — renderiza toda la página a bytes PNG.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
Page.AddImage() | Insertar los bytes de la imagen en un rectángulo de la página |
AddImageOptions | Opciones para AddImage(): opacity, format, tag, layer |
Page.Images | Cada imagen ya presente en la página, como ImageInfo[] solo de metadatos |
ImageInfo.Decode() / Replace() / Remove() | Leer datos de píxeles, intercambiar por nuevos bytes o eliminar una imagen |
Document.Optimize() | Reducir el tamaño del archivo en todo el documento, opcionalmente reduciendo la resolución de las imágenes mediante images: { dpi, quality } |