Convert PDF to MS Office with C#
This code uses the OpenService
and CloseService
methods from PDF Converter API - Document Converter Service Client sample code:
/// <summary> /// Perform PDF to DOCX on the supplied file, writing the result into the target folder /// </summary> /// <param name="ServiceURL">URL endpoint for the PDF Converter service</param> /// <param name="sourceFileName">Source filename</param> /// <param name="targetFolder">Target folder to receive the output file</param> /// <param name="officeType">Office type for output</param> static void PDFToOffice(string ServiceURL, string sourceFileName, string targetFolder, OfficeTypes officeType) { DocumentConverterServiceClient client = null; try { // Create minimum OpenOptions object OpenOptions openOptions = new OpenOptions(); openOptions.OriginalFileName = Path.GetFileName(sourceFileName); // Create minimum PatternHighlightSettings PDFToOfficeSettings pDFToOfficeSettings = new PDFToOfficeSettings(); pDFToOfficeSettings.OfficeType = officeType; pDFToOfficeSettings.PageRange = "*"; // Create target folder if required if (!Directory.Exists(targetFolder)) { Directory.CreateDirectory(targetFolder); } // ** Read the source file into a byte array. byte[] sourceFile = File.ReadAllBytes(sourceFileName); // ** Open the service and configure the bindings client = OpenService(ServiceURL); // ** Carry out the conversion. byte[] result = client.PDFToOffice(sourceFile, openOptions, pDFToOfficeSettings); // ** Save the results if (result != null) { if (!Directory.Exists(targetFolder)) { Directory.CreateDirectory(targetFolder); } string filename = Path.GetFileNameWithoutExtension(sourceFileName); string destinationFileName = Path.GetFullPath(Path.Combine(targetFolder, filename + $".{pDFToOfficeSettings.OfficeType}")); using (FileStream fs = File.Create(destinationFileName)) { fs.Write(result, 0, result.Length); fs.Close(); } Console.WriteLine("File converted to " + destinationFileName); // Open the destination file ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = destinationFileName; psi.UseShellExecute = true; Process.Start(psi); } else { Console.WriteLine("Nothing returned"); } } catch (FaultException<WebServiceFaultException> ex) { Console.WriteLine($"FaultException occurred: ExceptionType: {ex.Detail.ExceptionType.ToString()}"); Console.WriteLine(); Console.WriteLine($"Error Detail: {string.Join(Environment.NewLine, ex.Detail.ExceptionDetails)}"); Console.WriteLine($"Error message: {ex.Message}"); Console.WriteLine(); Console.WriteLine($"Error reason: {ex.Reason}"); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.WriteLine(ex.Data.ToString()); } finally { if (client != null) { CloseService(client); } } }