This is an addon for WebViewer that allows loading media files (.mp3, .mp4, .ogg, .webm, etc.) so that the audio track can be annotated.
See the npm package on @pdftron/webviewer-audio for more information.
Methods
-
<async, static> initializeAudioViewer(instance, options)
-
Initializes the audio viewer so that WebViewer can load media files.
Parameters:
Name Type Description instanceObject The WebViewer instance optionsObject Options object. Properties
Name Type Argument Default Description licensestring <optional>
'' The WebViewer Audio license. showMobileStylingboolean <optional>
true Whether to show styling for mobile devices. generatedPeaksArray.<number> <optional>
null An array of peaks to render the waveform enableRedactionObject <optional>
Enables Redaction tools. Requires a server component to run ffmpeg commands. See: https://www.pdftron.com/documentation/web/guides/video/server-component/ Returns:
A promise that resolves to an object containing the functions needed to load videos in WebViewer.- Type
- AudioFunctions
Example
WebViewer(...) .then(function(instance) { const license = '---- Insert commercial license key here after purchase ----'; const { loadAudio, getFileURL, } = await initializeAudioViewer( instance, { license, showMobileStyling: true, }, ); });
Type Definitions
-
AudioFunctions
-
Type:
- Object
Properties:
Name Type Description loadAudiofunction Loads an audio file for the WebViewer instance passed into initializeAudioViewer. First param is the audio/video url. getFileURLfunction Can only be used in licensed mode. In the demo mode it will only return `null`. Returns the file URL loaded through `loadAudio` until redactions are made. After redactions are made the URL will be a Data URL for the modified file. UIUI The UI namespace of WebViewer Audio, used to update UI elements of WebViewer Audio. Example
WebViewer(...) .then(function(instance) { const license = '---- Insert commercial license key here after purchase ----'; const audioInstance = await initializeAudioViewer( instance, { license, }, ); const { loadAudio, getFileURL } = audioInstance; audioInstance.UI.updateElement('regionDeleteButton', { onClick: () => console.log('do something') }); loadAudio('https://www.mydomain.com/my_audio_url'); instance.Core.docViewer.on('documentLoaded', async () => { // Download the file const anchor = document.createElement('a'); anchor.href = getFileURL(); anchor.target = "_blank"; anchor.download = myAudioFile.mp3; // Auto click on a element, trigger the file download anchor.click(); }); }); -
getFileURL()
-
Can only be used in licensed mode. In the demo mode it will only return `null`. Returns the file URL loaded through `loadAudio` until redactions are made. After redactions are made the URL will be a Data URL for the modified file.
Returns:
- Type
- void
Example
WebViewer(...) .then(function(instance) { const license = '---- Insert commercial license key here after purchase ----'; const { getFileURL, loadAudio, } = await initializeVideoViewer(instance, { license }); ... ... // Download the file const anchor = document.createElement('a'); anchor.href = getFileURL(); anchor.target = "_blank"; anchor.download = myAudioFile.mp3; // Auto click on a element, trigger the file download anchor.click(); }); -
loadAudio(url, options)
-
Loads an audio file for the WebViewer instance passed into initializeAudioViewer.
Parameters:
Name Type Description urlString | Blob | file The audio url, Blob object, or File object. optionsObject Optional options object Properties
Name Type Argument Default Description fileNamestring <optional>
Name of the file. URLs without an extension need this property set generatedPeaksArray.<number> <optional>
null An array of peaks to render the waveform serviceWorkerLocationstring <optional>
'' The folder location of your service worker. The service worker is used to pass custom headers to the requested media. You may need to specify where in which folder this file is located on your server if it is not at the root level. headersObject <optional>
Custom headers to attach when making http requests to provided url Large files can freeze the browser so use this as a workaround. Safari has a known issue when this option is turned on. Some files will not seek correctly on Safari. Returns:
- Type
- void
Examples
WebViewer(...) .then(function(instance) { const license = '---- Insert commercial license key here after purchase ----'; const { loadAudio, } = await initializeVideoViewer(instance, { license }); loadAudio('https://www.mydomain.com/my_video_or_audio_url'); });WebViewer(...) .then(function(instance) { const license = '---- Insert commercial license key here after purchase ----'; const { loadAudio, } = await initializeVideoViewer(instance, { license }); loadAudio('https://www.mydomain.com/my_video_or_audio_url', { headers: { 'Authorization': 'Basic YWxhZGRpbjpvcGVuc2VzYW1l' }, }); });
Events
-
audioPause
-
Event emitted when audio gets paused
Example
WebViewer(...) .then(function(instance) { const { docViewer } = instance; docViewer.on('audioPause', listener); }); -
audioPlay
-
Event emitted when audio begins playing
Example
WebViewer(...) .then(function(instance) { const { docViewer } = instance; docViewer.on('audioPlay', listener); }); -
audioViewerEventsAttached
-
Event emitted when an annotation observer is attached
Example
WebViewer(...) .then(function(instance) { const { docViewer } = instance; docViewer.on('audioViewerEventsAttached', listener); }); -
audioViewerLoaded
-
Event emitted when ffmpeg is loaded
Example
WebViewer(...) .then(function(instance) { const { docViewer } = instance; docViewer.on('audioViewerLoaded', listener); }); -
audioViewerReady
-
Event emitted when audio is loaded, decoded and the waveform drawn
Example
WebViewer(...) .then(function(instance) { const { docViewer } = instance; docViewer.on('audioViewerReady', listener); });