C# 使用C将.doc转换为.docx#
我使用PDFFocus.net dll将PDF文件转换为word文件。但对于我的系统,我需要.docx文件。我试过不同的方法。有一些库可用。但这些都不是免费的。这是我的pdf到文档转换代码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
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");
}