Skip to main content
nickgates100
Participating Frequently
September 12, 2020
Answered

Getting getSelectedText() value

  • September 12, 2020
  • 1 reply
  • 827 views

I am trying to retrieve the getSelectedText() value from a PREVIEW_SELECTED_END callback to populate the prompt for a Highlight comment entry as follows...  trying to set var [selectedText]

var selectedText;   
const eventOptions = {
           enableFilePreviewEvents: true
    }
    adobeDCView.registerCallback(
        AdobeDC.View.Enum.CallbackType.EVENT_LISTENER,
        function(event) {
            console.log("Event: " + event.type);
            if (event.type === "PREVIEW_SELECTION_END") {
                previewFilePromise.then(adobeViewer => {
                    adobeViewer.getAPIs().then(apis => {
                        apis.getSelectedContent()
                            .then(result => selectedText = result.data)
                            .catch(error => console.log(error));
                    });
                });
                console.log("selectedText = " + selectedText);
            }
        }, eventOptions
   );

...which does work, but not always. For instance, the first selection of text appears to block the Tool popover, clear and select again and it works, but then only randomly thereafter. What am I missing?

 

Any help greatly appretiated, Nick Gates

 

 

This topic has been closed for replies.
Correct answer Shubhanshu Dixit

Hi Nick,
Thanks for choosing PDF Embed APIs. You snippet seems to miss one thing, you are using console.log outside the promise which might not get resolved before console.log statement. Below is the updated snippet which should work in your case.

var selectedText;   
const eventOptions = {
           enableFilePreviewEvents: true
    }
    adobeDCView.registerCallback(
        AdobeDC.View.Enum.CallbackType.EVENT_LISTENER,
        function(event) {
            console.log("Event: " + event.type);
            if (event.type === "PREVIEW_SELECTION_END") {
                previewFilePromise.then(adobeViewer => {
                    adobeViewer.getAPIs().then(apis => {
                        apis.getSelectedContent()
                            .then(result => {
                                 selectedText = result.data;
                                 console.log("selectedText = " + selectedText);
                            })
                            .catch(error => console.log(error));
                    });
                });
            }
        }, eventOptions
   );

  
Thanks

1 reply

Shubhanshu DixitCorrect answer
Adobe Employee
September 14, 2020

Hi Nick,
Thanks for choosing PDF Embed APIs. You snippet seems to miss one thing, you are using console.log outside the promise which might not get resolved before console.log statement. Below is the updated snippet which should work in your case.

var selectedText;   
const eventOptions = {
           enableFilePreviewEvents: true
    }
    adobeDCView.registerCallback(
        AdobeDC.View.Enum.CallbackType.EVENT_LISTENER,
        function(event) {
            console.log("Event: " + event.type);
            if (event.type === "PREVIEW_SELECTION_END") {
                previewFilePromise.then(adobeViewer => {
                    adobeViewer.getAPIs().then(apis => {
                        apis.getSelectedContent()
                            .then(result => {
                                 selectedText = result.data;
                                 console.log("selectedText = " + selectedText);
                            })
                            .catch(error => console.log(error));
                    });
                });
            }
        }, eventOptions
   );

  
Thanks

nickgates100
Participating Frequently
September 20, 2020

Thank you for the reply.

 

That does seem to have done the job, thank you!

 

Nick