Some test text!
Web / Guides / Save a document
There are numerous methods of saving a document depending on what you are looking to do. This may involve triggering a download on the client to save to the local file system or saving the file data to the server. Regardless of the outcome, WebViewer has APIs to support the features you would like to implement.
The simplest way to retrieve document data is by getting the Document object and using the getFileData
API.
Below is a basic example of setting up WebViewer and using the getFileData
API to retrieve document data by clicking a custom header button.
WebViewer({
initialDoc: "mydoc.pdf",
licenseKey: 'Insert commercial license key here after purchase',
}, document.getElementById('viewer'))
.then(instance => {
const { documentViewer, annotationManager } = instance.Core;
// Add header button that will get file data on click
instance.UI.setHeaderItems(header => {
header.push({
type: 'actionButton',
img: '...',
onClick: async () => {
const doc = documentViewer.getDocument();
const xfdfString = await annotationManager.exportAnnotations();
const data = await doc.getFileData({
// saves the document with annotations in it
xfdfString
});
const arr = new Uint8Array(data);
const blob = new Blob([arr], { type: 'application/pdf' });
// Add code for handling Blob here
}
});
});
});
The getFileData
API also takes in an options object to change some of the characteristics of the saved file data. The most commonly used options are:
xfdfString
: A string containing the XFDF annotation data to include in the downloaded file. This can be retrieved from the exportAnnotations
function on AnnotationManager
.downloadType
: A string value for the output format. Possible values are:
'pdf'
: Get file data in a PDF format. This is the default option and can be used for any loaded document.'office'
: If an office file is loaded (docx, xlsx, pptx, etc) then get file data in the current document format.flags
: optional enum flags for how to save the PDF data. They can be found in Core.SaveOptions
and the most commonly used values are:
REMOVE_UNUSED
: Remove unused PDF data during save. This is the default option.LINEARIZED
: Optimize data for speed and remove unused data.After getting a Blob object, there are a variety of ways to save it from the browser:
Browser API
FileSaver API
Fetch API
XMLHttpRequest API
const url = URL.createObjectURL(blob);
window.open(url);
The UI
namespace provides a downloadPdf
API with similar options to getFileData
.
const options = {
filename: 'myDocument.pdf',
xfdfString,
flags: Core.SaveOptions.LINEARIZED,
downloadType: 'pdf'
};
instance.UI.downloadPdf(options);
Getting document data without a viewer is possible and very similar to the method mentioned in this guide.
Get document data without a viewer
To get document data as a blob without a viewer.
Loading and saving annotations
To import/load and export/save annotations with a PDF document.
Saving a document in Salesforce
To save a PDF through WebViewer in a Salesforce deployment.
Sending data with XMLHttpRequest
Mozilla documentation on sending binary data using XMLHttpRequest.
Sending data with fetch
Google documentation on working with fetch API.
Sending post request with jQuery
jQuery documentation on using post requests.
Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales