加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# 将多个office文件转换及合并为一个PDF文件

发布时间:2020-12-16 01:09:29 所属栏目:百科 来源:网络整理
导读:PDF 文件介绍 PDF(Portable Document Format?)文件源于20世纪90年代初期,如今早已成为了一种最流行的的文件格式之一。因为PDF文件有很多优点: 支持跨平台和跨设备共享 可以通过密码保护方式来阻止复制和编辑 将各种文本文档、图片、音频、三维地图等合并

PDF文件介绍

PDF(Portable Document Format?)文件源于20世纪90年代初期,如今早已成为了一种最流行的的文件格式之一。因为PDF文件有很多优点:

  • 支持跨平台和跨设备共享

  • 可以通过密码保护方式来阻止复制和编辑

  • 将各种文本文档、图片、音频、三维地图等合并为一个PDF文件时,依然可以完好的保存所有的源文件信息等

因此,有些时候为了方便共享文件,你可能需要把其他格式的文件如Word,Excel以及 PowerPoint文件转换为PDF格式。本文将向你介绍如何使用Spire.Office软件,通过C#编程的方式,

将多个office文件转换及合并到一个PDF文件。并且在转换过程中,你还可以根据自己的需要来改变PDF文件的尺寸。

?

Spire.Office简介?

Spire.Office是一款强大的.NET类库,通过它,编程者可以在任何一个.NET平台上操作MS Word,Excel,PowerPoint和PDF文档。首先,请在e-iceblue website上下载Spire.Office软

件,其次添加相关的.dll文件引用至Visual Studio。

???????????????????????

下面我们就来看看怎样通过这款软件来实现上述要求的功能。

代码片段:

第一步:创建一个winform应用程序,定义Form1并像下图这样设置;

?

第二步:定义btnAdd_Click方法,通过OpenFileDialog、添加文件路径到listbox来选择目标文件;

private void btnAdd_Click(object sender,EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "All files (*.docx,*.pdf,*.pptx,*.pdf)|*.docx;*.pdf;*.pptx;*.xlsx";
    ofd.Multiselect=true;
    if (DialogResult.OK == ofd.ShowDialog())
    {
        string[] files = ofd.FileNames;
        listBox1.Items.AddRange(files);
    }
}


第三步:通过MemoryStream将不同格式的文件转换为PDF文件,然后把它们合并为一个PDF文件。

值得指出的是,当你将不同类型的文件合并为一个PDF文件时,你会发现不同类型的文件大小也不相同。例如,PowerPoint文件的页面大小和Word或Excel文件的页面大小完全不同。如果你

想保持合并文档的整洁美观,可以创建一个新的、页面大小固定的PDF文件,然后复制合并文件的内容到这个新的PDF文件里面。

void btnMerge_Click(//将其他格式的文件转换为PDF文件
    string ext=string.Empty;
    foreach (object item in listBox1.Items)
    {
        ext=Path.GetExtension(item.ToString());
        switch (ext)
        {
            case .docx:
                using (MemoryStream ms =  MemoryStream())
                {
                    Document doc =  Document(item.ToString());
                    doc.SaveToStream(ms,Spire.Doc.FileFormat.PDF);
                    PdfFiles.Add( PdfDocument(ms));
                }
                break;
            .pdf:
                PdfFiles.Add( PdfDocument(item.ToString()));
                .pptx MemoryStream())
                {
                    Presentation ppt =  Presentation(item.ToString(),Spire.Presentation.FileFormat.Auto);
                    ppt.SaveToFile(ms,Spire.Presentation.FileFormat.PDF);
                    PdfFiles.Add(.xlsx MemoryStream())
                {
                    Workbook xls =  Workbook();
                    xls.LoadFromFile(item.ToString());
                    xls.SaveToStream(ms,Spire.Xls.FileFormat.PDF);
                    PdfFiles.Add(default;
        }              
    }
    将多个PDF文件合并为一个PDF文件
    PdfDocument newPdf1 =  PdfDocument();
    foreach (PdfDocument doc  PdfFiles)
    {
        newPdf1.AppendPage(doc);
    }
    创建一个新的、页面大小固定的PDF文件,复制合并文件的内容到该新的PDF文件
    PdfDocument newPdf2 = foreach (PdfPageBase page  newPdf1.Pages)
    {
        PdfPageBase newPage = newPdf2.Pages.Add(PdfPageSize.A4,new PdfMargins(0));
        PdfTextLayout loLayout =  PdfTextLayout();
        loLayout.Layout = PdfLayoutType.OnePage;
        page.CreateTemplate().Draw(newPage,new PointF(0,),loLayout);
    }
    保存目标PDF文件
    SaveFileDialog sfd =  SaveFileDialog();
    sfd.Filter = Pdf files(*.pdf)|*.pdf sfd.ShowDialog())
    {
        newPdf2.SaveToFile(sfd.FileName);
    }
}
点击加号查看全部代码

?

第四步:运行程序,点击“Add Files” 按钮来添加目标文件到listbox;

?

第五步:点击“Merge”按钮来转换和合并不同格式的文件至一个PDF文件,然后保存该文件;

?

全部代码:

using System.Drawing;
 System.Windows.Forms;
 Spire.Pdf;
 Spire.Doc;
 Spire.Xls;
 Spire.Presentation;
 System.IO;
 Spire.Pdf.Graphics;

namespace ConvertAndMerge
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            PdfFiles =  List();
        }
        public List PdfFiles { get; set;}

        添加文件到 listbox
         OpenFileDialog();
            ofd.Filter = ;
            ofd.Multiselect= ofd.ShowDialog())
            {
                 ofd.FileNames;
                listBox1.Items.AddRange(files);
            }
        }

        将其他格式的文件转换为PDF文件
            .Empty;
             listBox1.Items)
            {
                ext=Path.GetExtension(item.ToString());
                 (ext)
                {
                    :
                         MemoryStream())
                        {
                            Document doc =  Document(item.ToString());
                            doc.SaveToStream(ms,Spire.Doc.FileFormat.PDF);
                            PdfFiles.Add( PdfDocument(ms));
                        }
                        ;
                    :
                        PdfFiles.Add( PdfDocument(item.ToString()));
                         MemoryStream())
                        {
                            Presentation ppt =  MemoryStream())
                        {
                            Workbook xls =  Workbook();
                            xls.LoadFromFile(item.ToString());
                            xls.SaveToStream(ms,Spire.Xls.FileFormat.PDF);
                            PdfFiles.Add(;
                }              
            }
            将多个PDF文件合并为一个PDF文件
            PdfDocument newPdf1 =  PdfDocument();
             PdfFiles)
            {
                newPdf1.AppendPage(doc);
            }
            创建一个新的、页面大小固定的PDF文件,复制合并文件的内容到该新的PDF文件
            PdfDocument newPdf2 =  newPdf1.Pages)
            {
                PdfPageBase newPage = newPdf2.Pages.Add(PdfPageSize.A4,1)">));
                PdfTextLayout loLayout =  PdfTextLayout();
                loLayout.Layout = PdfLayoutType.OnePage;
                page.CreateTemplate().Draw(newPage,loLayout);
            }
            保存目标PDF文件
            SaveFileDialog sfd =  SaveFileDialog();
            sfd.Filter =  sfd.ShowDialog())
            {
                newPdf2.SaveToFile(sfd.FileName);
            }
        }
    }
}


注意:

使用此方法来将多个office文件合并到一个PDF文件,排版可能会改变,因为不同文件的所有内容都会显示在一个固定的大小的页面上(例如A4)。如果你想保存原来的排版格式,只需要先把

它们转换成PDF文件然后再合并到一起。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读