虽然前两个方法都可以使用,但是放在服务器iis上就会因为权限等问题“终告失败”。
机缘巧合下,柳暗花明的是找到了更简单的方法,直接使用word2007的SaveAsPDFandXPS,这是MS官方提供的可以集成到word中的补丁,在word中可以直接另存文件为pdf或xps。
安装好这个补丁代码就简单多了:
1 private Microsoft.Office.Interop.Word.Document oDoc; //a reference to the document 2 3 public void ExportAsFixedFormat(string paramExportFilePath) 4 { 5 WdExportFormat paramExportFormat = WdExportFormat.wdExportFormatPDF; 6 bool paramOpenAfterExport = false; 7 WdExportOptimizeFor paramExportOptimizeFor = 8 WdExportOptimizeFor.wdExportOptimizeForPrint; 9 WdExportRange paramExportRange = WdExportRange.wdExportAllDocument; 10 int paramStartPage = 0; 11 int paramEndPage = 0; 12 WdExportItem paramExportItem = WdExportItem.wdExportDocumentContent; 13 bool paramIncludeDocProps = true; 14 bool paramKeepIRM = true; 15 WdExportCreateBookmarks paramCreateBookmarks = 16 WdExportCreateBookmarks.wdExportCreateWordBookmarks; 17 bool paramDocStructureTags = true; 18 bool paramBitmapMissingFonts = true; 19 bool paramUseISO19005_1 = false; 20 object paramMissing = Type.Missing; 21 22 23 try 24 { 25 if (oDoc != null) 26 oDoc.ExportAsFixedFormat(paramExportFilePath, 27 paramExportFormat, paramOpenAfterExport, 28 paramExportOptimizeFor, paramExportRange, paramStartPage, 29 paramEndPage, paramExportItem, paramIncludeDocProps, 30 paramKeepIRM, paramCreateBookmarks, paramDocStructureTags, 31 paramBitmapMissingFonts, paramUseISO19005_1, 32 ref paramMissing); 33 34 } 35 catch (Exception ex) 36 { 37 // Respond to the error 38 } 39 finally 40 { 41 GC.Collect(); 42 GC.WaitForPendingFinalizers(); 43 GC.Collect(); 44 GC.WaitForPendingFinalizers(); 45 } 46 47 }
不用任何组件,无任何副作用,在服务器上可以安全执行,质量保证!