C# 将多个office文件转换及合并为一个PDF文件
PDF文件介绍 PDF(Portable Document Format?)文件源于20世纪90年代初期,如今早已成为了一种最流行的的文件格式之一。因为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); } }
值得指出的是,当你将不同类型的文件合并为一个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文件然后再合并到一起。 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |