Search code examples
javahtmlpdfflying-saucerxhtmlrenderer

Bookmarks with xhtmlrenderer (iText)


I'm using xhtmlrenderer (Also known as Flying Saucer) with iText to convert HTML to PDF. How would I create bookmarks with this? Does someone with have a small example?

Thanks in advance.


Solution

  • It seems bookmarks were added in R6, but the user guide only gives them a passing reference. with a TODO to the author to add an example later.

    Searching the forums, I found this example:

    <html> 
    <head>  
    <bookmarks>  
      <bookmark name="A bookmark" href="#bm" />  
      <bookmark name="A bookmark 2" href="#bm2" />  
      <bookmark name="A bookmark 3" href="#bm3" />    
      <bookmark name="A bookmark 4" href="#bm4" />  
      <bookmark name="A bookmark invalid" href="#bm99" />  
    </bookmarks> 
    </head> 
    <body>  
       <div style="line-height: 100%; font-size: 12pt; page-break-before: always;">  
          <a name="bm">some text</a>  
       </div>  
       <div style="line-height: 100%; font-size: 12pt; page-break-before: always;">  
          <a name="bm2">some text</a>  
       </div>  
       <div style="line-height: 100%; font-size: 12pt; page-break-before: always;">  
         <a name="bm3">some text</a>  
       </div>  
       <div style="line-height: 100%; font-size: 12pt; page-break-before: always;">  
          <p>some text</p>  <p>some text</p>  <p>some text</p>  <p>some text</p>  <p>some text</p>  <p>some text</p>  
          <p><a name="bm4">and some more text</a></p>  
       </div> 
    </body> 
    </html>` 
    

    So it seems that adding bookmarks is no more than declaring the bookmarks in the <head> and referencing them as anchors in the <body>.

    This should work will with your existing XHTML->PDF conversion without requiring any code changes.