2

アップロードされた ms doc を Microsoft.Office.Interop.Word.ApplicationClass を使用して pdf に変換する asp.net アプリケーションがあります。ローカル マシンでは正常に動作しますが、展開された IIS サーバーでは動作しません。実行権限はありますか?出力を得るために必要です。

エラー: CLSID {000209FF-0000-0000-C000-000000000046} を持つコンポーネントの COM クラス ファクトリを取得できませんでした。次のエラーが原因です: 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;
    }
}
4

1 に答える 1

0

使用する COM コンポーネントのアクセス許可を設定する必要があります。サーバーで、dcomcnfgユーティリティを実行します。

「Component Services\Computers\My Computer\DCOM Config」の下で、必要な単語コンポーネントの CLSID を見つけます。(幸いなことに、一部のマシンではそれらを GUID としてリストしているのを見たことがあります。つまり{000209FF-0000-0000-C000-000000000046}、他のマシンでは Office コンポーネントが名前でリストされています)。

CLSID を右クリックしてプロパティを選択し、「起動とアクティブ化のアクセス許可」、「アクセス許可」、および「ID」設定を変更して、Word を自動化するために必要な権限を Web サイト アプリ プール アカウントに許可する必要があります。

ちなみに、言及したものよりも多くの CLSID が必要になる場合があります。Word を使用して doc や html を PDF に変換するプロジェクトに取り組んだとき、Word の CLSID といくつかの Word の画像タイプも追加する必要がありました。

メモリから、CLSID は次のとおりです。
{000209FF-0000-0000-C000-000000000046}
{000209FF-0000-0000-C000-0000000000FE}
{000209FF-0000-0000-C000-0000000000FF}

うまくいけば、それはあなたを正しい方向に向けるはずです.

于 2012-12-20T09:04:31.447 に答える