C# ppt文件转换为pdf文件

使用第三方插件 Office 实现转换

1.Application方式转换

csharp 复制代码
        /// <summary>
        /// Microsoft.Office.Interop.PowerPoint
        /// 使用第三方软件 office
        /// </summary>
        /// <param name="pptPath">需要转换的ppt文件路径</param>
        /// <param name="pdfPath">转换后的路径</param>
        public static void OfferPptToPdf(string pptPath, string pdfPath)
        {
            try
            {
                pdfPath=pdfPath.Replace('/', '\\');
                //创建对象 并且打开ppt文件
                Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
                Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Open(pptPath, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);

                //if (!File.Exists(newfilePath))//不存在
                //{
                //ppt文件 保存为pdf文件
                pptPresentation.SaveAs(pdfPath, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF, Microsoft.Office.Core.MsoTriState.msoFalse);
                //}

                //关闭对象
                pptPresentation.Close();
            }
            catch (Exception ex)
            {

                throw;
            }
        }

2.ApplicationClass方式转换

csharp 复制代码
        /// <summary>
        /// Microsoft.Office.Interop.PowerPoint
        /// 把PowerPoing文件转换成PDF格式文件
        /// </summary>
        /// <param name="pptPath">源文件路径</param>
        /// <param name="pdfPath">目标文件路径</param>
        /// <returns>true=转换成功</returns>
        public static bool PPTConvertToPDF(string pptPath, string pdfPath)
        {
            bool result;

            pdfPath = pdfPath.Replace('/', '\\');
            Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType targetFileType = Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF;
            object missing = Type.Missing;
            Microsoft.Office.Interop.PowerPoint.ApplicationClass application = null;
            Microsoft.Office.Interop.PowerPoint.Presentation persentation = null;
            try
            {
                application = new Microsoft.Office.Interop.PowerPoint.ApplicationClass();
                persentation = application.Presentations.Open(pptPath, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
                persentation.SaveAs(pdfPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);

                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }
            finally
            {
                if (persentation != null)
                {
                    persentation.Close();
                    persentation = null;
                }
                if (application != null)
                {
                    application.Quit();
                    application = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return result;
        }

使用第三方插件 Spire.Presentation 实现转换

csharp 复制代码
        /// <summary>
        /// Spire.Presentation 正版需要付费
        /// </summary>
        /// <param name="pptPath"></param>
        /// <param name="pdfPath"></param>
        public static void pptToPdf(string pptPath, string pdfPath)
        {
            Spire.Presentation.Presentation presentation = new Spire.Presentation.Presentation();
            presentation.LoadFromFile(pptPath);
            presentation.SaveToFile(pdfPath, Spire.Presentation.FileFormat.PDF);
        }

使用第三方插件 Aspose.Slides 实现转换

csharp 复制代码
        public const string Key =
            "PExpY2Vuc2U+DQogIDxEYXRhPg0KICAgIDxMaWNlbnNlZFRvPkFzcG9zZSBTY290bGFuZCB" +
            "UZWFtPC9MaWNlbnNlZFRvPg0KICAgIDxFbWFpbFRvPmJpbGx5Lmx1bmRpZUBhc3Bvc2UuY2" +
            "9tPC9FbWFpbFRvPg0KICAgIDxMaWNlbnNlVHlwZT5EZXZlbG9wZXIgT0VNPC9MaWNlbnNlV" +
            "HlwZT4NCiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1p" +
            "dGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+DQogICAgPE9yZGVySUQ+MTQ" +
            "wNDA4MDUyMzI0PC9PcmRlcklEPg0KICAgIDxVc2VySUQ+OTQyMzY8L1VzZXJJRD4NCiAgIC" +
            "A8T0VNPlRoaXMgaXMgYSByZWRpc3RyaWJ1dGFibGUgbGljZW5zZTwvT0VNPg0KICAgIDxQc" +
            "m9kdWN0cz4NCiAgICAgIDxQcm9kdWN0PkFzcG9zZS5Ub3RhbCBmb3IgLk5FVDwvUHJvZHVj" +
            "dD4NCiAgICA8L1Byb2R1Y3RzPg0KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl" +
            "0aW9uVHlwZT4NCiAgICA8U2VyaWFsTnVtYmVyPjlhNTk1NDdjLTQxZjAtNDI4Yi1iYTcyLT" +
            "djNDM2OGYxNTFkNzwvU2VyaWFsTnVtYmVyPg0KICAgIDxTdWJzY3JpcHRpb25FeHBpcnk+M" +
            "jAxNTEyMzE8L1N1YnNjcmlwdGlvbkV4cGlyeT4NCiAgICA8TGljZW5zZVZlcnNpb24+My4w" +
            "PC9MaWNlbnNlVmVyc2lvbj4NCiAgICA8TGljZW5zZUluc3RydWN0aW9ucz5odHRwOi8vd3d" +
            "3LmFzcG9zZS5jb20vY29ycG9yYXRlL3B1cmNoYXNlL2xpY2Vuc2UtaW5zdHJ1Y3Rpb25zLm" +
            "FzcHg8L0xpY2Vuc2VJbnN0cnVjdGlvbnM+DQogIDwvRGF0YT4NCiAgPFNpZ25hdHVyZT5GT" +
            "zNQSHNibGdEdDhGNTlzTVQxbDFhbXlpOXFrMlY2RThkUWtJUDdMZFRKU3hEaWJORUZ1MXpP" +
            "aW5RYnFGZkt2L3J1dHR2Y3hvUk9rYzF0VWUwRHRPNmNQMVpmNkowVmVtZ1NZOGkvTFpFQ1R" +
            "Hc3pScUpWUVJaME1vVm5CaHVQQUprNWVsaTdmaFZjRjhoV2QzRTRYUTNMemZtSkN1YWoyTk" +
            "V0ZVJpNUhyZmc9PC9TaWduYXR1cmU+DQo8L0xpY2Vuc2U+";
        //去掉水印
        //new Aspose.Slides.License().SetLicense(new MemoryStream(Convert.FromBase64String(Key)));

        /// <summary>
        /// Aspose.Slides 正版需要付费
        /// ppt文件转化为pdf文件  AsposepptToPdf
        /// </summary>
        /// <param name="pptPath"></param>
        /// <param name="pdfPath"></param>
        /// <returns></returns>
        public static bool AsposepptToPdf(string pptPath, string pdfPath)
        {
            try
            {
                new Aspose.Slides.License().SetLicense(new MemoryStream(Convert.FromBase64String(Key)));
                Aspose.Slides.Presentation ppt = new Aspose.Slides.Presentation(pptPath);
                FileStream fileOS = new FileStream(pdfPath, FileMode.Create);
                ppt.Save(fileOS, Aspose.Slides.Export.SaveFormat.Pdf);
                return true;

            }
            catch (Exception ex)
            {
                return false;
            }
        }

ppt转换帮助类

csharp 复制代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;

namespace TTApi.Methods
{
    /// <summary>
    /// Aspose.Slides v:15.1.0
    /// Spire.Presentation
    /// Microsoft.Office.Interop.PowerPoint
    /// ppt转换为pdf
    /// </summary>
    public class PresentationHelper
    {
        public const string Key =
            "PExpY2Vuc2U+DQogIDxEYXRhPg0KICAgIDxMaWNlbnNlZFRvPkFzcG9zZSBTY290bGFuZCB" +
            "UZWFtPC9MaWNlbnNlZFRvPg0KICAgIDxFbWFpbFRvPmJpbGx5Lmx1bmRpZUBhc3Bvc2UuY2" +
            "9tPC9FbWFpbFRvPg0KICAgIDxMaWNlbnNlVHlwZT5EZXZlbG9wZXIgT0VNPC9MaWNlbnNlV" +
            "HlwZT4NCiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1p" +
            "dGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+DQogICAgPE9yZGVySUQ+MTQ" +
            "wNDA4MDUyMzI0PC9PcmRlcklEPg0KICAgIDxVc2VySUQ+OTQyMzY8L1VzZXJJRD4NCiAgIC" +
            "A8T0VNPlRoaXMgaXMgYSByZWRpc3RyaWJ1dGFibGUgbGljZW5zZTwvT0VNPg0KICAgIDxQc" +
            "m9kdWN0cz4NCiAgICAgIDxQcm9kdWN0PkFzcG9zZS5Ub3RhbCBmb3IgLk5FVDwvUHJvZHVj" +
            "dD4NCiAgICA8L1Byb2R1Y3RzPg0KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl" +
            "0aW9uVHlwZT4NCiAgICA8U2VyaWFsTnVtYmVyPjlhNTk1NDdjLTQxZjAtNDI4Yi1iYTcyLT" +
            "djNDM2OGYxNTFkNzwvU2VyaWFsTnVtYmVyPg0KICAgIDxTdWJzY3JpcHRpb25FeHBpcnk+M" +
            "jAxNTEyMzE8L1N1YnNjcmlwdGlvbkV4cGlyeT4NCiAgICA8TGljZW5zZVZlcnNpb24+My4w" +
            "PC9MaWNlbnNlVmVyc2lvbj4NCiAgICA8TGljZW5zZUluc3RydWN0aW9ucz5odHRwOi8vd3d" +
            "3LmFzcG9zZS5jb20vY29ycG9yYXRlL3B1cmNoYXNlL2xpY2Vuc2UtaW5zdHJ1Y3Rpb25zLm" +
            "FzcHg8L0xpY2Vuc2VJbnN0cnVjdGlvbnM+DQogIDwvRGF0YT4NCiAgPFNpZ25hdHVyZT5GT" +
            "zNQSHNibGdEdDhGNTlzTVQxbDFhbXlpOXFrMlY2RThkUWtJUDdMZFRKU3hEaWJORUZ1MXpP" +
            "aW5RYnFGZkt2L3J1dHR2Y3hvUk9rYzF0VWUwRHRPNmNQMVpmNkowVmVtZ1NZOGkvTFpFQ1R" +
            "Hc3pScUpWUVJaME1vVm5CaHVQQUprNWVsaTdmaFZjRjhoV2QzRTRYUTNMemZtSkN1YWoyTk" +
            "V0ZVJpNUhyZmc9PC9TaWduYXR1cmU+DQo8L0xpY2Vuc2U+";
        //去掉水印
        //new Aspose.Slides.License().SetLicense(new MemoryStream(Convert.FromBase64String(Key)));

        /// <summary>
        /// Aspose.Slides 正版需要付费
        /// ppt文件转化为pdf文件  AsposepptToPdf
        /// </summary>
        /// <param name="pptPath"></param>
        /// <param name="pdfPath"></param>
        /// <returns></returns>
        public static bool AsposepptToPdf(string pptPath, string pdfPath)
        {
            try
            {
                new Aspose.Slides.License().SetLicense(new MemoryStream(Convert.FromBase64String(Key)));
                Aspose.Slides.Presentation ppt = new Aspose.Slides.Presentation(pptPath);
                FileStream fileOS = new FileStream(pdfPath, FileMode.Create);
                ppt.Save(fileOS, Aspose.Slides.Export.SaveFormat.Pdf);
                return true;

            }
            catch (Exception ex)
            {
                return false;
            }
        }


        /// <summary>
        /// Spire.Presentation 正版需要付费
        /// </summary>
        /// <param name="pptPath"></param>
        /// <param name="pdfPath"></param>
        public static void pptToPdf(string pptPath, string pdfPath)
        {
            Spire.Presentation.Presentation presentation = new Spire.Presentation.Presentation();
            presentation.LoadFromFile(pptPath);
            presentation.SaveToFile(pdfPath, Spire.Presentation.FileFormat.PDF);
        }


        /// <summary>
        /// Microsoft.Office.Interop.PowerPoint
        /// 使用第三方软件 office
        /// </summary>
        /// <param name="pptPath">需要转换的ppt文件路径</param>
        /// <param name="pdfPath">转换后的路径</param>
        public static void OfferPptToPdf(string pptPath, string pdfPath)
        {
            try
            {
                pdfPath=pdfPath.Replace('/', '\\');
                //创建对象 并且打开ppt文件
                Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
                Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Open(pptPath, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);

                //if (!File.Exists(newfilePath))//不存在
                //{
                //ppt文件 保存为pdf文件
                pptPresentation.SaveAs(pdfPath, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF, Microsoft.Office.Core.MsoTriState.msoFalse);
                //}

                //关闭对象
                pptPresentation.Close();
            }
            catch (Exception ex)
            {

                throw;
            }
        }


        /// <summary>
        /// Microsoft.Office.Interop.PowerPoint
        /// 把PowerPoing文件转换成PDF格式文件
        /// </summary>
        /// <param name="pptPath">源文件路径</param>
        /// <param name="pdfPath">目标文件路径</param>
        /// <returns>true=转换成功</returns>
        public static bool PPTConvertToPDF(string pptPath, string pdfPath)
        {
            bool result;

            pdfPath = pdfPath.Replace('/', '\\');
            Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType targetFileType = Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF;
            object missing = Type.Missing;
            Microsoft.Office.Interop.PowerPoint.ApplicationClass application = null;
            Microsoft.Office.Interop.PowerPoint.Presentation persentation = null;
            try
            {
                application = new Microsoft.Office.Interop.PowerPoint.ApplicationClass();
                persentation = application.Presentations.Open(pptPath, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
                persentation.SaveAs(pdfPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);

                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }
            finally
            {
                if (persentation != null)
                {
                    persentation.Close();
                    persentation = null;
                }
                if (application != null)
                {
                    application.Quit();
                    application = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return result;
        }

    }
}
相关推荐
hez20103 天前
在 .NET 上构建超大托管数组
c#·.net·.net core·gc·clr
雨落倾城夏未凉9 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫10 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫11 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m62511 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户917215619021111 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠12 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫14 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech14 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf16 天前
C#摸鱼实录——IoC与DI案例详解
c#