32 public bool Convert(
string inputFile,
string outputFile)
36 string convertedFile =
"";
39 string tmpFolder = Path.Combine(Path.GetDirectoryName(outputFile),
"MSWordDocumentConverter_" + Guid.NewGuid().ToString().Substring(0, 10));
40 if (!Directory.Exists(tmpFolder))
42 Directory.CreateDirectory(tmpFolder);
45 dynamic wordApp =
null;
46 dynamic document =
null;
50 if (inputFile.EndsWith(
".docx") && outputFile.EndsWith(
".docx"))
53 File.Copy(inputFile, outputFile,
true);
56 else if (inputFile.EndsWith(
".docx") && outputFile.EndsWith(
".pdf"))
58 convertedFile = Path.Combine(tmpFolder, Path.GetFileNameWithoutExtension(inputFile) +
".pdf");
61 Type t = Type.GetTypeFromProgID(
"Word.Application",
true);
62 wordApp = Activator.CreateInstance(t);
63 wordApp.Visible =
false;
64 document = wordApp.Documents.Open(inputFile);
65 document.ExportAsFixedFormat(convertedFile, 17);
67 if (File.Exists(outputFile))
69 File.Delete(outputFile);
71 if (File.Exists(convertedFile))
73 File.Move(convertedFile, outputFile);
89 Directory.Delete(tmpFolder,
true);
90 document?.Close(
false);
102 ZipArchive zip = ZipFile.OpenRead(docxFile);
103 ZipArchiveEntry zipEntry = zip?.GetEntry(
"docProps/app.xml");
104 if (zipEntry ==
null) {
return false; }
106 Stream zipEntryStream = zipEntry.Open();
107 XDocument zipEntryXml = XDocument.Load(zipEntryStream);
108 XElement zipEntryAppElement = zipEntryXml.Root?.Elements().FirstOrDefault(e => e.Name.LocalName ==
"Application");
109 string appName = zipEntryAppElement?.Value;
110 return appName.Contains(
"Microsoft Office Word");