2

RTF/WORD ファイルを PDF に変換し、電子メールの添付ファイルとして送信する機能を提供する必要があります。このために、以下に示すコードを試しました。

    // Create a new Microsoft Word application object
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

    // C# doesn't have optional arguments so we'll need a dummy value
    object oMissing = System.Reflection.Missing.Value;

    Document doc;
    protected void Page_Load(object sender, EventArgs e)
    {
        ConvertToPDF("test.doc");
    }

    void ConvertToPDF(string sFileName)
    {
        // Create a new Microsoft Word application object
        Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

        // C# doesn't have optional arguments so we'll need a dummy value
        object oMissing = System.Reflection.Missing.Value;

        Document doc;
        try
        {
            word.Visible = false;
            word.ScreenUpdating = false;

            DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(".") + "\\TempDoc");
            FileInfo[] wordFile = dirInfo.GetFiles(sFileName);

            if (wordFile.Length > 0)
            {
                Object filename = (Object)wordFile[0].FullName;

                // Use the dummy value as a placeholder for optional arguments
                doc = word.Documents.Open2000(ref filename, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                doc.Activate();

                object outputFileName = wordFile[0].FullName.Replace(".doc", "");
                object fileFormat = WdSaveFormat.wdFormatPDF;

                // Save document into PDF Formats
                doc.SaveAs2000(ref outputFileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex);
        }
        finally
        {
            // Close the Word document, but leave the Word application open.
            // doc has to be cast to type _Document so that it will find the
            // correct Close method.
            doc = null;

            // word has to be cast to type _Application so that it will find
            // the correct Quit method.
            word = null;
        }

    }

しかし、doc.SaveAs2000(ref outputFileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); でエラーが発生します。声明。

これには、Microsoft Office 2007 があり、PDF ファイルとして保存するオプションがないことが原因である可能性があります。Microsoft Office 2010 にはそのオプションがあるため、Microsoft Office 2010 がサーバーにインストールされている場合にこのコードが機能する可能性があります。

4

2 に答える 2

1

はい、2010年には動作します。最近使用しましたが、2007年にはPDFとして保存機能を追加するパッチがあると思います

多分これを試してみてください http://msdn.microsoft.com/en-us/library/bb412305(v=office.12).aspx

于 2012-04-21T10:00:48.510 に答える