Images
Images
Esta página aborda a inserção de imagens raster em uma página, a inspeção das imagens já incorporadas em um documento e a redução de seu tamanho. Para renderizar um page para uma imagem, veja Conversion.
Incorporando uma Imagem
Page.AddImage() coloca bytes de imagem JPEG, PNG, BMP ou TIFF em um retângulo de precisão de pixel na 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 aceita opacity, um format explícito quando não pode ser detectado a partir dos bytes, um tag (um StructElement ao qual anexar a imagem em um documento marcado), e um layer para conteúdo opcional.
Inspecionando Imagens Incorporadas
Page.Images lista cada imagem já presente na página como ImageInfo[], sem decodificar nenhum dado de pixel — cada entrada expõe Width, Height, Bits, ColorSpace e Filter. Chame Decode() em um ImageInfo para obter seus bytes de amostra brutos, Replace() para substituir por novos dados de imagem no local, ou Remove() para excluí-la da página.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}Otimizando Imagens
Document.Optimize() reduz o tamanho do arquivo em todo o documento; passe uma opção images (OptimizeImageOptions, com dpi e quality campos) para também reduzir a amostragem e re-codificar imagens incorporadas como parte da mesma passagem.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });Dicas e Melhores Práticas
Page.Imageslê apenas os metadados — decodificar os dados de pixel completos de cada imagem comDecode()antecipadamente é desnecessário se você só precisa das dimensões ou do espaço de cores.- Passe um
formatexplícito emAddImageOptionsquando os bytes de origem vêm de um fluxo ou buffer sem uma extensão de arquivo confiável para detecção. - Recorra a
Document.Optimize({ images: { dpi, quality } })para reduzir um documento com muitas imagens, em vez de decodificar manualmente e re-adicionar cada uma. - O retângulo de
Page.AddImage()define o tamanho colocado diretamente — escale o retângulo de destino para a proporção da própria imagem de origem para evitar esticá-la.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
| A imagem aparece esticada ou achatada | O alvo rect passado para AddImage() não corresponde à proporção da imagem de origem | Calcule a largura/altura do retângulo a partir das próprias dimensões da imagem de origem |
Page.AddImage() coloca o formato errado | O formato dos bytes da imagem não pôde ser detectado de forma confiável | Passe um format explícito em AddImageOptions |
| O documento está muito maior que o esperado após a adição de imagens | As imagens foram incorporadas em resolução e qualidade completas | Chame Document.Optimize({ images: { dpi, quality } }) para reduzir a amostragem e re-codificar |
FAQ
Como coloco uma imagem em uma página?
Chame page.AddImage(imageBytes, rect), onde rect é um retângulo [x0, y0, x1, y1] em pontos de espaço de página.
Como listo as imagens já presentes em uma página sem decodificá-las?
Leia page.Images — um ImageInfo[] que expõe Width, Height, ColorSpace e Filter para cada imagem sem decodificar os dados de pixel.
Posso reduzir o tamanho do arquivo de um documento comprimindo suas imagens?
Sim — chame Document.Optimize({ images: { dpi, quality } }), que reduz a amostragem e re-codifica as imagens incorporadas como parte de uma passagem de otimização em todo o documento.
Como a incorporação de uma imagem difere da renderização de uma página para uma imagem?
Page.AddImage() coloca bytes de imagem raster em uma página existente. Page.ToImage() (veja Conversion) faz o inverso — renderizando a página inteira em bytes PNG.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
Page.AddImage() | Coloque os bytes da imagem em um retângulo na página |
AddImageOptions | Opções para AddImage(): opacity, format, tag, layer |
Page.Images | Cada imagem já presente na página, como ImageInfo[] somente de metadados |
ImageInfo.Decode() / Replace() / Remove() | Leia os dados de pixel, troque por novos bytes ou remova uma imagem |
Document.Optimize() | Reduza o tamanho do arquivo em todo o documento, opcionalmente reduzindo a amostragem de imagens via images: { dpi, quality } |