winform把Office转成PDF文件

 更新时间:2022年06月14日 09:59:07   作者:springsnow  
这篇文章介绍了winform把Office转成PDF文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

先要把word或ppt转换为pdf; 以pdf的格式展示,防止文件拷贝。

转换方法

1、安装Word、Excel、PowerPoint组件

注意:需安装Microsoft.Office.Interop.Word\Excel\PowerPoint组件。

程序集如下:

2、转换代码

(1)将Word转换为pdf: 

using Microsoft.Office.Core;
using System;
using System.IO;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Word = Microsoft.Office.Interop.Word;

namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bool isSuccess = DOCConvertToPDF(Directory.GetCurrentDirectory() + "\\aa.docx", Directory.GetCurrentDirectory() + "\\aa.pdf");
            if (isSuccess)
            {
                pdfViewer1.LoadFromFile(Directory.GetCurrentDirectory() + "\\aa.pdf");
            }
        }

        /// <summary>
        /// Word转换成pdf
        /// </summary>
        /// <param name="sourcePath">源文件路径</param>
        /// <param name="targetPath">目标文件路径</param>
        /// <returns>true=转换成功</returns>
        public static bool DOCConvertToPDF(string sourcePath, string targetPath)
        {
            bool result = false;
            Word.Application app = new Word.Application();
            Word.Document doc = null;
            object missing = System.Reflection.Missing.Value;
            object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
            try
            {
                app.Visible = false;
                doc = app.Documents.Open(sourcePath);
                doc.ExportAsFixedFormat(targetPath, Word.WdExportFormat.wdExportFormatPDF);
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
                throw new ApplicationException(ex.Message);
            }
            finally
            {
                if (doc != null)
                {
                    doc.Close(ref saveChanges, ref missing, ref missing);
                    doc = null;
                }
                if (app != null)
                {
                    app.Quit(ref missing, ref missing, ref missing);
                    app = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return result;
        }

    }
}

(2)把Excel文件转换成PDF格式文件

/// <summary>
/// 把Excel文件转换成PDF格式文件
/// </summary>
/// <param name="sourcePath">源文件路径</param>
/// <param name="targetPath">目标文件路径</param>
/// <returns>true=转换成功</returns>
public static bool XLSConvertToPDF(string sourcePath, string targetPath)
{
    bool result = false;
    Excel.XlFixedFormatType targetType = Excel.XlFixedFormatType.xlTypePDF;
    object missing = Type.Missing;
    Excel.Application app = null;
    Excel.Workbook book = null;
    try
    {
        app = new Excel.Application();
        object target = targetPath;
        object type = targetType;
        book = app.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
        missing, missing, missing, missing, missing, missing, missing, missing, missing);
        book.ExportAsFixedFormat(targetType, target, Excel.XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
        result = true;
    }
    catch (Exception ex)
    {
        result = false;
        throw new ApplicationException(ex.Message);
    }
    finally
    {
        if (book != null)
        {
            book.Close(true, missing, missing);
            book = null;
        }
        if (app != null)
        {
            app.Quit();
            app = null;
        }
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
    return result;
}

(3)把PowerPoint文件转换成PDF格式文件

///<summary>
/// 把PowerPoint文件转换成PDF格式文件
///</summary>
///<param name="sourcePath">源文件路径</param>
///<param name="targetPath">目标文件路径</param>
///<returns>true=转换成功</returns>
public static bool PPTConvertToPDF(string sourcePath, string targetPath)
{
    bool result = false;

    PowerPoint.PpSaveAsFileType targetFileType = PowerPoint.PpSaveAsFileType.ppSaveAsPDF;
    object missing = Type.Missing;
    PowerPoint.Application app = null;
    PowerPoint.Presentation pres = null;
    try
    {
        app = new PowerPoint.Application();
        pres = app.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
        pres.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
        result = true;
    }
    catch (Exception ex)
    {
        result = false;
        throw new ApplicationException(ex.Message);
    }
    finally
    {
        if (pres != null)
        {
            pres.Close();
            pres = null;
        }
        if (app != null)
        {
            app.Quit();
            app = null;
        }
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
    return result;
}

到此这篇关于winform把Office转成PDF文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#程序员应该养成的程序性能优化写法

    C#程序员应该养成的程序性能优化写法

    工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率,其实这对大多数程序猿来说都是没有问题的,不过作为一只有理想的CodeMonkey,我还是希望给大家分享一些性能优化心得
    2017-08-08
  • 深入解析:打造自动消失的对话框

    深入解析:打造自动消失的对话框

    本篇文章是对打造自动消失的对话框进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c#程序定期把内存信息记录到log日志示例

    c#程序定期把内存信息记录到log日志示例

    这篇文章主要介绍了c#程序定期把内存信息记录到log日志示例,需要的朋友可以参考下
    2014-04-04
  • Unity Shader实现线框效果的制作步骤

    Unity Shader实现线框效果的制作步骤

    最近比较忙,今天抽空给大家分享一篇文章,关于Unity Shader实现线框效果,本文给大家分享详细制作步骤,通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-06-06
  • C# Unity使用正则表达式去除部分富文本的代码示例

    C# Unity使用正则表达式去除部分富文本的代码示例

    正则表达式在我们日常开发中的用处不用多说了吧,下面这篇文章主要给大家介绍了关于C# Unity使用正则表达式去除部分富文本的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • 利用C#守护Python进程的方法

    利用C#守护Python进程的方法

    这篇文章主要给大家介绍了关于如何利用C#守护Python进程的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • C# Guid长度雪花简单生成器的示例代码

    C# Guid长度雪花简单生成器的示例代码

    这篇文章主要介绍了C# Guid长度雪花简单生成器的示例代码,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • Unity接入高德开放API实现IP定位

    Unity接入高德开放API实现IP定位

    这篇文章主要为大家介绍了Unity如何接入高德开放API实现IP定位功能,文中的示例代码讲解详细,对我们学习或工作有一定参考价值,需要的可以参考一下
    2022-04-04
  • C# OpenFileDialog对话框控件的使用

    C# OpenFileDialog对话框控件的使用

    OpenFileDialog是C#中常用的对话框控件,用于让用户选择文件,本文就来介绍一下OpenFileDialog对话框控件的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • C#如何通过匿名类直接使用访问JSON数据详解

    C#如何通过匿名类直接使用访问JSON数据详解

    这篇文章主要给大家介绍了关于C#如何通过匿名类直接使用访问JSON数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2018-02-02

最新评论