On 10/8/18 10:09 AM, Hans van der Meer wrote:
> I am embedding links to an URL in my documents. Although it is used in
> XML-documents, you might be able to use the gist of this code that
> generates a clickable link. Perhaps you find it useful. 

Many thanks for your reply, dr. Hans van der Meer.

Sorry, but I’m afraid I don’t see the way of generating an URL to a
non-external document in your code.

After all, the document is embedded in the PDF document itself.

Pablo

> % Return the code when clicking the link.
> \def\URIReturnCode#1{\ctxlua{tex.print(hvdm.urireturncode("#1"))}}
> 
> — Some Lua code needed:
> -- Check URI
> 
> socket.http.TIMEOUT = 5-- set URI timeout in seconds
> hvdm.urireturncode = function (theuri)
> -- Differentiate between file and http protocols.
> local first,last = string.find(theuri, "file://")
> if first == nil then
> -- We have http to search for.
> local content, status, authinfo = socket.http.request{
> method = "HEAD",
> url = theuri,
> }
> return type(status) == "number" and status or "failure"
> else
> -- We must ascertain the existence of the file.
> local thefile = io.open(string.sub(theuri, last+1, -1), "r")
> if thefile then
> io.close(thefile)
> return "200"
> else
> return "404"
> end
> end
> end
> 
> % ..... Place an url link
> .....................................................
> 
> % BEWARE: spaces in file names must be %20 in the link !!!
> 
> % This global definition of the URLbase cannot be missed.
> \def\THEURLBASE{http://}
> 
> % Signal the occurence of timeout on URI search.
> \newif\ifURItimeout
> 
> \startxmlsetups xmlcommon:urlbase
> \edef\THEURLBASE{\xmlstrippednolines{#1}{.}}
> 
> % Reset the URI timeout for new URLbase.
> \global\URItimeoutfalse
> \stopxmlsetups
> 
> \startxmlsetups xmlcommon:url
> 
> % Define the full uri.
> \edef\theurl{\THEURLBASE\xmlatt{#1}{link}}
> 
> % File suffix should be one of the list.
> \doifelse{\FileSuffixList{\xmlatt{#1}{link}}
> {pdf,jpg,jpeg,html,png,tif,tiff}}{\empty}
> {\def\suffix{.impossible}}% no suffix from the list here
> {\def\suffix{\empty}}% one of the list is present
> 
> % First try link as given, beware of unreachable site.
> \ifURItimeout
> % For previously timeout on this site.
> \else
> \edef\returncode{\URIReturnCode{\theurl}}
> \doif{\returncode}{failure}
> {
> \global\URItimeouttrue
> \errorcall{#1}{url access fails for \THEURLBASE\xmlatt{#1}{link}}
> }
> \fi
> 
> % On URI timeout there is no hope to find the file.
> \ifURItimeout
> \else
> % When there is no suffix from the list, try several.
> \doifnot{\suffix}{\empty}
> {
> \scratchcounter=200\relax
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.pdf}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.jpg}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.jpeg}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.html}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.png}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.tiff}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> \ifnum\returncode=\scratchcounter\else
> \def\suffix{.tif}
> \edef\returncode{\URIReturnCode{\theurl\suffix}}
> \fi
> }
> 
> % Give up if returncode other then 200.
> \ifnum\returncode=200\relax
> % Page number might be added.
> \doifelse{\xmlatt{#1}{page}}{\empty}
> {\let\thep\empty}
> {\edef\thep{\letterhash page=\xmlatt{#1}{page}}}
> 
> % Place the link, ref-attribute prevales in the presentation.
> \doifelse{\xmlatt{#1}{ref}}{\empty}
> {\edef\temp{\xmlatt{#1}{link}}}
> {\edef\temp{\xmlatt{#1}{ref}}}
> \goto
> {\FirstLastCharacters{\temp}{\xmlatt{#1}{maxsize}}}
> [url(\theurl\suffix\thep)]
> \else
> \errorcall{#1}
> {\THEURLBASE\xmlatt{#1}{link} not found (\returncode)}
> \fi
> 
> \fi% end of URItimeout
> \stopxmlsetups
> 
> 
>> On 8 Oct 2018, at 00:39, Hans Hagen <j.ha...@xs4all.nl
>> <mailto:j.ha...@xs4all.nl>> wrote:
>>
>> On 10/7/2018 8:41 PM, Pablo Rodriguez wrote:
>>> On 10/7/18 8:33 PM, Hans Hagen wrote:
>>>> On 10/7/2018 8:19 PM, Pablo Rodriguez wrote:
>>>>> [...]
>>>>> Is there a way to hyperlink to an attached document? I mean, no matter
>>>>> whether it has been generated by ConTeXt or not.
>>>>> i have no clue what you mean
>>> Is there a way to link to a page or a destination (such as in
>>> https://www.adobe.com/content/dam/acom/en/devnet/pdf/PDF32000_2008.pdf#page=500
>>> or
>>> https://www.adobe.com/content/dam/acom/en/devnet/pdf/PDF32000_2008.pdf#nameddest=G12.2456615)
>>> to a document that is attached (using \attachment) in ConTeXt?
>>> I hope it is clear now,
>> it points to the media mess .. which relates to either or not obsolete
>> stuff (flash related)
>>
>> anyway, i don't know as i never embed pdf docs and if i would i'd have
>> no reason to refer to them (it probably depends on a viewer extracting
>> the attachment, caching it and then providing access: it makes no
>> sense to waste time on features that are not supported or maybe only
>> by acrobat unless it's a well paid projects in which case throw away
>> code is a bit less waste of time because it brings foon on the table)
>>
>> Hans


-- 
http://www.ousia.tk
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to