如何在asp.net中编程保存Word 2007文档为PDF文档?

11 浏览
0 Comments

如何在asp.net中编程保存Word 2007文档为PDF文档?

在我的Asp.net网页应用程序中,我需要以编程的方式将一个docx文件转换为pdf文件。我使用了Microsoft互操作性Word包,并使用了saveAs()方法。

这是我的C#代码...

var TheDocument = wdApp.Documents.Open("sample.docx"); //控制流在这里停止...
TheDocument.ExportAsFixedFormat("sample.pdf", Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF,
           OptimizeFor: Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForOnScreen,
           BitmapMissingFonts: true, DocStructureTags: false);
((Microsoft.Office.Interop.Word._Document)TheDocument).Close();

但是当执行这行代码时,var TheDocument = wdApp.Documents.Open("sample.docx");控制流停在这行上,没有进一步的响应。浏览器符号显示加载中...

我不知道问题出在哪里...

请指导我解决这个问题...

0
0 Comments

这个问题的出现原因是在ASP.NET中将Word 2007文档保存为PDF文档的方法不可靠。解决方法是通过Microsoft.Office.Interop来实现。具体的代码如下:

private Microsoft.Office.Interop.Word.ApplicationClass MSdoc;       
//Use for the parameter whose type are not known or say Missing
object Unknown = Type.Missing;
private void word2PDF(object Source, object Target)
{   //Creating the instance of Word Application          
   if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass();
    try
    {  
        MSdoc.Visible = false;               
        MSdoc.Documents.Open(ref Source, ref Unknown,
             ref Unknown, ref Unknown, ref Unknown,
             ref Unknown, ref Unknown, ref Unknown,
             ref Unknown, ref Unknown, ref Unknown,
             ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
        MSdoc.Application.Visible = false;
        MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;               
        object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
        MSdoc.ActiveDocument.SaveAs(ref Target, ref format,
                ref Unknown, ref Unknown, ref Unknown,
                ref Unknown, ref Unknown, ref Unknown,
                ref Unknown, ref Unknown, ref Unknown,
                ref Unknown, ref Unknown, ref Unknown,
               ref Unknown, ref Unknown);
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
    }
    finally
    {
        if (MSdoc != null)
        {
            MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown);
            //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown);
        }               
        // for closing the application
        WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown);
    }
}

如果我的Web应用程序没有在IIS(5.1)中配置,那么我只需要使用vs-2010部署服务器来运行该应用程序,它就能正常运行。但是如果我将应用程序配置在IIS(5.1)中,它就无法运行,一直处于加载状态,没有错误和输出。

需要注意的是,我需要在IIS 5.1上更改一些设置吗?

先决条件:安装了MS Word 2007(默认情况下会安装主要的互操作程序集)。插件SaveAsPDFandXPS(从微软网站免费下载)。确保引用了Word.12。这将自动将Microsoft.Office.Interop.Word添加到引用中。对于其他Office应用程序,按照类似的步骤操作。(注意:你应该已经安装了VS 2005 Tools for Office 2nd Ed. Runtime(VSTO 2005 SE)(x86))

我已经安装了MS OFFICE-2007,并引用了Word.12对象库。我正在使用VS-2010。

对于提供错误的希望,给予负评。

0
0 Comments

问题原因:用户希望在ASP.NET中以编程方式将Word 2007文档保存为PDF文档。

解决方法:使用Microsoft.Office.Interop.Word库中的ExportAsFixedFormat方法来实现将Word文档保存为PDF的功能。具体代码如下:

Object missing = Type.Missing;
Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat(@"D:\MyPDF.pdf", 
Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF, false, 
Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForPrint, 
Microsoft.Office.Interop.Word.WdExportRange.wdExportAllDocument, 1, 1, 
Microsoft.Office.Interop.Word.WdExportItem.wdExportDocumentWithMarkup, true, true, 
Microsoft.Office.Interop.Word.WdExportCreateBookmarks.wdExportCreateNoBookmarks, 
true, true, false,ref missing);

以上代码中,missing是一个缺失对象,用于传递给方法中的可选参数。ExportAsFixedFormat方法接受多个参数,包括输出文件路径、输出文件格式、是否优化打印、导出范围等。通过将参数传递给该方法,就可以将Word文档保存为PDF文档。

0