Convert PDF to MS Office with C#

This code uses the OpenService and CloseService methods from the PDF Converter API DocumentConverterServiceClient 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);
}
}
}