A while ago, I posted a script I was using for copying links to selected text in PDF files. This one here is an improved version that will encode empty spaces and everything else it needs to encode to create a valid link. It uses a tip offered by @BLUEFROG in this thread, and it circumvents a minor deficiency in it with regards to the linebreaks.
A couple of caveats:
- If I am not mistaken, links to selected text need to start at the word boundary. If you create a link and it does not work, double-check if the start of the selection coincides with the beginning of a word.
- If the selection spans across pages, the link won’t work.
So, to be clear, don’t select text on more than one PDF page, and always start the selection at the beginning of words.
--- bcdav 2022-05-15-14-52 ---
use scripting additions
tell application id "DNtp"
if not (exists think window 1) or not (exists content record) then return display alert "DEVONthink" message "Error: no document open" as warning
if not (exists selected text of think window 1) then return display alert "DEVONthink" message "Error: no text selected" as warning
set the clipboard to my gsub((get the reference URL of (content record of think window 1)) & "?search=" & (do JavaScript "encodeURIComponent('" & my gsub((selected text of think window 1 as string), linefeed, "∫") & "');" in think window 1), "%E2%88%AB", "%0A")
end tell
on gsub(theString, old, new)
set {TID, text item delimiters} to {text item delimiters, old}
set theStringItems to text items of theString
set text item delimiters to new
set theString to theStringItems as text
set text item delimiters to TID
return theString
end gsub
Suggestions to improve upon it are more than welcome.
P.s.: @AW2307, perhaps this version could be useful to you.