转:http://www.cnblogs.com/DotNet1010/archive/2007/08/29/873826.html
项目中用到word转pdf 的功能 ,刚开始的要求是做一个应用程序来转 主要代码如下:
ASP.NET 调用COM Word 转Pdf 之我见using PDF = PDFMAKERAPILib;
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见   string wordPath = string.Empty;
ASP.NET 调用COM Word 转Pdf 之我见        
string pdfPath = string.Empty;
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见        PDF.PDFMakerApp app 
= new PDFMAKERAPILib.PDFMakerApp();
ASP.NET 调用COM Word 转Pdf 之我见       
int iReslut= app.CreatePDF(wordPath, pdfPath, PDF.PDFMakerSettings.kConvertAllPages, truefalsetrue, System.Type.Missing);
ASP.NET 调用COM Word 转Pdf 之我见       
if (iReslut == 0)
       }

后来要求改变 必须用ASP.NET 来调用 心想,代码复制到Web窗体里面不就行了吗?
在用WebDev.WebServer.exe 时候 OK,没问题,当用IIS时,就是转换不成功,花了点时间,发现原因是两个的用户不同,一个是管理员,一个是Asp.net 帐户或者是network Service 看IIS是5.0 还是6.0。想通过更改设置权限来解决,改了不少,效果是从一个错误,变成了另一个错误!
后来从网上查资料,受了点启发:(我做COM测试的时候喜欢用VB.NET  代码简练。)

ASP.NET 调用COM Word 转Pdf 之我见Imports Word = Microsoft.Office.Interop.Word
ASP.NET 调用COM Word 转Pdf 之我见
Imports PDF = ACRODISTXLib
ASP.NET 调用COM Word 转Pdf 之我见  Dim Range As New Object()
ASP.NET 调用COM Word 转Pdf 之我见        Range 
= Word.WdPrintOutRange.wdPrintAllDocument
ASP.NET 调用COM Word 转Pdf 之我见        
Dim Item As New Object()
ASP.NET 调用COM Word 转Pdf 之我见        Item 
= Word.WdPrintOutItem.wdPrintDocumentContent
ASP.NET 调用COM Word 转Pdf 之我见        
Dim PageType As New Object()
ASP.NET 调用COM Word 转Pdf 之我见        PageType 
= Word.WdPrintOutPages.wdPrintAllPages
ASP.NET 调用COM Word 转Pdf 之我见        
Dim ManualDuplexPrint As New Object()
ASP.NET 调用COM Word 转Pdf 之我见        ManualDuplexPrint 
= False
ASP.NET 调用COM Word 转Pdf 之我见        
Dim OutPutFileName As String = "C:\Topdf\123456.ps"
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见        
Dim wordApp As New Word.Application()
ASP.NET 调用COM Word 转Pdf 之我见        wordApp.Documents.Open(
"C:\Topdf\123456.doc"FalseFalseFalse""""False"""", Word.WdOpenFormat.wdOpenFormatAuto, , , , , , "")
ASP.NET 调用COM Word 转Pdf 之我见        wordApp.Documents.Save()
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见        wordApp.ActivePrinter 
= "Adobe PDF"
ASP.NET 调用COM Word 转Pdf 之我见      
ASP.NET 调用COM Word 转Pdf 之我见        wordApp.PrintOut(
False, , Range, OutPutFileName, , , Item, 1"", PageType, FalseTrue"", , False0000)
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见        wordApp.Quit()
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见      
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见        
Dim pdftest = New PDF.PdfDistiller()
ASP.NET 调用COM Word 转Pdf 之我见        pdftest.bShowWindow 
= 0
ASP.NET 调用COM Word 转Pdf 之我见
ASP.NET 调用COM Word 转Pdf 之我见        pdftest.FileToPDF(OutPutFileName, 
"C:\Topdf\123456.pdf""")
ASP.NET 调用COM Word 转Pdf 之我见        pdftest 
= Nothing
ASP.NET 调用COM Word 转Pdf 之我见        
''连续调用会出错,可以先杀掉进程 

思路是先用Word 将doc 转换为ps,然后用pdfDistiller 将ps转换为pdf,经过测试,可以在IIS下成功执行。
在此将代码写出来,希望碰到此类问题的,能够少走些弯路!
当然,最好是不调COM,方法是找到了,就是要花钱,先这样用着吧!

相关文章:

  • 2021-11-25
  • 2021-10-26
  • 2021-12-10
  • 2021-06-06
  • 2022-01-10
  • 2022-12-23
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2021-12-03
  • 2021-12-03
相关资源
相似解决方案