Ink‑Objekte in PowerPoint mit Python verwalten

Einleitung

PowerPoint bietet eine Ink‑Funktion, mit der Sie Freihand‑Striche zeichnen können. Tinte kann verwendet werden, um andere Objekte hervorzuheben, Verbindungen und Prozesse darzustellen und die Aufmerksamkeit auf bestimmte Elemente einer Folie zu lenken.

Der Namespace aspose.slides.ink enthält die Klassen, die zum Arbeiten mit Ink‑Objekten benötigt werden. Beispielsweise stellt die Klasse Ink ein Ink‑Objekt auf einer Folie dar.

Unterschiede zwischen regulären Objekten und Ink‑Objekten

Objekte auf einer PowerPoint‑Folie werden typischerweise durch Shape‑Objekte dargestellt. In seiner einfachsten Form ist ein Shape ein Container, der den Bereich des Objekts selbst (seinen Rahmen) zusammen mit Eigenschaften wie Containergröße, Form und Hintergrund definiert. Weitere Informationen finden Sie unter Shape Layout Format.

Wenn PowerPoint jedoch ein Ink‑Objekt verarbeitet, ignoriert es alle Eigenschaften des Objekt‑Frames (Containers) mit Ausnahme seiner Größe. Die Größe des Container‑Bereichs wird durch die Standard‑Eigenschaften Ink.width und Ink.height bestimmt:

ink_powerpoint1

Ink‑Spuren

Eine Ink‑Spur ist ein Basiselement, das die Flugbahn einer Schreibfeder aufzeichnet, wenn ein Benutzer digitale Tinte schreibt. Eine Spur speichert eine Sequenz verbundener Punkte.

Die einfachste Form der Codierung gibt die X‑ und Y‑Koordinaten jedes Stichprobenpunkts an. Wenn alle verbundenen Punkte gerendert werden, entsteht ein Bild wie dieses:

ink_powerpoint2

Pinsel‑Eigenschaften zum Zeichnen

Ein Pinsel wird verwendet, um Linien zu zeichnen, die die Punkte einer Ink‑Spur verbinden. Seine Eigenschaften InkBrush.color und InkBrush.size steuern Farbe und Größe.

Ink‑Pinselfarbe festlegen

Dieses Python‑Beispiel zeigt, wie die Farbe eines Ink‑Pinsels festgelegt wird:

import aspose.slides as slides
import aspose.pydrawing as draw

with slides.Presentation("pres.pptx") as presentation:
    ink = presentation.slides[0].shapes[0]
    brush = ink.traces[0].brush
    brush.color = draw.Color.red

Ink‑Pinselgröße festlegen

Dieses Python‑Beispiel zeigt, wie die Größe eines Ink‑Pinsels festgelegt wird:

import aspose.slides as slides
import aspose.pydrawing as draw

with slides.Presentation("pres.pptx") as presentation:
    ink = presentation.slides[0].shapes[0]
    brush = ink.traces[0].brush
    brush.size = draw.SizeF(5.0, 10.0)

Im Allgemeinen stimmen Breite und Höhe eines Pinsels nicht überein, sodass PowerPoint die Pinselgröße nicht anzeigt (der entsprechende Datenbereich ist ausgegraut). Stimmen Breite und Höhe des Pinsels überein, zeigt PowerPoint die Größe folgendermaßen an:

ink_powerpoint3

Zur Veranschaulichung erhöhen wir die Höhe des Ink‑Objekts und betrachten die wichtigen Abmessungen:

ink_powerpoint4

Der Container (Rahmen) berücksichtigt nicht die Größe der Pinsel – er geht immer davon aus, dass die Linienstärke Null ist (siehe das vorherige Bild).

Daher muss zur Bestimmung des sichtbaren Bereichs des gesamten Ink‑Objekts die Pinselgröße seiner Spuren berücksichtigt werden. Hier wurde das Zielobjekt (die handgeschriebene Textspur) auf die Größe des Containers (Rahmens) skaliert. Ändert sich die Container‑Größe, bleibt die Pinselgröße konstant und umgekehrt.

ink_powerpoint5

PowerPoint verwendet ein ähnliches Verhalten für Textobjekte:

ink_powerpoint6

Ink‑Darstellung bei Export und Rendering steuern

Aspose.Slides stellt die Klasse InkOptions bereit, um zu steuern, wie Ink‑Objekte in exportierten oder gerenderten Ausgaben angezeigt werden. Mit ihren Eigenschaften können Sie Ink vollständig ausblenden oder ändern, wie Masken‑Operationen des Ink‑Pinsels interpretiert werden.

Ink‑Optionen stehen über die Export‑ oder Rendering‑Optionen für verschiedene Ausgabetypen zur Verfügung:

Ausgabe Ink‑Optionen‑Eigenschaft
PDF PdfOptions.ink_options
HTML HtmlOptions.ink_options
SVG SVGOptions.ink_options
TIFF TiffOptions.ink_options
Slide image RenderingOptions.ink_options

Über diese Eigenschaften stehen dieselben beiden Einstellungen zur Verfügung:

  • InkOptions.hide_ink bestimmt, ob Ink‑Objekte in die Ausgabe aufgenommen werden. Der Standardwert ist False.
  • InkOptions.interpret_mask_op_as_opacity bestimmt, ob eine Masken‑Operation als Deckkraft interpretiert wird, wenn ein Ink‑Pinsel gerendert wird. Der Standardwert ist True; setzen Sie ihn auf False, um stattdessen die ROP‑Operation zu verwenden.

Ink‑Objekte im PDF‑Ausgabe ausblenden

Standardmäßig bleiben Ink‑Objekte beim Export sichtbar. Setzen Sie InkOptions.hide_ink auf True, wenn Sie ein sauberes Ergebnis ohne handschriftliche Anmerkungen oder andere Ink‑Inhalte benötigen.

Das folgende Python‑Beispiel exportiert eine Präsentation nach PDF und blendet alle Ink‑Objekte aus:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    pdf_options = slides.export.PdfOptions()
    pdf_options.ink_options.hide_ink = True

    presentation.save("presentation_without_ink.pdf", slides.export.SaveFormat.PDF, pdf_options)

Ink‑Objekte beim Rendern einer Folie als Bild ausblenden

Um Ink‑Objekte beim Rendern von Folien als Bitmap‑Bilder auszublenden, konfigurieren Sie RenderingOptions.ink_options und übergeben Sie die Rendering‑Optionen an die Methode Slide.get_image.

Das folgende Python‑Beispiel rendert die erste Folie als PNG‑Bild ohne Ink‑Objekte:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    rendering_options = slides.export.RenderingOptions()
    rendering_options.ink_options.hide_ink = True

    with presentation.slides[0].get_image(rendering_options) as image:
        image.save("slide_without_ink.png", slides.ImageFormat.PNG)

Ink‑Masken‑Rendering steuern

Die Eigenschaft InkOptions.interpret_mask_op_as_opacity steuert, wie Masken‑Operationen interpretiert werden, wenn Ink‑Pinsel gerendert werden. Der Standardwert ist True, wodurch Deckkraft verwendet wird. Setzen Sie die Eigenschaft auf False, um stattdessen die ROP‑Operation zu nutzen.

Das folgende Python‑Beispiel exportiert eine Folie nach SVG und verwendet ROP‑basiertes Rendering für Ink‑Masken‑Operationen:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    svg_options = slides.export.SVGOptions()
    svg_options.ink_options.interpret_mask_op_as_opacity = False

    with open("slide.svg", "wb") as svg_stream:
        presentation.slides[0].write_as_svg(svg_stream, svg_options)

Dieselbe Einstellung kann über TiffOptions.ink_options angewendet werden, wenn eine Präsentation exportiert oder eine Folie nach TIFF gerendert wird.

Auswahl, ob Ink ausgeblendet oder erhalten bleiben soll

Setzen Sie InkOptions.hide_ink auf True, wenn die exportierte Datei eine bereinigte Version einer kommentierten Präsentation sein soll, beispielsweise eine Endkopie zur Verteilung ohne Überprüfungsmarken.

Belassen Sie InkOptions.hide_ink bei seinem Standardwert False, wenn Ink‑Anmerkungen Teil des gewünschten Inhalts sind, etwa Prüfkriterien, handschriftliche Notizen, Hervorhebungen oder Zeichnungen, die im exportierten Ergebnis sichtbar bleiben sollen. Damit können Anwendungen getrennte Prüf‑ und Endausgaben aus derselben Präsentation erzeugen, ohne die Quell‑Ink‑Objekte zu verändern.

FAQ

Kann ich die Farbe oder Größe eines vorhandenen Ink‑Strichs ändern?

Ja. Holen Sie die Spur über Ink.traces, ändern Sie dann deren InkTrace.brush. Sie können die Eigenschaften InkBrush.color und InkBrush.size des Pinsels setzen.

Ändert das Ausblenden von Ink die Quellpräsentation?

Nein. InkOptions.hide_ink wirkt sich nur auf das gerenderte oder exportierte Ergebnis aus; es entfernt oder ändert keine Ink‑Objekte in der Quellpräsentation.

Welche Exportformate unterstützen Ink‑Optionen?

Sie können Ink‑Optionen für PDF, HTML, SVG, TIFF und Bitmap‑Folienbilder über die jeweiligen Export‑ bzw. Rendering‑Optionen konfigurieren, die oben aufgeführt sind.

Weiterführende Literatur