夫天地者,万物之逆旅;光阴者,百代之过客。而浮生若梦,为欢几何?
C# Word分页转PDF

废话不说,上源码

开发环境需要安装office 2010以上版本,笔者本地安装的是office 2013  。

项目需要引入 Microsoft.Office.Interop.Word.dll

分页转换代码如下:

/// <summary>
        /// word 分页转 pdf
        /// </summary>
        /// <param name="sourcePath">ppt文件路径</param>
        /// <param name="saveDirectory">pdf分片文件保存目录</param>
        /// <param name="sliceSize">分片大小</param>
        /// <param name="totalPage">ppt总页码</param>
        /// <param name="sliceNum">分片数量</param>
        public void WordToPdf(string sourcePath, string saveDirectory, int sliceSize, out int totalPage, out int sliceNum)
        {
            object oMissing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Word.Application wordApp = null;
            totalPage = 0;
            sliceNum = 0;
            try
            {
                //启动Word程序
                wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
                wordApp.Visible = false;
                object filePath = sourcePath;
                Microsoft.Office.Interop.Word.Document wordDoc = wordApp.Documents.Open(
                    ref filePath, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                //获取word文件的总页码
                totalPage = wordDoc.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages);
                //计算分片数量
                sliceNum = totalPage % sliceSize == 0 ? (totalPage / sliceSize) : (totalPage / sliceSize) + 1;
                for (int i = 0; i < sliceNum; i++)
                {
                    wordDoc.ExportAsFixedFormat(
                        string.Format("{0}\\{1}-{2}-{3}.pdf", saveDirectory, (i * sliceSize) + 1, totalPage, sliceNum)
                     , Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF
                     , false
                     , Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForPrint
                     , Microsoft.Office.Interop.Word.WdExportRange.wdExportFromTo
                     , (i * sliceSize) + 1 //导出的开始页码
                     , (i * sliceSize) + sliceSize //导出的结束页码
                     );
                }
                //关闭文件
                object saveOption = Microsoft.Office.Interop.Word.WdSaveOptions.wdSaveChanges;
                ((Microsoft.Office.Interop.Word._Document)wordDoc).Close(ref saveOption, ref oMissing, ref oMissing);
                
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (wordApp != null && wordApp is Microsoft.Office.Interop.Word.ApplicationClass)
                {
                    (wordApp as Microsoft.Office.Interop.Word.ApplicationClass).Quit(ref oMissing, ref oMissing, ref oMissing);
                }
            }
        }


作者:暗夜余晖

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

0

支持

0

反对

posted @2018-1-18  拜读(1194)

评论列表

评论内容:



喜欢请打赏

支付宝 微信

请放心支付