Saving Annotations Stored in Salesforce
Saving Annotations in Salesforce
Adding a new ContentVersion record from WebViewer LWC
First, you need to generate a base64 string that is sent to the Apex backend. Use the following function in your config_apex.js file to achieve this:
async function saveDocument() {
const doc = docViewer.getDocument();
if (!doc) {
return;
}
instance.openElement('loadingModal');
const fileType = doc.getType();
const filename = doc.getFilename();
const xfdfString = await docViewer.getAnnotationManager().exportAnnotations();
const data = await doc.getFileData({
// Saves the document with annotations in it
xfdfString
});
let binary = '';
const bytes = new Uint8Array(data);
for (let i = 0; i < bytes.byteLength; i++) {
binary += String.fromCharCode(bytes[i]);
}
const base64Data = window.btoa(binary);
const payload = {
title: filename.replace(/\.[^/.]+$/, ""),
filename,
base64Data,
contentDocumentId: doc.__contentDocumentId
}
// Post message to LWC
parent.postMessage({ type: 'SAVE_DOCUMENT', payload }, '*');
}Passing blob data to Apex
Once you have your document's data converted, you can pass it to Apex. This snippet uses
Creating a new ContentVersion record from blob data
Finally, you can use the below Apex code snippet to create a new ContentVersion record. This sample also links the newly created document to the sObject record you started from.
You can also find the full source code for an end to end flow in this Github repository.
Last updated
Was this helpful?