Flatten PDF forms using JavaScript
Annotation or form flattening refers to the operation that changes annotations (such as markup, widgets, 3D models, etc.) into a static area that is part of the PDF document, just like the other text and images in the document. By flattening and merging existing annotation appearances with page content, the original annotations are deleted from the PDF pages. Try out the flatten annotations sample in WebViewer Showcase.
Forms share a relationship with annotations because the visual display of a form is a widget annotation. The process of flattening annotations therefore can optionally flatten forms as well.
Note that it is not possible to undo the flatten operation. If you are interested in modifying annotations so they cannot be edited or deleted then you should consider setting to ReadOnly instead of flattening them. See the ReadOnly property on the Annotation class for more details.
Flattening annotations can be performed when getting the PDF file data or while downloading the PDF file locally. There is also the option to flatten select annotations.
Flattening annotations when getting PDF data
Use the getFileData method and the flatten option for the annotations to be flattened in the document output when getting the data for uploading to a server.
WebViewer({
fullAPI: true,
// other constructor options
}, viewerElement).then(instance => {
const { documentViewer, annotationManager } = instance.Core;
document.getElementById('myBtn').addEventListener('click', async () => {
const doc = documentViewer.getDocument();
const xfdfString = await annotationManager.exportAnnotations();
const options = { xfdfString, flatten: true };
const data = await doc.getFileData(options);
const arr = new Uint8Array(data);
const blob = new Blob([arr], { type: 'application/pdf' });
// upload blob to your server
});
});WebViewer({
fullAPI: true,
// other constructor options
}, viewerElement).then(instance => {
const { docViewer, annotManager } = instance;
document.getElementById('myBtn').addEventListener('click', async () => {
const doc = docViewer.getDocument();
const xfdfString = await annotManager.exportAnnotations();
const options = { xfdfString, flatten: true };
const data = await doc.getFileData(options);
const arr = new Uint8Array(data);
const blob = new Blob([arr], { type: 'application/pdf' });
// upload blob to your server
});
});Flattening annotations when downloading PDF
Use the downloadPdf method and the flatten option for the annotations to be flattened in the document output when downloading the PDF locally.
Flattening annotations in the viewer
Use flattenAnnotations method to flatten all annotations into a document.
Flattening select annotations
Use the flatten method on annotation objects to flatten select annotations into the document.
Last updated
Was this helpful?