Verwalten von Präsentations‑Tintenobjekten auf Android

Einleitung

PowerPoint bietet eine Tintenfunktion, mit der Sie Freihandlinien zeichnen können. Tinte kann verwendet werden, um andere Objekte hervorzuheben, Verbindungen und Prozesse zu zeigen und die Aufmerksamkeit auf bestimmte Elemente einer Folie zu lenken.

Aspose.Slides stellt die Typen bereit, die zum Arbeiten mit Tintenobjekten benötigt werden. Das IInk‑Interface stellt beispielsweise ein Tintenobjekt auf einer Folie dar.

Unterschiede zwischen regulären Objekten und Tintenobjekten

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

Wenn PowerPoint jedoch ein Tintenobjekt verarbeitet, ignoriert es alle Eigenschaften des Objekt‑Rahmens (Containers) außer seiner Größe. Die Größe des Container‑Bereichs wird durch die Standardmethoden IShape.getWidth und IShape.getHeight bestimmt:

ink_powerpoint1

Tintenverläufe

Ein Tintenverlauf ist ein Basiselement, das die Bahn eines Stifts aufzeichnet, während ein Benutzer digitale Tinte schreibt. Ein Verlauf speichert eine Sequenz zusammenhängender Punkte.

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

ink_powerpoint2

Pinsel‑Eigenschaften zum Zeichnen

Ein Pinsel wird verwendet, um Linien zu zeichnen, die die Punkte eines Tintenverlaufs verbinden. Der Pinsel verfügt über eine eigene Farbe und Größe, die durch die Methoden IInkBrush.getColor und IInkBrush.getSize bereitgestellt werden.

Farbe des Tintenpinsels festlegen

Dieser Java‑Code zeigt, wie die Farbe eines Tintenpinsels festgelegt wird:

import android.graphics.Color;
import com.aspose.slides.*;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    brush.setColor(Color.RED);
} finally {
    presentation.dispose();
}

Größe des Tintenpinsels festlegen

Dieser Java‑Code zeigt, wie die Größe eines Tintenpinsels festgelegt wird:

import com.aspose.slides.*;
import com.aspose.slides.android.SizeF;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    SizeF brushSize = new SizeF(5, 10);
    brush.setSize(brushSize);
} finally {
    presentation.dispose();
}

In der Regel 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 überein, zeigt PowerPoint die Größe folgendermaßen an:

ink_powerpoint3

Zur Veranschaulichung erhöhen wir die Höhe des Tintenobjekts und betrachten die wichtigen Abmessungen:

ink_powerpoint4

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

Daher muss zur Bestimmung des sichtbaren Bereichs des gesamten Tintenobjekts die Pinselgröße seiner Verläufe berücksichtigt werden. Hier wurde das Zielobjekt (der handschriftliche Textverlauf) auf die Größe des Containers (Rahmens) skaliert. Ändert sich die Größe des Containers, bleibt die Pinselgröße konstant und umgekehrt.

ink_powerpoint5

PowerPoint verwendet ein ähnliches Verhalten für Textobjekte:

ink_powerpoint6

Darstellung von Tinte beim Export und Rendering steuern

Aspose.Slides stellt das IInkOptions‑Interface bereit, um zu kontrollieren, wie Tintenobjekte in exportierten oder gerenderten Ausgaben erscheinen. Mit dessen Eigenschaften können Sie Tinte vollständig ausblenden oder ändern, wie Pinsel‑Masken‑Operationen interpretiert werden.

Tintenoptionen stehen über die Export‑ bzw. Rendering‑Optionen für mehrere Ausgabeformate zur Verfügung:

Ausgabe Eigenschaft der Tintenoptionen
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Folien‑Bild RenderingOptions.getInkOptions

Die folgenden IInkOptions‑Methoden stellen dieselben beiden Einstellungen bereit:

Tintenobjekte in PDF‑Ausgabe ausblenden

Standardmäßig bleiben Tintenobjekte beim Export sichtbar. Um eine saubere Ausgabe ohne handschriftliche Anmerkungen oder andere Tinteninhalte zu erzeugen, rufen Sie IInkOptions.setHideInk mit true auf.

Das folgende Java‑Beispiel exportiert eine Präsentation nach PDF und blendet dabei alle Tintenobjekte aus:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.getInkOptions().setHideInk(true);

    presentation.save("presentation_without_ink.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Tintenobjekte beim Rendering einer Folie als Bild ausblenden

Um Tintenobjekte beim Rendern von Folien als Bitmap‑Bilder auszublenden, konfigurieren Sie RenderingOptions.getInkOptions und übergeben Sie die Rendering‑Optionen an ISlide.getImage.

Das folgende Java‑Beispiel rendert die erste Folie als PNG‑Bild ohne Tintenobjekte:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    RenderingOptions renderingOptions = new RenderingOptions();
    renderingOptions.getInkOptions().setHideInk(true);

    ISlide slide = presentation.getSlides().get_Item(0);
    IImage image = slide.getImage(renderingOptions);
    try {
        image.save("slide_without_ink.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Masken‑Rendering für Tinte steuern

Die Einstellung IInkOptions.getInterpretMaskOpAsOpacity legt fest, wie Masken‑Operationen beim Rendern von Tintenpinseln interpretiert werden. Der Standardwert ist true, wodurch Opazität verwendet wird. Um stattdessen die ROP‑Operation zu nutzen, rufen Sie IInkOptions.setInterpretMaskOpAsOpacity mit false auf.

Das folgende Java‑Beispiel exportiert eine Folie nach SVG und verwendet ROP‑basiertes Rendering für Tintenmasken‑Operationen:

import com.aspose.slides.*;
import java.io.FileOutputStream;

Presentation presentation = new Presentation("presentation.pptx");
try {
    SVGOptions svgOptions = new SVGOptions();
    svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);

    ISlide slide = presentation.getSlides().get_Item(0);
    FileOutputStream stream = new FileOutputStream("slide.svg");
    try {
        slide.writeAsSvg(stream, svgOptions);
    } finally {
        stream.close();
    }
} finally {
    presentation.dispose();
}

Die gleiche Einstellung kann über TiffOptions.getInkOptions beim Export einer Präsentation oder beim Rendern einer Folie nach TIFF angewendet werden.

Auswählen, ob Tinte ausgeblendet oder erhalten bleiben soll

Wenn Sie eine bereinigte Version einer annotierten Präsentation für die Verteilung ohne Review‑Markierungen benötigen, rufen Sie IInkOptions.setHideInk mit true während des Exports auf.

Lassen Sie IInkOptions.getHideInk auf seinem Standardwert false, wenn Tintenantworten Teil des beabsichtigten Inhalts sind, z. B. Review‑Kommentare, handschriftliche Notizen, Hervorhebungen oder Zeichnungen, die im exportierten Ergebnis sichtbar bleiben sollen. Dadurch können Anwendungen separate Review‑ und Endausgaben aus derselben Präsentation erzeugen, ohne die Quell‑Tintenobjekte zu ändern.

FAQ

Kann ich die Farbe oder Größe eines vorhandenen Tintenstrichs ändern?

Ja. Rufen Sie den Verlauf über IInk.getTraces ab und ändern Sie anschließend dessen IInkTrace.getBrush. Verwenden Sie IInkBrush.setColor oder IInkBrush.setSize, um den Pinsel zu ändern.

Verändert das Ausblenden von Tinte die Quell‑Präsentation?

Nein. Der Aufruf von IInkOptions.setHideInk wirkt sich nur auf das gerenderte oder exportierte Ergebnis aus; er entfernt oder ändert keine Tintenobjekte in der Quell‑Präsentation.

Welche Exportformate unterstützen Tintenoptionen?

Sie können Tintenoptionen für PDF, HTML, SVG, TIFF und bitmap‑Folien‑Bilder über die entsprechenden Export‑ bzw. Rendering‑Optionen konfigurieren, die oben aufgeführt sind.

Weiterführende Literatur