Better than MS Automation
Given that Microsoft Office is installed on most business desktops, it is tempting to use the Microsoft PowerPoint Object Library. The following table presents some good reasons not to do this:
|Microsoft PowerPoint Automation||GemBox.Presentation|
|Requires a license for Microsoft PowerPoint on every client machine.||Requires only the developer using our component to have just one GemBox.Presentation developer license, even if the developed application will be installed on thousands of client machines.|
|Requires all client machines to have the same version of Microsoft PowerPoint installed.||Files generated with GemBox.Presentation are compatible with PowerPoint (2007, 2010, 2013 and 2016), OpenOffice and LibreOffice, so any of these products can be (but don’t have to be) be installed on a client machine.|
|When using Automation, PowerPoint is loaded in the background, taking a few MB and loading a large number of files and DLLs.||GemBox.Presentation is a single component taking around 0.7 MB. Additional memory is allocated only when needed to perform certain operations.|
|Microsoft PowerPoint was designed as a UI application and so the API is very slow. Generating a simple presentation with 30 slides took 9.2 seconds on our test machine.||GemBox.Presentation is designed for processing large numbers of PowerPoint files. The same test took 0.44 seconds on our test machine (20 times faster than Microsoft PowerPoint).|
|Microsoft PowerPoint API is exposed as a COM object. This results in the same disadvantages as with calling any COM object from the managed code (type conversions, need for a COM wrapper, poor integration with .NET Framework etc.).||GemBox.Presentation is a pure .NET component, designed and developed to conform to Microsoft standards for .NET libraries.|
Outperforming the Competition
When comparing and evaluating different presentation reading/writing products, don’t forget the following considerations.
Plain and Fair Licensing
We don’t charge additional server licenses. You can use our component for an unlimited number of projects (you don’t need to purchase additional “OEM licenses”). Also, we don’t force you to purchase subscription packages.
Our licensing is very simple: every developer working with our component needs to be covered by a developer license. We don’t care if it is a Windows or web application, how many servers you use or if you have just one or millions of customers.
In the case of desktop applications, you don’t want your user to wait 20 seconds for every single presentation. In the case of web applications, you want your server to simultaneously support as many users as possible. On our test machine GemBox.Presentation needs 0.5 seconds to read and write a single PPTX file with 10 slides (around three shapes and 100 words on each slide with various formatting).
Performance example is included in the GemBox.Presentation Examples, so you are free to do the test yourself and see how our component performs with the data you require.
Clean, Easy-to-Use API
GemBox.Presentation is designed and developed to conform to Microsoft standards for .NET libraries and enables you to access presentation elements in a more natural way. For example, the same task of setting a shape fill with GemBox.Presentation looks like this:
shape.Format.Fill.SetPattern(PatternFillType.HorizontalBrick, Color.FromRgb(255, 0, 0), Color.FromRgb(0, 255, 0));
With Automation, it looks like this:
shape.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(0, 255, 0).ToArgb();
shape.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
100% Managed Code
Some similar products (and actually Microsoft PowerPoint Automation) are old COM components with .NET RCW (Runtime Callable Wrapper). This may create many performance and interoperability disadvantages as every method call you make goes through the wrapper until it reaches C++ code. On the other hand, our GemBox.Presentation component is 100% managed, written entirely in C# and designed to support Visual Basic .NET and C# in an equal manner.