[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Olinks in PDF missing valid destination?
Hi Bob, Looks like the stylesheets could produce invalid link "url(#dest=)" if $fop1.extensions=1 and $insert.olink.pdf.frag=0. In that case, make.olink.href template generates a string without '#something' anchor. The code in olink template in fo/xref.xsl then tries to parse this string as follows and fails: <xsl:variable name="mybeg" select="substring-before($href,'#')"/> <xsl:variable name="myend" select="substring-after($href,'#')"/> <fo:basic-link external-destination="url({concat($mybeg,'#dest=',$myend)})" xsl:use-attribute-sets="olink.properties"> <xsl:copy-of select="$hottext"/> </fo:basic-link> If the $href does not contain #, both $mybeg and $myend would be empty, leading to invalid URL '#dest='. Fix committed in r9825. Regards, Alexey. On Friday, October 25, 2013 12:37:54 am Wood Nick wrote: > Hi Bob, > > I am using docbkx-tools 2.0.14 with the 1.72.0 stylesheets. You are > correct, setting <insertOlinkPdfFrag>1</insertOlinkPdfFrag>in the POM is > the same as <param name="insert.olink.pdf.frag" select="1"/> in the > stylesheet. I am using FOP 1.0 (we run Nexus behind a firewall and so > updates are a challenge) which does not appear to support fragment > identifiers. From your response below I assume FOP 1.1 does? > > Regards > > Nick > > > > From: Mark Craig [mailto:mark.craig@gmail.com] > Sent: Thursday, October 24, 2013 8:52 PM > To: Bob Stayton > Cc: Wood Nick; DocBook Apps > Subject: Re: [docbook-apps] Olinks in PDF missing valid destination? > > Hi Bob, > > What I observed with <insertOlinkPdfFrag> left undefined -- I'm assuming > that means insert.olink.pdf.frag is 0 -- I was getting > external-destination="url(#dest=)" in the .fo. No file name, no fragment. > > I think docbkx-tools 2.0.14 is picking up version 1.76.1 stylesheets. What > I didn't do is get the stylesheets and try without docbkx-tools. > > Regards, > Mark > > On Thu, Oct 24, 2013 at 7:46 PM, Bob Stayton > <bobs@sagehill.net<mailto:bobs@sagehill.net>> wrote: Hi Mark, > Can you clarify one point for me? When <insertOlinkPdfFrag> is not set to > 1, does "not properly resolved" mean the link can open the other PDF > document but not scroll to the proper location, or does it not open the > other PDF at all? I would expect the former. > > I'm not a user of docbkx-tools, but I presume setting <insertOlinkPdfFrag> > is the same as setting the DocBook XSL stylesheet parameter named > 'insert.olink.pdf.frag', right? That parameter's default value should > probably be 1, now that all XSL-FO processors support the fragment > identifiers. > > Bob Stayton > Sagehill Enterprises > bobs@sagehill.net<mailto:bobs@sagehill.net> > > From: Mark Craig<mailto:mark.craig@gmail.com> > Sent: Thursday, October 24, 2013 6:00 AM > To: Wood Nick<mailto:Nick.Wood@ncia.nato.int> ; DocBook > Apps<mailto:docbook-apps@lists.oasis-open.org> Subject: Re: [docbook-apps] > Olinks in PDF missing valid destination? > > By the way, > > When I want to resolve olinks between PDF documents, it looks like I also > need <insertOlinkPdfFrag>1</insertOlinkPdfFrag>. > > Otherwise external-destinations are not properly resolved (though according > to Olink debug messages they are resolved). > > Again, I'm seeing this behavior with 1.76.1. > > Regards, > Mark > > On Oct 23, 2013, at 3:38 PM, Mark Craig wrote: > > > Hi Nick, > > Thanks very much for your help. > > Following your suggestion does the trick: > > <currentDocid>book</currentDocid> > > As a result, the link gets resolved as an internal-destination in the .fo, > and this works fine in the PDF. > > <fo:basic-link internal-destination="chapter"><fo:inline>link to the next > chapter</fo:inline></fo:basic-link>. > > Regards, > Mark > > On Oct 23, 2013, at 2:35 PM, Wood Nick wrote: > > > Mark, > > I do not pretend to be an expert on this - I setup my pdf olinks using > Bob's excellent book plus some guidance you have posted in the past. > However, have you tried adding <currentDocid/> in the <configuration/> of > your POM and then using the sitemap in your olinkdb.xml (as I believe this > provide the location of the documents). > > Regards > > Nick > > > From: Mark Craig [mailto:mark.craig@gmail.com<mailto:mark.craig@gmail.com>] > Sent: Wednesday, October 23, 2013 10:11 AM > To: DocBook Apps > Subject: [docbook-apps] Olinks in PDF missing valid destination? > > Hello, > > In the past I have successfully set up Olink resolution for HTML. > > I have read and tried to implement > http://www.sagehill.net/docbookxsl/OlinkPrintOutput.html#PdfLinkingSetup > But I'm not managing to do the same for PDF. > > A clickable link of the Olink is there in the PDF, but with no valid > destination. > > This is with docbkx-tools 2.0.14, so DocBook XSL 1.76.1 and FOP 1 (I think > 1.1). > > My little test is at https://github.com/markcraig/DOCS-47. > (There's only one Olink, in the para at line 20 of > book.xml<https://github.com/markcraig/DOCS-47/blob/master/src/docbkx/book. > xml#L20>.) > > The main part of the target database > document<https://github.com/markcraig/DOCS-47/blob/master/src/docbkx/olink > db.xml> for the test is minimal: > > <?xml version='1.0' encoding='utf-8'?> > <!DOCTYPE targetset[ > ... > <!ENTITY book SYSTEM '../../target/target.db'> > ]> > <targetset> > <document targetdoc="book" baseuri="book.pdf">&book;</document> > </targetset> > > Although Olink debug messages make it look like the stylesheets are finding > a match for the link, the .fo is missing information. > > In the build output, I see: > > Olink debug: cases for targetdoc='book' and targetptr='chapter' in language > ''. Olink debug: CaseA matched. > Olink debug: CaseA key is the final selection: book/chapter/ > > But the .fo has an external-destination with no actual destination: > > <fo:basic-link show-destination="replace" > external-destination="url(#dest=)" > > ><fo:inline>link to the next chapter</fo:inline></fo:basic-link> > > If I remove the baseuri value from the <document> element in the target > database document, then the external-destination attribute changes a > little: > > <fo:basic-link show-destination="replace" > external-destination="url(#dest=chapter)" > > ><fo:inline>link to the next chapter</fo:inline></fo:basic-link> > > What should I do differently for a valid destination to be generated? > > Thanks for your advice. > Regards, > Mark
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]