PPT kümmert sich um das Evangelium! Die neueste Version von Aspose implementiert eine autonome plattformübergreifende 3D-Engine

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:

Die neueste Funktion der PPT-Verarbeitungssteuerung Aspose.Slides ist freigegeben!  Realisieren Sie eine autonome plattformübergreifende 3D-Engine

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.


Ich denke du magst

Origin blog.51cto.com/14948016/2538971
Empfohlen
Rangfolge