Using the following code, the call to createPdfOperation.Execute(executionContext); never returns.
private async Task ConvertToPDF()
{
try
{
if (checkedNodes.Count() == 0) return;
localService.isLoading = true;
// Initial setup, create credentials instance.
Credentials credentials = Credentials.ServicePrincipalCredentialsBuilder()
.WithClientId(clientId)
.WithClientSecret(clientSecret)
.Build();
//Create an ExecutionContext using credentials and create a new operation instance.
ExecutionContext executionContext = ExecutionContext.Create(credentials);
foreach (FileNode bn in checkedNodes)
{
if (bn.ContentType == "SharePointFolder" || bn.ContentType == "Root" || bn.ContentType == "BlobPrefix") continue;
IFile spDoc = await localService.DownloadSharePointDocument($"{SharePointPath}/{bn.Path}");
if (spDoc == null) continue;
string mediaType = "UNSUPPORTED";
string fileExt = Path.GetExtension(bn.FileName).ToLower();
switch (fileExt)
{
case ".docx": mediaType = CreatePDFOperation.SupportedSourceFormat.DOCX.GetMediaType(); break;
case ".doc": mediaType = CreatePDFOperation.SupportedSourceFormat.DOC.GetMediaType(); break;
case ".xlsx": mediaType = CreatePDFOperation.SupportedSourceFormat.XLSX.GetMediaType(); break;
case ".xls": mediaType = CreatePDFOperation.SupportedSourceFormat.XLS.GetMediaType(); break;
default: mediaType = "UNSUPPORTED"; break;
}
if (mediaType == "UNSUPPORTED")
{
notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "Error", Detail = $"{fileExt} files not supported.", Duration = -1 });
localService.isLoading = false;
return;
}
Stream ms = await spDoc.GetContentAsync();
ms.Seek(0, 0);
FileRef source = FileRef.CreateFromStream(ms, mediaType);
CreatePDFOperation createPdfOperation = CreatePDFOperation.CreateNew();
createPdfOperation.SetInput(source);
// Execute the operation.
FileRef result = createPdfOperation.Execute(executionContext);
// Save the result to the specified location.
Stream outStream = new MemoryStream();
result.SaveAs(outStream);
outStream.Seek(0, 0);
string newFileName = Path.GetFileNameWithoutExtension(bn.FileName) + ".pdf";
string upResult = await localService.UploadSharePointDocument(currentSharePointFolder, newFileName, outStream, false);
if (upResult != "SUCCESS")
{
notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "Error", Detail = upResult, Duration = -1 });
localService.isLoading = false;
return;
}
}
string parentKeyValue = ParentObject.GetType().GetProperty(ParentKeyProperty).GetValue(ParentObject, null).ToString();
await Load(parentKeyValue);
}
catch (ServiceUsageException ex)
{ notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "Service Usage", Detail = ex.Message, Duration = -1 }); }
catch (ServiceApiException ex)
{ notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "Service Api", Detail = ex.Message, Duration = -1 }); }
catch (SDKException ex)
{ notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "SDK", Detail = ex.Message, Duration = -1 }); }
catch (IOException ex)
{ notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "IO", Detail = ex.Message, Duration = -1 }); }
catch (Exception ex)
{ notificationService.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "Error", Detail = ex.Message, Duration = -1 }); }
finally
{
localService.isLoading = false;
checkedNodes = new List<object>();
}
}
Views
Replies
Total Likes
Hi,
Kindly check if the conditions are met to reach that code. Under the following conditions, the method won't be triggered.
Unsupported File Types: If the file extension doesn't match any of the supported types (".docx"
, ".doc"
, ".xlsx"
, ".xls"
), the method returns early before reaching the .Execute
method.
Exceptions: If any exceptions occur during the processing, the execution will jump to the respective catch block, and the .Execute
method won't be reached.
Early Returns: There are other return statements within the loop that would cause the method to exit before reaching .Execute
.
Hope this helps
Views
Replies
Total Likes
I have verified that the execute line of code is being reached. It just never returns.
Views
Replies
Total Likes