Präsentationen in .NET öffnen
Einleitung
Aspose.Slides for .NET kann PowerPoint- und OpenDocument-Präsentationen aus Dateien und Streams laden. Nachdem eine Präsentation geladen wurde, können Sie ihre Struktur prüfen, Folien bearbeiten, Ressourcen verwalten und sie im ursprünglichen oder in einem anderen unterstützten Format speichern.
Das Ladeverhalten kann über die Klasse LoadOptions angepasst werden. Beispielsweise können Sie ein Öffnungspasswort angeben, große Binärobjekte außerhalb des verwalteten Speichers halten, externe Ressourcen steuern oder eingebettete Binärdaten weglassen.
Präsentationen öffnen
Nach dem Laden einer Datei oder eines Streams können Sie das ursprüngliche Präsentationsformat ermitteln, um zu entscheiden, wie Ihre Anwendung sie verarbeitet.
Um eine vorhandene Präsentation zu öffnen, übergeben Sie ihren Dateipfad an den Konstruktor von Presentation. Entsorgen Sie das Presentation-Objekt nach Gebrauch, damit Dateihandles, temporäre Daten und andere Ressourcen zügig freigegeben werden.
Das folgende C#-Beispiel zeigt, wie man eine Präsentation öffnet und die Folienzahl ermittelt:
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample.pptx");
Console.WriteLine("Slide count: " + presentation.Slides.Count);
Passwortgeschützte Präsentationen öffnen
Ein Öffnungspasswort verschlüsselt den Präsentationsinhalt. Um die gesamte Präsentation zu laden, weisen Sie das korrekte Passwort LoadOptions.Password zu und übergeben Sie die Optionen an den Presentation-Konstruktor. Das Laden schlägt fehl, wenn das Passwort fehlt oder falsch ist.
using System;
using Aspose.Slides;
var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-presentation.pptx", loadOptions);
Console.WriteLine("Slide count: " + presentation.Slides.Count);
Für Passworterkennung, -validierung und -verschlüsselungs-Workflows siehe Password-Protect Presentations. Wenn eine verschlüsselte Präsentation bewusst mit öffentlichen Dokumenteneigenschaften gespeichert wurde, können diese Eigenschaften ohne Passwort gelesen werden; siehe Manage Presentation Properties.
Große Präsentationen öffnen
LoadOptions.BlobManagementOptions steuert, wie Aspose.Slides große Binärobjekte wie Bilder, Audio und Video behandelt. Sie können die Quelldatei gesperrt lassen, temporäre Dateien zulassen und die Menge an BLOB-Daten, die im Speicher gehalten wird, begrenzen.
Der folgende C#-Code demonstriert das Laden einer großen Präsentation (z. B. 2 GB):
using Aspose.Slides;
using Aspose.Slides.Export;
const string filePath = "large-presentation.pptx";
var loadOptions = new LoadOptions
{
BlobManagementOptions =
{
PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
IsTemporaryFilesAllowed = true,
MaxBlobsBytesInMemory = 10 * 1024 * 1024
}
};
using var presentation = new Presentation(filePath, loadOptions);
presentation.Slides[0].Name = "Large presentation";
presentation.Save("large-presentation-copy.pptx", SaveFormat.Pptx);
Hinweis
Mit PresentationLockingBehavior.KeepLocked bleibt die Quelldatei gesperrt, bis das Presentation-Objekt freigegeben wird. Verschieben, überschreiben oder löschen Sie die Quelldatei nicht, solange das Objekt aktiv ist.
Aspose.Slides kann beim Laden den Inhalt eines Eingabestreams kopieren. Für große Präsentationen ist ein Dateipfad daher in der Regel effizienter als ein Stream. Siehe Manage BLOBs für weitere Speicher- und Speicherverwaltungsoptionen.
Externe Ressourcen steuern
LoadOptions.ResourceLoadingCallback akzeptiert eine Implementierung von IResourceLoadingCallback. Der Callback kann Ersatzdaten bereitstellen, eine Ressource umleiten, den Standard-Lader verwenden oder die Ressource ueberspringen. Dies ist nützlich, wenn Präsentationen externe Bilder enthalten, die gemessen an anwendungsspezifischen Sicherheits- oder Speicherregeln aufgeloest werden muessen.
using System;
using System.IO;
using Aspose.Slides;
internal static class OpenPresentationExample
{
private static void Main()
{
var loadOptions = new LoadOptions
{
ResourceLoadingCallback = new ImageLoadingHandler()
};
using var presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
Console.WriteLine("Slide count: " + presentation.Slides.Count);
}
private sealed class ImageLoadingHandler : IResourceLoadingCallback
{
public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
{
var isJpeg = args.OriginalUri.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase);
if (!isJpeg || !File.Exists("approved-image.jpg"))
{
return ResourceLoadingAction.Skip;
}
var imageData = File.ReadAllBytes("approved-image.jpg");
args.SetData(imageData);
return ResourceLoadingAction.UserProvided;
}
}
}
Präsentationen ohne eingebettete Binärobjekte laden
Eine Präsentation kann eingebettete Binärdaten enthalten, die eine Anwendung nicht benoetigt oder nicht behalten moechte. Beispiele:
- VBA-Projekte, verfuegbar ueber IPresentation.VbaProject;
- eingebettete OLE-Daten, verfuegbar ueber IOleEmbeddedDataInfo.EmbeddedFileData;
- ActiveX-Steuerungsdaten, verfuegbar ueber IControl.ActiveXControlBinary.
Setzen Sie LoadOptions.DeleteEmbeddedBinaryObjects auf true, um diese Binärdaten beim Laden zu entfernen. Speichern Sie die geladene Präsentation, um das bereinigte Ergebnis zu erhalten.
Diese Option reduziert die Gefahr unerwuenschter eingebetteter Payloads, stellt jedoch kein vollstaendiges Malware-Erkennungs- oder Inhalts-Sanitaersystem dar.
using Aspose.Slides;
using Aspose.Slides.Export;
var loadOptions = new LoadOptions
{
DeleteEmbeddedBinaryObjects = true
};
using var presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);
presentation.Save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);
FAQ
Wie kann ich feststellen, dass eine Datei beschädigt ist und nicht geoeffnet werden kann?
Aspose.Slides wirft beim Laden eine Parsing- oder Format-Ausnahme. Behandeln Sie diesen Fehler separat von einem falschen Passwort-Fehler, damit die Anwendung die Ursache korrekt melden kann.
Was passiert, wenn erforderliche Schriften fehlen?
Die Präsentation kann dennoch geladen werden, aber Rendering und Export koennen Schriften substituieren. Sie können die Schriftart-Substitution konfigurieren oder benutzerdefinierte Schriften bereitstellen, um das Ausgabeergebnis vorhersehbarer zu machen.
Wird beim Laden einer Präsentation auch deren eingebettete Medien geladen?
Eingebettete Audio- und Videodaten werden ueber das Praesentation-Objektmodell verfuegbar. Externe Ressourcen werden gemaess dem konfigurierten Ressourcen-Ladeverhalten aufgeloest und koennen nicht verfuegbar sein, wenn ihre Speicherorte nicht erreichbar sind.