Re: [docbook-apps] Olinks in PDF missing valid destination?

From
Mark Craig <>
Date
2013-10-24T18:52:01+00:00
ID
Thread
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 <> 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


From: Mark Craig 

Sent: Thursday, October 24, 2013 6:00 AM

To: Wood Nick ; DocBook Apps 

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:] 
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.)

    

    
 

    

    

    
The 
    main part of the target 
    database document 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