Images

Images

Diese Seite behandelt das Platzieren von Rasterbildern auf einer Seite, das Inspizieren der bereits in ein Dokument eingebetteten Bilder und das Reduzieren ihrer Größe. Für das Rendern eines page zu einem Bild, siehe Conversion.


Einbetten eines Bildes

Page.AddImage() platziert JPEG-, PNG-, BMP- oder TIFF-Bildbytes in ein pixelgenaues Rechteck auf der Seite.

// 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 akzeptiert opacity, ein explizites format, wenn es nicht aus den Bytes erkannt werden kann, ein tag (ein StructElement, an das das Bild in einem getaggten Dokument angehängt wird), und ein layer für optionale Inhalte.


Untersuchen eingebetteter Bilder

Page.Images listet jedes bereits auf der Seite vorhandene Bild als ImageInfo[] auf, ohne irgendeine Pixeldaten zu dekodieren — jeder Eintrag gibt Width, Height, Bits, ColorSpace und Filter frei. Rufen Sie Decode() auf einem ImageInfo auf, um seine rohen Sample-Bytes zu erhalten, Replace(), um neue Bilddaten an ihrer Stelle auszutauschen, oder Remove(), um es von der Seite zu löschen.

for (const img of page.Images) {
  console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}

Bilder optimieren

Document.Optimize() reduziert die Dateigröße im gesamten Dokument; übergeben Sie eine images-Option (OptimizeImageOptions, mit den Feldern dpi und quality), um eingebettete Bilder ebenfalls im selben Durchlauf herunterzusampeln und neu zu kodieren.

const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });

Tipps und bewährte Verfahren

  • Page.Images liest nur Metadaten — das Dekodieren aller Bildpixeldaten mit Decode() im Voraus ist unnötig, wenn Sie nur Abmessungen oder Farbraum benötigen.
  • Geben Sie ein explizites format in AddImageOptions an, wenn die Quellbytes aus einem Stream oder Puffer ohne verlässliche Dateierweiterung stammen, die ermittelt werden könnte.
  • Verwenden Sie Document.Optimize({ images: { dpi, quality } }), um ein Dokument mit vielen Bildern zu verkleinern, anstatt jedes Bild manuell zu dekodieren und erneut hinzuzufügen.
  • Das Rechteck von Page.AddImage() legt die platzierte Größe direkt fest — skalieren Sie das Zielrechteck an das Seitenverhältnis des Quellbildes, um ein Verzerren zu vermeiden.

Häufige Probleme

ProblemUrsacheLösung
Bild erscheint gestreckt oder zusammengedrücktDas Ziel rect, das an AddImage() übergeben wurde, stimmt nicht mit dem Seitenverhältnis des Quellbildes übereinBerechnen Sie die Breite/Höhe des Rechtecks aus den eigenen Abmessungen des Quellbildes
Page.AddImage() legt das falsche Format festDas Format der Bildbytes konnte nicht zuverlässig ermittelt werdenVerwende ein explizites format in AddImageOptions
Das Dokument ist nach dem Hinzufügen von Bildern deutlich größer als erwartetBilder wurden in voller Auflösung und Qualität eingebettetRufe Document.Optimize({ images: { dpi, quality } }) auf, um herunterzusampeln und neu zu kodieren

FAQ

Wie füge ich ein Bild auf einer Seite ein?

Rufen Sie page.AddImage(imageBytes, rect) auf, wobei rect ein [x0, y0, x1, y1] Rechteck in Seitenraum-Punkten ist.

Wie kann ich die bereits auf einer Seite vorhandenen Bilder auflisten, ohne sie zu dekodieren?

Lesen Sie page.Images — ein ImageInfo[], das Width, Height, ColorSpace und Filter für jedes Bild offenlegt, ohne Pixeldaten zu dekodieren.

Kann ich die Dateigröße eines Dokuments reduzieren, indem ich seine Bilder komprimiere?

Ja — rufen Sie Document.Optimize({ images: { dpi, quality } }) auf, das eingebettete Bilder im Rahmen eines dokumentweiten Optimierungslaufs heruntersampelt und neu enkodiert.

Wie unterscheidet sich das Einbetten eines Bildes vom Rendern einer Seite zu einem Bild?

Page.AddImage() platziert Rasterbild-Bytes auf einer bestehenden Seite. Page.ToImage() (siehe Conversion) führt das Gegenteil aus — rendert die gesamte Seite zu PNG-Bytes.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
Page.AddImage()Platziere Bild-Bytes in ein Rechteck auf der Seite
AddImageOptionsOptionen für AddImage(): opacity, format, tag, layer
Page.ImagesJedes Bild, das bereits auf der Seite ist, als nur-Metadaten-ImageInfo[]
ImageInfo.Decode() / Replace() / Remove()Pixel-Daten lesen, neue Bytes austauschen oder ein Bild entfernen
Document.Optimize()Dateigröße im gesamten Dokument reduzieren, optional Bilder mittels images: { dpi, quality } heruntersampeln

Siehe auch

 Deutsch