Aspose.Slides for .NET ist eine einzigartige API für die Präsentationsverarbeitung, mit der Anwendungen PowerPoint-Präsentationen lesen, schreiben, ändern und konvertieren können. Als unabhängige API bietet es Funktionen zum Verwalten der wichtigsten Funktionen von PowerPoint, z. B. zum Verwalten von Text, Formen, Tabellen und Animationen, Hinzufügen von Audio und Video zu Folien, Vorschau von Folien usw., ohne dass Microsoft PowerPoint erforderlich ist.
Aspose.Slides für .NET leitete das Update v20.9 vom September 2020 ein, das eine unabhängige plattformübergreifende 3D-Engine implementiert, ein ID-Attribut generiert, das einen einzelnen tspan in SVG unterstützt, und viele Probleme wie Ausnahmen beim Speichern von PPT-Dateien behebt.
Spezifischer Update-Inhalt
Schlüssel | Überblick | Kategorie |
---|---|---|
SLIDESNET-42081 | Generieren Sie ein ID-Attribut, das einen einzelnen tspan in SVG unterstützt | Erweiterte Funktion |
SLIDESNET-42123 | Beim Speichern der PPT-Datei ist eine Ausnahme aufgetreten | Bug-Fix |
SLIDESNET-42117 | Audio-Frames werden nicht über VideoPlayerHtmlController nach HTML exportiert | Bug-Fix |
SLIDESNET-42111 | Im exportierten PDF fehlt Text | Bug-Fix |
SLIDESNET-42098 | Der Vorgang zum Generieren eines Baumdiagramms mit leeren Daten ist falsch. | Bug-Fix |
SLIDESNET-42096 | Schieben Sie die Form in der generierten Miniaturansicht, um sie zu leeren | Bug-Fix |
SLIDESNET-42094 | Gruppenform WriteAsSvg () - Rotation verloren | Bug-Fix |
Öffentliche API-Änderungen
3D-Unterstützung hinzufügen
Ankündigung einer eigenen plattformübergreifenden 3D-Engine in Aspose.Slides 20.9. Die neue 3D-Engine kann Formen und Texte mit 3D-Effekten exportieren und rastern.
In der vorherigen Version wurde die "Diashow" -Form mit dem angewendeten 3D-Effekt flach gerendert. Jetzt können jedoch ausgereifte 3D-Rendering-Formen verwendet werden. Darüber hinaus ist es jetzt möglich, Formen mit 3D-Effekten über die öffentliche API von Slides zu erstellen:
using (Presentation pres = new Presentation ()) { IAutoShape shape = pres.Slides [0] .Shapes.AddAutoShape (ShapeType.Rectangle, 200, 150, 200, 200); shape.TextFrame.Text = "3D"; shape.TextFrame.Paragraphs [0] .ParagraphFormat.DefaultPortionFormat.FontHeight = 64; shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront; shape.ThreeDFormat.Camera.SetRotation (20, 30, 40); shape.ThreeDFormat.LightRig.LightType = LightRigPresetType.Flat; shape.ThreeDFormat.LightRig.Direction = LightingDirection.Top; shape.ThreeDFormat.Material = MaterialPresetType.Powder; shape.ThreeDFormat.ExtrusionHeight = 100; shape.ThreeDFormat.ExtrusionColor.Color = Color.Blue; pres.Slides [0] .GetThumbnail (2, 2) .Save ("sample_3d.png"); pres.Save ("sandbox_3d.pptx", SaveFormat.Pptx);}
Das gerenderte Miniaturbild sieht folgendermaßen aus:
Fügen Sie die IBulletFormatEffectiveData.FillFormat-Eigenschaft hinzu
Die neue FillFormat-Eigenschaft wurde der IBulletFormatEffectiveData-Schnittstelle hinzugefügt. Verwenden Sie diese Eigenschaft, um den effektiven Wert der Absatzauffüllung zu erhalten.
Das folgende Codeausschnitt zeigt, wie die ausgefüllten gültigen Daten für Aufzählungszeichen abgerufen werden:
using (Presentation pres = new Presentation ("SomePresentation.pptx")) {// Angenommen, die erste Form auf der ersten Folie ist AutoShape mit Text ... // Informationen zu den Aufzählungszeichen von Textabschnitten ausgeben AutoShape autoShape = (AutoShape) pres.Slides [0] .Shapes [0]; foreach (Absatz in autoShape.TextFrame.Paragraphs) { IBulletFormatEffectiveData bullFormatEffective = para.ParagraphFormat.Bullet.GetEffective (); Console.WriteLine ("Aufzählungszeichen:" + bulletFormatEffective.Type); if (bulletFormatEffective.Type! = BulletType.None) { Console.WriteLine ("Bullet Fill Type:" + BulletFormatEffective.FillFormat.FillType); switch (BulletFormatEffective.FillFormat.FillType) Console.WriteLine ("Anzahl der Gradientenstopps:" + bullFormatEffective.FillFormat.GradientFormat.GradientStops.Count); foreach (IGradientStopEffectiveData gradStop in bullFormatEffective.FillFormat.GradientFormat.GradientStops) {case FillType.Solid: Console.WriteLine ("Volltonfarbe:" + bullFormatEffective.FillFormat.SolidFillColor); Unterbrechung; case FillType.Gradient: Console.WriteLine (gradStop.Position + ":" + gradStop.Color); Unterbrechung; case FillType.Pattern: Console.WriteLine ("Musterstil:" + bulletFormatEffective.FillFormat.PatternFormat.PatternStyle); Console.WriteLine ("Vorfarbe:" + bulletFormatEffective.FillFormat.PatternFormat.ForeColor); Console.WriteLine ("Hintergrundfarbe:" + BulletFormatEffective.FillFormat.PatternFormat.BackColor); Unterbrechung; }} } Console.WriteLine (); } }
Anwendungsbeispiel für Aspose.Slides.Export.Web-Mitglieder
Das folgende Codebeispiel zeigt die tatsächliche Anwendung von Aspose.Slides.Export.Web-Mitgliedern. Es stellt eine Erweiterung der Presentation-Klasse dar, mit der ein WebDocument-Objekt erstellt und festgelegt wird, mit dem die Präsentation als HTML gespeichert wird. Beachten Sie, dass die Konvertierungsvorlage im Beispiel nicht enthalten ist.
öffentliche statische Klasse PresentationExtensions {öffentliches statisches WebDocument ToSinglePageWebDocument (diese Präsentation pres, WebDocumentOptions-Optionen, Zeichenfolge templatesPath, Zeichenfolge outputPath) { WebDocument document = new WebDocument (Optionen); SetGlobals (Dokument, Optionen, Ausgabepfad); document.Global.Put ("slidePath", outputPath); document.Global.Put ("stylesPath", outputPath); document.AddCommonInputOutput (options, templatesPath, outputPath, pres); Rückgabedokument; }} private static void SetGlobals (WebDocument-Dokument, WebDocumentOptions-Optionen, Zeichenfolge outputPath) {string imagesPath = Path.Combine (outputPath, "images"); Zeichenfolge fontsPath = Path.Combine (outputPath, "fonts"); Zeichenfolge mediaPath = Path.Combine (outputPath, "media"); document.Global.Put ("slideMargin", 10); document.Global.Put ("embeddedImages", options.EmbedImages); document.Global.Put ("imagesPath", imagesPath); document.Global.Put ("fontsPath", fontsPath); document.Global.Put ("mediaPath", mediaPath); }} private static void AddCommonInputOutput (dieses WebDocument-Dokument, WebDocumentOptions-Optionen, Zeichenfolge templatesPath, Zeichenfolge outputPath, Presentation pres) {string stylesPath = document.Global.Get <string> ("stylesPath"); document.Input.AddTemplate <Präsentation> ("styles-pres", Path.Combine (templatesPath, @ "styles \ pres.css")); document.Input.AddTemplate <MasterSlide> ("styles-master", Path.Combine (templatesPath, @ "styles \ master.css")); document.Input.AddTemplate <Präsentation> ("index", Path.Combine (templatesPath, "index.html")); document.Input.AddTemplate <Slide> ("slide", Path.Combine (templatesPath, "slide.html")); document.Input.AddTemplate <AutoShape> ("autoshape", Path.Combine (templatesPath, "autoshape.html")); document.Input.AddTemplate <TextFrame> ("Textframe", Path.Combine (templatesPath, "textframe.html")); document.Input.AddTemplate <Paragraph> ("Absatz", Path.Combine (templatesPath, "Absatz.html")); document.Input.AddTemplate <Paragraph> ("bull", Path.Combine (templatesPath, "bull.html")); document.Input.AddTemplate <Portion> ("portion", Path.Combine (templatesPath, "portion.html")); document.Input.AddTemplate <VideoFrame> ("Videoframe", Path.Combine (templatesPath, "videoframe.html")); document.Input.AddTemplate <PictureFrame> ("pictureframe", Path.Combine (templatesPath, "pictureframe.html")); document.Input.AddTemplate <Tabelle> ("Tabelle", Path.Combine (templatesPath, "table.html")); document.Input.AddTemplate <Form> ("shape", Path.Combine (templatesPath, "shape.html")); document.Output.Add (Path.Combine (outputPath, "index.html"), "index", pres); document.Output.Add (Path.Combine (stylesPath, "pres.css"), "styles-pres", pres); document.Output.Add (Path.Combine (stylesPath, "master.css"), "styles-master", (MasterSlide) pres.Masters [0]); if (! options.EmbedImages) Meister [0]); if (! options.EmbedImages) Meister [0]); if (! options.EmbedImages) {string imagesPath = document.Global.Get <string> ("imagesPath"); document.AddImagesOutput (imagesPath, pres); } } private static void AddImagesOutput (dieses WebDocument-Dokument, Zeichenfolge outputPath, Presentation pres) {for (int index = 0; index <pres.Images.Count; index ++) { IPPImage image = pres.Images [index]; String-Pfad; string ext; if (image.ContentType == "image / x-emf" || image.ContentType == "image / x-wmf") // Metadatei als PNG speichern, damit sie von verschiedenen Browsern unterstützt wird { ext = "png"; path = Path.Combine (outputPath, string.Format ("image {0}. {1}", index, ext)); var bitmap = ImageHelper.MetafileToBitmap (Bild); document.Output.Add (Pfad, neue ThumbnailOutputFile (Bitmap), Bild); fortsetzen; } ext = MimeTypesMap.GetExtension (image.ContentType); path = Path.Combine (outputPath, string.Format ("image {0}. {1}", index, ext)); document.Output.Add (Pfad, Bild); } } }
Wenn Sie Fragen oder Bedürfnisse haben, können Sie sich gerne der technischen Austauschgruppe von Aspose ( 642018183 ) anschließen.。