C# 使用C将.doc转换为.docx#

C# 使用C将.doc转换为.docx#,c#,C#,我使用PDFFocus.net dll将PDF文件转换为word文件。但对于我的系统,我需要.docx文件。我试过不同的方法。有一些库可用。但这些都不是免费的。这是我的pdf到文档转换代码 Using System; Using System.Collections.Generic; Using System.Linq; Using System.Text; Using System.Threading.Tasks; Using iTextShar

我使用PDFFocus.net dll将PDF文件转换为word文件。但对于我的系统,我需要.docx文件。我试过不同的方法。有一些库可用。但这些都不是免费的。这是我的pdf到文档转换代码

    Using System;
    Using System.Collections.Generic;
    Using System.Linq;
    Using System.Text;
    Using System.Threading.Tasks;
    Using iTextSharp.text;
    Using iTextSharp.text.pdf;

    namespace ConsoleApplication
    {
          class Program
          {
               static void main(String[] args)
               {
                    SautinSoft.PdfFocus f=new SautinSoft.PdfFocus();
                    f.OpenPdf(@"E:\input.pdf");

                         t.ToWord(@"E:\input.doc");
                }
          }
    }
这项工作很成功。 然后我尝试使用下面的代码将.doc转换为.docx。但它给了我错误

//Open a Document.
Document doc=new Document("input.doc");
//Save Document.
doc.save("output.docx");

有人能帮我吗。

尝试使用Microsoft.Office.Interop.Word汇编

可以找到MSDN文章

在项目中包含引用,并通过上面链接中的示例在代码模块中启用它们的使用


是的,就像厄洛普说的。您可以使用Microsoft Word 14.0对象库。那么从doc到docx的转换就很容易了。例如,使用如下功能:

    public void ConvertDocToDocx(string path)
    {
        Application word = new Application();

        if (path.ToLower().EndsWith(".doc"))
        {
            var sourceFile = new FileInfo(path);
            var document = word.Documents.Open(sourceFile.FullName);

            string newFileName = sourceFile.FullName.Replace(".doc", ".docx");
            document.SaveAs2(newFileName,WdSaveFormat.wdFormatXMLDocument, 
                             CompatibilityMode: WdCompatibilityMode.wdWord2010);

            word.ActiveDocument.Close();
            word.Quit();

            File.Delete(path);
        }
    }
确保添加
CompatibilityMode:WdCompatibilityMode.wdWord2010
,否则文件将保持兼容模式。还要确保Microsoft Office安装在要运行应用程序的计算机上

另一件事,我不知道PDFFocus.net,但您是否尝试过直接从pdf转换为docx。像这样:

     static void main(String[] args)
     {
           SautinSoft.PdfFocus f=new SautinSoft.PdfFocus();
           f.OpenPdf(@"E:\input.pdf");

                t.ToWord(@"E:\input.docx");
     }

我认为这是可行的,但这只是一个假设。

一个类似或可能有帮助的库—加载
.doc
并另存为
.docx
,基于快速查看,没有迹象表明PDFFocus支持RTF输出以外的任何输出(即使使用
.doc
文件扩展名)。您确定它可以生成基于XML的开放式Word格式(
.docx
)?感谢您发布此问题的答案!不过,这个答案很短,没有提供太多的上下文。请解释一下它背后的一些原因,它将对提问者和未来的读者更加有用。谢谢我稍微调整了一下。欢迎来到堆栈。非常感谢你,戴夫。这是我的工作。我用.docx尝试了PDFFocus.net。但是PDFFocus.net仅支持.Doc文件。不过,非常感谢您的回答。请注意,有两个单词的互操作程序集。我用v15.0在控制台应用程序中成功地测试了第一个代码块。即使确保我有
CompatibilityMode
行,文档还是以兼容模式打开的,但我认为这并不重要。注意:不应该从“服务器”代码中尝试它,该代码包括从网站或Windows服务本地运行的代码,因为它是在不同用户的上下文中运行的,而不是登录用户提供的上下文:
CO_E_server_EXEC_FAILURE(0x80080005):服务器执行失败
Btw,如果您尝试此操作并获得该错误,我发现此错误:
     static void main(String[] args)
     {
           SautinSoft.PdfFocus f=new SautinSoft.PdfFocus();
           f.OpenPdf(@"E:\input.pdf");

                t.ToWord(@"E:\input.docx");
     }