我有一个asp.net应用程序,它将上传的ms doc转换为pdf,使用Microsoft.Office.Interop.Word.ApplicationClass.It在我的本地机器上正常工作,但它不能在部署的IIS服务器上工作。那里有任何可执行文件需要权限才能获得输出。IIS可转换权限将文档转换为pdf?
错误是: 具有CLSID检索COM类工厂部件{000209FF-0000-0000-C000-000000000046}失败,原因是以下错误:80070005
我的代码如下:
public class Word2Pdf
{
private Microsoft.Office.Interop.Word.ApplicationClass MSWordDoc;
object UnknownType = Type.Missing;
public string Word2PdfCOnversion(object InputLocation, object OutputLocation)
{
string result;
try
{
//if (MSWordDoc == null)
MSWordDoc = new Microsoft.Office.Interop.Word.ApplicationClass();
MSWordDoc.Visible = false;
MSWordDoc.Documents.Open(ref InputLocation, //Input File Name Location
ref UnknownType, // Conversion Conformation
ref UnknownType, // Set ReadOnly Property
ref UnknownType, // Add to the Recent Files
ref UnknownType, // Document Password Setting
ref UnknownType, // Password Templete
ref UnknownType, // Revert
ref UnknownType, // Write Password to Document
ref UnknownType, // Write Password Template
ref UnknownType, // File Format
ref UnknownType, // Encoding File
ref UnknownType, // Visibility
ref UnknownType, // To Open or Repair
ref UnknownType, // Document Direction
ref UnknownType, // Encoding Dialog
ref UnknownType); // XML Text Transform
MSWordDoc.Application.Visible = false; // To Invisible the Word Document
MSWordDoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize; // Minimize the Opened Word File.
object SavePDFFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
MSWordDoc.ActiveDocument.SaveAs(ref OutputLocation, //Output File Location
ref SavePDFFormat, // File Format
ref UnknownType, // Comment to PDF File
ref UnknownType, // Password
ref UnknownType, // Add to Recent File
ref UnknownType, // Write Password
ref UnknownType, // ReadOnly Propert
ref UnknownType, // Original Font Embeding
ref UnknownType, // Save Picture
ref UnknownType, // Saving Form Datas
ref UnknownType, // Save as AOVE Letter
ref UnknownType, // Encoding
ref UnknownType, // Inserting Line Breakes
ref UnknownType, // Allow Substitution
ref UnknownType, // Line Ending
ref UnknownType); // Add BiDi Marks
result = "Success";
}
catch (Exception)
{
result = "Error";
}
finally
{
if (MSWordDoc == null) { }
else { MSWordDoc.Documents.Close(ref UnknownType, ref UnknownType, ref UnknownType); }
MSWordDoc.Quit(ref UnknownType, ref UnknownType, ref UnknownType);
}
return result;
}
}
您正在使用的Com Compenent是否在服务器上注册? – Deepesh
如果您使用的是最新版本的.Net,则不需要所有'参考UnknownType'参数。 .Net 3.5和更高版本允许这些参数是可选的,如果省略默认为'Type.Missing'。可以使代码更短,更容易扫描... YMMV – Grhm