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.Images solo lee los metadatos — decodificar los datos de píxeles completos de cada imagen con Decode() de antemano no es necesario si solo necesitas dimensiones o espacio de color.
  • Pasa un format explícito en AddImageOptions cuando 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

ProblemaCausaSolución
La imagen aparece estirada o aplastadaEl objetivo rect pasado a AddImage() no coincide con la relación de aspecto de la imagen de origenCalcule el ancho/alto del rectángulo a partir de las dimensiones propias de la imagen de origen
Page.AddImage() coloca el formato incorrectoNo se pudo identificar con fiabilidad el formato de los bytes de la imagenProporcione un format explícito en AddImageOptions
El documento es mucho más grande de lo esperado tras añadir imágenesLas imágenes se incrustaron a plena resolución y calidadLlame 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étodoDescripción
Page.AddImage()Insertar los bytes de la imagen en un rectángulo de la página
AddImageOptionsOpciones para AddImage(): opacity, format, tag, layer
Page.ImagesCada 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 }

Ver también

 Español