C# 将多少个office文件转换及统一为一个PDF文件

PDF文件介绍

PDF(Portable Document
Format )文件源于20世纪90年份早期,近年来曾经变成了一种最流行的的文件格式之一。因为PDF文件有为数不少独到之处:

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

  • 可以由此密码珍爱格局来阻拦复制和编制

  • 将各个文本文档、图片、音频、三维地图等联合为一个PDF文件时,如故可以全部的保留所有的源文件音信等

就此,有些时候为了方便共享文件,你或然需求把其它格式的文本如Word,Excel以及
PowerPoint文件转换为PDF格式。本文将向你介绍怎样使用Spire.Office软件,通过C#编程的章程,

将几个office文件转换及统一到一个PDF文件。并且在转移进程中,你还足以依据自个儿的须求来改变PDF文件的尺寸。

 

Spire.Office简介C#, 

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

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

C# 1

                       

下边大家就来看望哪些通过这款软件来兑现上述须要的成效。

代码片段:

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

C# 2

 

第二步:定义btnAdd_Click方法,通过OpenFileDialog、添Gavin件路径到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文件之中。

C# 3C# 4

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

点击加号查看所有代码

 

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

C# 5

 

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

C# 6

 

成套代码:

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

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

        //添加文件到 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);
            }
        }

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

注意:

采取此格局来将七个office文件合并到一个PDF文件,排版大概会变动,因为不一样文件的富有故事情节都会来得在一个定点的轻重缓急的页面上(例如CRIDER)。如若您想保留原来的排版格式,只要求先把

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

 

相关文章