Arbeiten mit Bildern

Aspose.Words ermöglicht Benutzern ein sehr flexibles Arbeiten mit Bildern. In diesem Artikel können Sie nur einige der Möglichkeiten der Arbeit mit Bildern erkunden.

Ein Bild einfügen

DocumentBuilder bietet mehrere Überladungen der insert_image-Methode, mit denen Sie ein Inline- oder Floating-Bild einfügen können. Wenn es sich bei dem Bild um eine EMF- oder WMF-Metadatei handelt, wird es im Metadateiformat in das Dokument eingefügt. Alle anderen Bilder werden im PNG-Format gespeichert. Die Bild einfügen-Methode kann Bilder aus verschiedenen Quellen verwenden:

  • Aus einer Datei oder URL durch Übergabe eines String-Parameters
  • Aus einem Stream durch Übergabe eines Stream-Parameters
  • Aus einem Byte-Array durch Übergabe eines Byte-Array-Parameters

Für jede der Bild einfügen-Methoden gibt es weitere Überladungen, die es Ihnen ermöglichen, ein Bild mit den folgenden Optionen einzufügen:

  • Inline oder schwebend an einer bestimmten Position, zum Beispiel Bild einfügen
  • Prozentskala oder benutzerdefinierte Größe; Darüber hinaus gibt die DocumentBuilder.insert_image-Methode ein Shape-Objekt zurück, das gerade erstellt und eingefügt wurde, sodass Sie die Eigenschaften des Shape weiter ändern können

Einfügen eines Inline-Bildes

Übergeben Sie eine einzelne Zeichenfolge, die eine Datei darstellt, die das Bild enthält, an insert_image, um das Bild als Inline-Grafik in das Dokument einzufügen.

Das folgende Codebeispiel zeigt, wie man ein Inline-Bild an der Cursorposition in ein Dokument einfügt:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

builder.insert_image(docs_base.images_dir + "Logo.jpg")

doc.save(docs_base.artifacts_dir+"WorkingWithImages.document_builder_insert_inline_image.doc")

Einfügen eines schwebenden (absolut positionierten) Bildes

Das folgende Codebeispiel zeigt, wie man ein schwebendes Bild aus einer Datei oder URL an einer angegebenen Position und Größe einfügt:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

builder.insert_image(docs_base.images_dir + "Logo.jpg",
    aw.drawing.RelativeHorizontalPosition.MARGIN,
    100,
    aw.drawing.RelativeVerticalPosition.MARGIN,
    100,
    200,
    100,
    aw.drawing.WrapType.SQUARE)

doc.save(docs_base.artifacts_dir+"WorkingWithImages.document_builder_insert_floating_image.doc")

So extrahieren Sie Bilder aus einem Dokument

Alle Bilder werden in Shape-Knoten in einem Document gespeichert. Gehen Sie folgendermaßen vor, um alle Bilder oder Bilder mit einem bestimmten Typ aus dem Dokument zu extrahieren:

  • Verwenden Sie die Document.get_child_nodes-Methode, um alle Shape-Knoten auszuwählen. – Durchlaufen Sie die resultierenden Knotensammlungen.
  • Überprüfen Sie die boolesche Shape.has_image-Eigenschaft.
  • Extrahieren Sie Bilddaten mithilfe der Shape.image_data-Eigenschaft.
  • Bilddaten in einer Datei speichern.

Das folgende Codebeispiel zeigt, wie man Bilder aus einem Dokument extrahiert und als Dateien speichert:

Sie können die Vorlagendatei dieses Beispiels von Hier herunterladen.

So fügen Sie Barcodes auf jeder Seite eines Dokuments ein

Dieses Beispiel zeigt, wie Sie auf allen oder bestimmten Seiten eines Word-Dokuments dieselben oder unterschiedliche Barcodes hinzufügen. Es gibt keine direkte Möglichkeit, Barcodes auf allen Seiten eines Dokuments hinzuzufügen, aber Sie können die Methoden move_to_section, move_to_header_footer und insert_image verwenden, um zu einem beliebigen Abschnitt oder Kopf-/Fußzeilen zu wechseln und die Barcode-Bilder einzufügen, wie Sie im folgenden Code sehen können.

Das folgende Codebeispiel fügt auf jeder Seite eines Dokuments ein Barcodebild ein.

Seitenverhältnis des Bildes sperren

Das Seitenverhältnis einer geometrischen Form ist das Verhältnis ihrer Größen in verschiedenen Dimensionen. Sie können das Seitenverhältnis des Bildes mit aspect_ratio_locked sperren. Der Standardwert des Seitenverhältnisses der Form hängt vom ShapeType ab. Es ist True für ShapeType.IMAGE und False für andere Formtypen.

Das folgende Codebeispiel zeigt, wie mit dem Seitenverhältnis gearbeitet wird:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

shape = builder.insert_image(docs_base.images_dir + "Logo.jpg")
shape.aspect_ratio_locked = False

doc.save(docs_base.artifacts_dir+"WorkingWithImages.set_aspect_ratio_locked.doc")

So erhalten Sie tatsächliche Formgrenzen in Punkten

Wenn Sie möchten, dass der tatsächliche Begrenzungsrahmen der Form auf der Seite gerendert wird, können Sie dies mithilfe der bounds_in_points-Eigenschaft erreichen.

Das folgende Codebeispiel zeigt, wie diese Eigenschaft verwendet wird:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

shape = builder.insert_image(docs_base.images_dir + "Logo.jpg")
shape.aspect_ratio_locked = False

print("\nGets the actual bounds of the shape in points.")
rect = shape.get_shape_renderer().bounds_in_points
print(f"{rect.x}, {rect.y}, {rect.width}, {rect.height}")

Bilder zuschneiden

Unter dem Zuschneiden eines Bildes versteht man in der Regel das Entfernen unerwünschter äußerer Teile eines Bildes, um den Bildausschnitt zu verbessern. Es wird auch zum Entfernen einiger Teile eines Bildes verwendet, um den Fokus auf einen bestimmten Bereich zu erhöhen.

Das folgende Codebeispiel zeigt, wie dies mit Aspose.Words API erreicht wird:

# The path to the documents directory.
inputPath = docs_base.images_dir + "Logo.jpg"
outputPath = docs_base.artifacts_dir + "cropped_logo.jpg"

self.crop_image(inputPath,outputPath, 100, 90, 200, 200)
@staticmethod
def crop_image(inPath : str, outPath : str, left : int, top : int, width : int, height : int) :
    
    doc = aw.Document();
    builder = aw.DocumentBuilder(doc)
    
    croppedImage = builder.insert_image(inPath)
    
    src_width_points = croppedImage.width
    src_height_points = croppedImage.height
    
    croppedImage.width = aw.ConvertUtil.pixel_to_point(width)
    croppedImage.height = aw.ConvertUtil.pixel_to_point(height)
    
    widthRatio = croppedImage.width / src_width_points
    heightRatio = croppedImage.height / src_height_points
    
    if (widthRatio< 1) :
        croppedImage.image_data.crop_right = 1 - widthRatio
    
    if (heightRatio< 1) :
        croppedImage.image_data.crop_bottom = 1 - heightRatio
    
    leftToWidth = aw.ConvertUtil.pixel_to_point(left) / src_width_points
    topToHeight = aw.ConvertUtil.pixel_to_point(top) / src_height_points
    
    croppedImage.image_data.crop_left = leftToWidth
    croppedImage.image_data.crop_right = croppedImage.image_data.crop_right - leftToWidth
    
    croppedImage.image_data.crop_top = topToHeight
    croppedImage.image_data.crop_bottom = croppedImage.image_data.crop_bottom - topToHeight
    
    croppedImage.get_shape_renderer().save(outPath, aw.saving.ImageSaveOptions(aw.SaveFormat.JPEG))

Bilder als WMF speichern

Aspose.Words bietet Funktionen zum Speichern aller verfügbaren Bilder in einem Dokument im WMF-Format bei der Konvertierung von DOCX in RTF.

Das folgende Codebeispiel zeigt, wie Bilder als WMF mit RTF-Speicheroptionen gespeichert werden: