Open and save Word document in AWS Lambda
29 Nov 20245 minutes to read
Syncfusion® DocIO is a .NET Core Word library used to create, read, edit and convert Word documents programmatically without Microsoft Word or interop dependencies. Using this library, you can open and save a Word document in AWS Lambda.
Steps to open and save Word document in AWS Lambda
Step 1: Create a new AWS Lambda project as follows.
Step 2: Select Blueprint as Empty Function and click Finish.
Step 3: Install the Syncfusion.DocIO.Net.Core NuGet package as a reference to your project from NuGet.org.
NOTE
Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, you also have to add “Syncfusion.Licensing” assembly reference and include a license key in your projects. Please refer to this link to know about registering Syncfusion® license key in your application to use our components.
Step 4: Create a folder and copy the required data files and include the files to the project.
Step 5: Set the copy to output directory to Copy if newer to all the data files.
Step 6: Include the following namespaces in Function.cs file.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
step 7: Add the following code snippet in Function.cs to open a Word document in AWS Lambda.
string filePath = Path.GetFullPath(@"Data/Input.docx");
//Load the file from the disk
using FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
using WordDocument document = new WordDocument(fileStream, FormatType.Docx);
Step 8: Add below code example to add a paragraph in the Word document.
//Access the section in a Word document
IWSection section = document.Sections[0];
//Add new paragraph to the section
IWParagraph paragraph = section.AddParagraph();
paragraph.ParagraphFormat.FirstLineIndent = 36;
paragraph.BreakCharacterFormat.FontSize = 12f;
//Add new text to the paragraph
IWTextRange textRange = paragraph.AppendText("In 2000, AdventureWorks Cycles bought a small manufacturing plant, Importadores Neptuno, located in Mexico. Importadores Neptuno manufactures several critical subcomponents for the AdventureWorks Cycles product line. These subcomponents are shipped to the Bothell location for final product assembly. In 2001, Importadores Neptuno, became the sole manufacturer and distributor of the touring bicycle product group.") as IWTextRange;
textRange.CharacterFormat.FontSize = 12f;
Step 9: Add below code example to save the Word document in AWS Lambda.
//Save the Word document into stream
MemoryStream stream = new MemoryStream();
document.Save(stream,FormatType.Docx);
return Convert.ToBase64String(stream.ToArray());
Step 10: Right-click the project and select Publish to AWS Lambda.
Step 11: Create a new AWS profile in the Upload Lambda Function Window. After creating the profile, add a name for the Lambda function to publish. Then, click Next.
Step 12: In the Advanced Function Details window, specify the Role Name as based on AWS Managed policy. After selecting the role, click the Upload button to deploy your application.
Step 13: After deploying the application, you can see the published Lambda function in AWS console.
Step 14: Edit Memory size and Timeout as maximum in General configuration of the AWS Lambda function.
Steps to post the request to AWS Lambda
Step 1: Create a new console project.
step 2: Install the following Nuget packages in your application from Nuget.org.
Step 3: Include the following namespaces in Program.cs file.
using Amazon;
using Amazon.Lambda;
using Amazon.Lambda.Model;
using Newtonsoft.Json;
Step 4: Add the following code snippet in Program.cs to invoke the published AWS Lambda function using the function name and access keys.
//Create a new AmazonLambdaClient
AmazonLambdaClient client = new AmazonLambdaClient("awsaccessKeyID", "awsSecreteAccessKey", RegionEndpoint.USEast2);
//Create new InvokeRequest with published function name.
InvokeRequest invoke = new InvokeRequest
{
FunctionName = "MyNewFunction",
InvocationType = InvocationType.RequestResponse,
Payload = "\"Test\""
};
//Get the InvokeResponse from client InvokeRequest.
InvokeResponse response = client.Invoke(invoke);
//Read the response stream
var stream = new StreamReader(response.Payload);
JsonReader reader = new JsonTextReader(stream);
var serilizer = new JsonSerializer();
var responseText = serilizer.Deserialize(reader);
//Convert Base64String into Word document
byte[] bytes = Convert.FromBase64String(responseText.ToString());
FileStream fileStream = new FileStream("Sample.docx", FileMode.Create);
BinaryWriter writer = new BinaryWriter(fileStream);
writer.Write(bytes, 0, bytes.Length);
writer.Close();
System.Diagnostics.Process.Start("Sample.docx");
By executing the program, you will get the Word document as follows.
From GitHub, you can download the console application and AWS Lambda project.
Click here to explore the rich set of Syncfusion® Word library (DocIO) features.