最近领导提了个需求 需要把多个word和多个图片 放在一起并且转换成pdf格式
我这里的思路是先把多个word放在一个新的word里
再把图片循环添加到这个新的word文档里
保存之后转换成PDF格式
之前用的spire Doc的这个插件实现的 但是因为这个插件生成后会有水印 虽然它有免费版本的 但是转换pdf格式只会转换3页 超出部分显示不了 所以研究了一下微软的Microsoft.Office.Interop.Word 完美解决
现在还有一个没解决的问题就是怎么设置这个添加图片的位置 如何把两个图片放在同一行中 如果有知道的大佬希望可以得到您的帮助(●’◡’●) 爱你 比心
(需要引用 Microsoft.Office.Interop.Word)

附上代码

 /// <summary>/// 将多个word拼成一个 插入图片后转成PDF/// </summary>/// <param name="ImageFileNames">图片路径</param>/// <param name="OldDocFileName">word路径</param>/// <param name="NewDocFileName">插入文档之后新的word文档路径</param>/// <param name="PdfFileName">转换后pdf的路径</param>/// <returns></returns>public bool ConverterToPDF(List<string> ImageFileNames, List<string> OldDocFileName, string NewDocFileName, string PdfFileName){Microsoft.Office.Interop.Word.Application App = new Microsoft.Office.Interop.Word.Application();Microsoft.Office.Interop.Word.Document Doc = new Microsoft.Office.Interop.Word.Document();object lobjMissing = System.Reflection.Missing.Value;object lobjSaveChanges = null;try{#region 拼接wordobject oPageBreak = WdBreakType.wdLineBreak;//接下行合并(LineBreak)//object oPageBreak = WdBreakType.wdPageBreak;//接下页合并(PageBreak)object docFileName = null;object NewdocFileName = null;OldDocFileName = OldDocFileName.Reverse<string>().ToList();for (int i = 0; i < OldDocFileName.Count; i++){NewdocFileName = (object)NewDocFileName;docFileName = OldDocFileName[i];if (i == 0){Doc = App.Documents.Open(ref docFileName, ref lobjMissing, ref lobjMissing, ref lobjMissing,ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing,ref lobjMissing, false, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);Doc.Activate();}else if (i == OldDocFileName.Count - 1){App.Selection.Range.InsertFile(OldDocFileName[i], ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);App.Selection.Range.InsertBreak(ref oPageBreak);Doc.SaveAs(ref NewdocFileName, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);//Doc.Close(ref NewdocFileName, ref lobjMissing, ref lobjMissing);App.ActiveDocument.Close(ref lobjMissing, ref lobjMissing, ref lobjMissing);}else{App.Selection.Range.InsertFile(OldDocFileName[i], ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);App.Selection.Range.InsertBreak(ref oPageBreak);//Doc.SaveAs(ref NewdocFileName, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);}}#endregion#region Spire.Doc 添加图片到word(新建段落插入到最后一段)//ConvertToPDFSpireDOC(ImageFileNames, NewDocFileName);#endregion#region Microsoft.Office.Interop.Word 添加图片到文档打开文档Doc = App.Documents.Open(NewDocFileName, ref lobjMissing, ref lobjMissing, ref lobjMissing,ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing,ref lobjMissing, false, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);App = Doc.Application;Microsoft.Office.Interop.Word.Selection selection = App.Selection;Microsoft.Office.Interop.Word.Sections sel = Doc.Sections;// App.Selection;//段落//newapp.Selection.EndKey(ref unite, ref nothing);//将光标移至文末Microsoft.Office.Interop.Word.Section section = sel.Add();//int sum = 1;foreach (var item in ImageFileNames.Reverse<string>()){//插入图片                    //App.ActiveDocument.Shapes.AddPicture(item, ref lobjMissing, ref lobjMissing, 0, ref lobjMissing, ref lobjMissing, ref lobjMissing);//if (sum == ImageFileNames.Count)//{                        //    //selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;//    //selection.InlineShapes.AddPicture(item, ref lobjMissing, ref lobjMissing, ref lobjMissing);//    Microsoft.Office.Interop.Word.InlineShape Inlineshape = section.Range.InlineShapes.AddPicture(item, ref lobjMissing, ref lobjMissing, ref lobjMissing);//    Inlineshape.Select();//    Microsoft.Office.Interop.Word.Shape cShape = Inlineshape.ConvertToShape();//    cShape.Top = 900;//}//else//{Microsoft.Office.Interop.Word.InlineShape Inlineshape = section.Range.InlineShapes.AddPicture(item, ref lobjMissing, ref lobjMissing, ref lobjMissing);//    sum++;//}}Doc.SaveAs(NewDocFileName, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);//插入图片之后保存文档#endregion#region Microsoft.Office.Interop.Word 将word保存为pdfDoc = App.Documents.Open(NewDocFileName, ref lobjMissing, ref lobjMissing,ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing,ref lobjMissing, false, ref lobjMissing, ref lobjMissing, ref lobjMissing, ref lobjMissing);//打开新的文档object lobjFileFormat = WdSaveFormat.wdFormatPDF; //保存格式为PDFDoc.SaveAs(PdfFileName, lobjFileFormat);//转换成pdf格式lobjSaveChanges = WdSaveOptions.wdDoNotSaveChanges;Doc.Close(ref lobjSaveChanges, ref lobjMissing, ref lobjMissing);Doc = null;App.Quit(ref lobjSaveChanges, ref lobjMissing, ref lobjMissing);App = null;#endregionreturn true;}catch (Exception e){Console.WriteLine(e.Message);return false;}finally{if (Doc != null){Doc.Close(ref lobjSaveChanges, ref lobjMissing, ref lobjMissing);Marshal.ReleaseComObject(Doc);Doc = null;}if (App != null){App.Quit(ref lobjSaveChanges, ref lobjMissing, ref lobjMissing);Marshal.ReleaseComObject(App);App = null;}//主动激活垃圾回收器,主要是避免超大批量转文档时,内存占用过多,而垃圾回收器并不是时刻都在运行!GC.Collect();GC.WaitForPendingFinalizers();}}

C# Microsoft.Office.Interop.Word 将多个word合成一个并插入图片 转换成pdf相关推荐

  1. 如何将Word图片转换成PDF文档

    Word转为PDF一直以来都是很多人常提起的话题,尤其像一些经常处理各类文档的编辑,各种文档格式直接的转换也是常遇到的事.网上教程讲解很多,但是换了其他的形式就不会做了.例如最近我自己制作了一个图片形 ...

  2. ” Microsoft.Office.Interop.Excel”无法引用

    首先是添加了Microsoft Excel11 Object Libray之后,发现引用里面的" Microsoft.Office.Interop.Excel"不能用.出现了一个可 ...

  3. C# 用Microsoft.Office.Interop.PowerPoint类库操作PPT

    前言:最近由于项目需求,需要使用此类库对PPT进行操作 1.引用 Microsoft.Office.Interop.PowerPoint和 Microsoft.Office.Core 2.PPT操作 ...

  4. Word VSTO Error:Interop type 'Microsoft.Office.Interop.OneNote.Application' cannot be embedded...

    来到公司连做了几个基本MS Office Word的开发,看来我与Office有点渊源 哈哈 今天我在做Word VSTO项目是后发生了编译错误:"Interop type 'Microso ...

  5. 错误类型:“系统找不到 Microsoft.Office.Interop.Word(转)

    错误类型:"系统找不到 Microsoft.Office.Interop.Word" 编译出现错误: "Could not load file or assembly ' ...

  6. 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...

    控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...

  7. C# 使用Microsoft.Office.Interop将Excel、Word转换成PDF遇到的问题总结

    首先应用中引入Microsoft.Office.Interop.Excel.Microsoft.Office.Interop.Word两个dll,将嵌入式互操作类型设为False, WORD转换成PD ...

  8. html与word字体大小转换,字体大小不一样,当html转换为Word使用Microsoft.Office.Interop.Word...

    我试图将html文件转换为MS word(docx)文件. 使用Microsoft.Office.Interop.Word我能够从HTML转换为Word,但字体大小不一样的文件的HTML和Word格式 ...

  9. Interop type 'Microsoft.Office.Interop.Word.ApplicationClass' cannot be embedded. Use the applicable

    错误信息: Interop type 'Microsoft.Office.Interop.Word.ApplicationClass' cannot be embedded. Use the appl ...

  10. Microsoft.Office.Interop.Word 创建word

    转载 https://www.cnblogs.com/chenbg2001/archive/2010/03/14/1685746.html Microsoft.Office.Interop.Word ...

最新文章

  1. 程序员如何乘风破浪?从数据库历史看技术人发展 | CSDN 高校俱乐部
  2. spring boot二:搭建环境
  3. websocket导致spring boot 项目单元测试启动失败的问题解决
  4. python3.6 使用pyinstaller 打包web程序的方法
  5. js 获取鼠标在画布的位置_使用faceapi.js轻松将面部识别添加到你的应用程序
  6. 打印三角形、已三角形方式 输出数组中的内容
  7. 【Prince2科普】P2七大主题之变更
  8. 解救开发者!鲲鹏、ModelArts、Atlas、5G MEC硬核来袭……
  9. iOS多线程: pthread、NSThread
  10. 用户空间缺页异常pte_handle_fault()分析--(上)【转】
  11. 政府网站防篡改解决方案
  12. cad图纸问号怎么转换文字_教你如何解决CAD图纸上字体显示问号的问题
  13. 手机 android.downloader病毒,Android手机出现史上最强木马 感染后无法删除
  14. ubuntu等linux发行版声卡、网卡、显卡驱动问题解决
  15. openGL 例子:创建一个二十面体
  16. 使用vue-cropper
  17. python识别验证码并自动登录_Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录...
  18. 金仓数据库KingbaseES之WITH ORDINALITY
  19. ASO优化关键词覆盖、曝光原理
  20. shader篇-纹理-凹凸映射

热门文章

  1. windbg学习23(!peb和PEB结构)
  2. 中了Viking,抓到CONFIG.EXE,NTDLL32.dll,webpnt.exe等
  3. 全国青少年软件编程等级考试标准(正式级)
  4. Vue Cli 3代理配置
  5. 韦东山嵌入式linux驱动开发,学习嵌入式Linux开发——韦东山升级版全系列嵌入式视频之总线设备驱动模型代码分析...
  6. 设计模式系列 — 模板方法模式
  7. vmware 您无权输入许可证密钥,请请使用系统管理员账户重试
  8. 三菱伺服驱动器说明书_张家港市HG-KN13J-S100三菱伺服控制器
  9. HTML5基础学习-表格标签
  10. 数学建模竞赛常考四大模型总结【预测模型、分类模型、优化模型、评价模型】