<!DOCTYPE html>
<html lang="en">

<!--

     Licensed to the Apache Software Foundation (ASF) under one or more
     contributor license agreements.  See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
     the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE- 2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
     -->

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="The Apache PDFBox™ library is an open source Java tool for working with PDF documents. This project allows creation of new PDF documents, manipulation of existing documents and the ability to extract content from documents. Apache PDFBox also includes several command-line utilities. Apache PDFBox is published under the Apache License v2.0.">

    <title>Apache PDFBox |  External Links</title>

    <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <link href="/css/prism.css" rel="stylesheet">
    <link href="/css/styles.css" rel="stylesheet">

    

    

    

</head>


<body>

  <header class="main-header">
    <div class="main-header-logo">
      <a href="/" aria-label="Navigation to the PDFBox home page">
        <svg focusable="false" class="pdfbox-brand-toolbox" viewBox="0 0 744.09448819 1052.3622047" xmlns="http://www.w3.org/2000/svg" aria-labelledby="brandImageTitle brandImageDesc" role="img">
  <title id="brandImageTitle">PDFBox Brand Logo</title>
  <desc id="brandImageDesc">The PDFBox logo showing a toolbox.</desc>
  <g transform="matrix(1.25 0 0 -1.25 -317.14 1018.08)" clip-path="url(#clipPath3375)">
    <path d="M821.924 376.535L463.24 122.525l-203.83 76.86c23.89 6.02 46.87 15.197 68.335 27.29 60.063 33.835 105.686 88.46 128.282 153.59 2.634 4.66 8.11 6.92 13.265 5.47 4.667-1.31 8.01-5.41 8.353-10.247l-3.572-188.12 334.99 193.957c2.41 1 5.113 1.028 7.54.075 2.315-.907 4.21-2.64 5.32-4.865zm-1.307 97.91l.13-78.324c-.87-2.72-3.342-4.61-6.197-4.75-3.104-.14-5.924 1.8-6.893 4.75l1.29 79.54c.386 2.92 2.893 5.09 5.835 5.04 3.37-.04 6.022-2.89 5.835-6.25z"/>
    <path d="M751.88 651.666c-.237.002-.48-.022-.723-.077l-363.512-25.15c-10.37-.73-19.583-6.76-24.588-15.87-6.943-12.64-4.677-28.26 5.864-37.72 2.85-2.56 6.22-4.49 8.97-7.16 2.19-2.12 3.93-4.65 5.12-7.45 23.7-26.86 30.3-64.76 17.08-98.05-4.75-11.96-11.97-22.77-21.2-31.73l-73.74 16.1 46.69 115.89c2.01 3.07.64 7.21-2.8 8.49-2.8 1.03-5.91-.34-7.03-3.1L286.49 448.8l-11.79 4.32c-2.097.28-4.21-.39-5.76-1.825-1.16-1.077-1.925-2.516-2.16-4.083l-11.53-189.68c1.66-1.83 4.03-2.85 6.5-2.798 2.533.05 4.913 1.22 6.5 3.197 6.22 22.46 11.216 45.23 14.96 68.22 5.137 31.55 7.91 63.43 8.3 95.39l136.152-15.28c2.396-1.09 5.032-1.56 7.66-1.35 2.75.22 5.396 1.16 7.663 2.73 41.62 19.22 83.375 38.15 125.26 56.79 41.615 18.52 83.36 36.75 125.23 54.68 1.935-.16 3.703-1.16 4.843-2.73 1.266-1.74 1.618-3.99.948-6.04-3.8-3.45-7.333-7.19-10.575-11.17-3.5-4.3-6.65-8.88-9.42-13.69.11-.34.22-.68.35-1.01.32-.85.7-1.68 1.25-2.41 2.42-3.16 7.04-3.55 9.96-.84 8.66 9.71 19.21 17.557 31.01 23.05 10.67 4.97 22.17 7.927 33.92 8.717 2.58 1.626 4.23 4.39 4.43 7.437.14 2.06-.41 4.103-1.56 5.815-3.63-.24-7.27.26-10.71 1.47-3.55 1.25-6.81 3.23-9.55 5.815l19.55 78.14c-1.4 1.684-3.13 3.07-5.08 4.06-2.28 1.16-4.81 1.76-7.37 1.746-53.05-4.71-106.21-8.08-159.433-10.11-53.34-2.035-106.73-2.72-160.1-2.056-3.79-.575-6.82 3.092-5.54 6.7.63 1.784 2.31 2.98 4.2 2.996l321.783 26.06c2.094.873 3.99 1.933 5.74 3.18 1.46 1.036 2.987 2.365 2.947 4.34-.034 1.75-1.484 3.09-3.154 3.11zm-23.61-56.02c.952-.32 1.776-.934 2.354-1.755.472-.67.76-1.45.833-2.27l-12.96-35.37c-2.706-3.39-5.87-6.4-9.404-8.92-3.324-2.37-6.945-4.3-10.77-5.73l-260.77-58.65-21.01 80.83 311.727 31.88z"/>
    <path d="M786.68 627.94c.393-18.97 2.614-37.734 6.564-56.05 3.873-17.958 9.463-35.75 19.087-51.71 3.54-5.854 7.58-11.385 12.08-16.53 1.07-1.608 1.71-3.462 1.86-5.386.14-1.842-.16-3.69-.9-5.385-54.19-15.56-108.32-31.34-162.39-47.35-54.2-16.05-108.33-32.33-162.39-48.85-.23 1.43.04 2.9.78 4.15 1.07 1.81 2.96 2.99 5.06 3.13l271.54 104.43c-4.43 19.56-7.17 39.46-8.19 59.49-.99 19.68-.32 39.4 2.02 58.97.81 4.06 4.63 6.79 8.74 6.24 2.88-.39 5.27-2.4 6.15-5.16z"/>
  </g>
</svg>

        <svg focusable="false" class="pdfbox-brand-text" xmlns="http://www.w3.org/2000/svg" style="isolation:isolate" viewBox="0 0 109.81066666651577 30.943999999957384" aria-labelledby="brandTextTitle brandTextDesc" role="img">
  <title id="brandTextTitle">PDFBox brand text</title>
  <desc id="brandTextDesc">PDFBox, the brand text.</desc>
  <path d="M0 .31h6.528q1.792 0 3.157.47 1.366.468 2.475 1.663 1.11 1.194 1.536 2.816.427 1.57.427 4.3 0 2-.256 3.45-.214 1.41-.982 2.64-.896 1.492-2.39 2.345-1.492.81-3.924.81H4.36v11.87H0V.305zm4.352 14.42h2.09q1.323 0 2.05-.383.724-.384 1.065-1.024.342-.683.384-1.622.09-.93.09-2.09 0-1.06-.08-2-.04-.98-.38-1.66-.3-.72-.98-1.11-.68-.43-1.96-.43H4.36v10.32z" fill-rule="evenodd"/>
  <path d="M17.333.31h6.443q3.712 0 5.675 2.09 1.97 2.048 1.97 5.76v14.208q0 4.267-2.09 6.315-2.05 2.005-5.93 2.005h-6.06V.308zm4.352 26.282h2.006q1.84 0 2.61-.896.77-.94.77-2.9V8.16q0-1.792-.72-2.773-.72-.982-2.64-.982H21.7v22.187z" fill-rule="evenodd"/>
  <path d="M35.583.31h12.97v4.095h-8.618v9.216h7.51v4.1h-7.51v12.97h-4.352V.31z"/>
  <path d="M51.417.31h6.357q2.09 0 3.54.64 1.495.64 2.433 1.706.94 1.067 1.323 2.475.427 1.37.427 2.86V9.1q0 1.236-.214 2.09-.17.853-.554 1.493-.39.64-.94 1.152-.56.47-1.28.896 1.53.73 2.26 2.18.72 1.41.72 3.8v1.71q0 4.01-1.97 6.15-1.92 2.13-6.19 2.13H51.4V.31zm4.352 26.026h1.87q1.32 0 2.05-.384.77-.384 1.15-1.067.38-.682.47-1.62.08-.94.08-2.05 0-1.15-.13-2.004-.13-.85-.56-1.4-.386-.6-1.11-.89-.727-.3-1.92-.3h-1.92v9.73zm0-13.568h1.96q2.17 0 2.9-1.067.77-1.1.77-3.2 0-2.04-.86-3.07-.81-1.02-2.99-1.02h-1.79v8.37z" fill-rule="evenodd"/>
  <path d="M69.027 16.31q0-1.323.17-2.433.17-1.11.64-1.962.768-1.408 2.22-2.262 1.45-.853 3.455-.853t3.456.853q1.45.854 2.22 2.262.468.853.64 1.962.17 1.11.17 2.432v7.12q0 1.32-.17 2.43-.172 1.11-.64 1.96-.77 1.4-2.22 2.26-1.45.85-3.456.85-2.005 0-3.456-.86-1.45-.854-2.22-2.26-.468-.855-.64-1.964-.17-1.11-.17-2.43V16.3zm4.352 7.807q0 1.238.55 1.878.6.597 1.58.597.98 0 1.53-.597.59-.64.59-1.878v-8.49q0-1.238-.6-1.835-.557-.64-1.538-.64-.98 0-1.58.64-.553.597-.553 1.835v8.49z" fill-rule="evenodd"/>
  <path d="M88.316 19.637L83.24 9.057h4.607l2.688 6.143 2.688-6.144h4.608l-5.16 10.58 5.42 11.052h-4.61l-2.94-6.613-2.94 6.613h-4.61l5.34-11.05z"/>
  <path d="M102.883 5.28h1.2q.784 0 1.168-.224.4-.24.4-.784 0-.464-.35-.672-.33-.224-.88-.224h-1.53V5.28zm-1.056-2.864h2.56q2.32 0 2.32 1.904 0 .48-.144.816-.128.336-.368.56-.24.224-.56.352-.304.112-.656.16l1.93 2.96h-1.28L103.7 6.24h-.817v2.928h-1.056V2.416zm6.832 3.376q0-.976-.37-1.84-.37-.864-.99-1.504-.63-.64-1.48-1.008-.85-.384-1.81-.384t-1.81.384q-.85.368-1.47 1.008t-1 1.504-.37 1.84q0 .976.364 1.84.37.864.992 1.504t1.47 1.024q.85.368 1.81.368.96 0 1.805-.368.85-.384 1.47-1.024.625-.64.99-1.504.37-.864.37-1.84zm-10.44 0q0-1.2.45-2.256.46-1.056 1.25-1.84t1.84-1.232Q102.82 0 104.02 0t2.255.464q1.056.448 1.84 1.232t1.232 1.84q.464 1.056.464 2.256 0 1.2-.46 2.256-.45 1.056-1.23 1.84t-1.84 1.248q-1.05.448-2.25.448t-2.25-.448q-1.053-.464-1.84-1.248t-1.25-1.84q-.45-1.056-.45-2.256z" fill-rule="evenodd"/>
</svg>

      </a>
    </div>
    <nav class="wrapper">
      <input type="checkbox" id="menu-toggle">
      <label for="menu-toggle" class="label-toggle"></label>
      <ul>
        <li><a href="/blog">Blog</a></li>
      </ul>
    </nav>
</header>


    <div class="container">

        <div class="row row-offcanvas row-offcanvas-left">
            <div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar">

                <ul class="sidebar">
                    <li class="sidebar-header">Apache PDFBox</li>
                    <li><a href="/index.html">Overview</a></li>
                    <li><a href="https://www.apache.org/licenses">License</a></li>
                    <li><a href="/download.html">Download</a></li>

                    <li class="sidebar-header">Community</li>
                    <li><a href="/support.html">Support</a></li>
                    <li><a href="/mailinglists.html">Mailing Lists</a></li>
                    <li><a href="https://issues.apache.org/jira/browse/PDFBOX">Issue Tracker</a></li>
                    <li><a href="/team.html">Project Team</a></li>

                    <li class="sidebar-header">Documentation</li>
                    <li class="sidebar-node" id="v4-0">
                        <a href="#">4.0 (not released)</a>
                        <ul>
                            <li><a class="sidebar-node" id="v4-0-migration" href="/4.0/migration.html">Migration Guide</a></li>
                        </ul>
                    </li>
                    <li class="sidebar-node" id="v3-0">
                        <a href="#">3.0</a>
                        <ul>
                            <li><a class="sidebar-node" id="v3-0-migration" href="/3.0/migration.html">Migration Guide</a></li>
                            <li><a href="/3.0/getting-started.html">Getting Started</a></li>
                            <li><a href="/3.0/dependencies.html">Dependencies</a></li>
                            <li><a href="/3.0/commandline.html">Command-Line Tools</a></li>
                            <li><a href="/3.0/faq.html">FAQ</a></li>
                            <li><a href="https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.2/index.html">API Docs&emsp;<small>via javadoc.io</small></a></li>
                        </ul>
                    </li>
                    <li class="sidebar-node" id="v2-0">
                        <a href="#">2.0</a>
                        <ul>
                            <li><a href="/2.0/migration.html">Migration Guide</a></li>
                            <li><a href="/2.0/getting-started.html">Getting Started</a></li>
                            <li><a href="/2.0/examples.html">Examples</a></li>
                            <li><a href="/2.0/dependencies.html">Dependencies</a></li>
                            <li class="sidebar-node" id="v2-0-cookbook">
                                <a href="#">Cookbook</a>
                                <ul>
                                    <li><a href="/2.0/cookbook/encryption.html">Document Encryption</a></li>
                                </ul>
                            </li>
                            <li><a href="/2.0/commandline.html">Command-Line Tools</a></li>
                            <li><a href="/2.0/faq.html">FAQ</a></li>
                            <li><a href="https://javadoc.io/doc/org.apache.pdfbox/pdfbox/2.0.31/index.html">API Docs&emsp;<small>via javadoc.io</small></a></li>
                        </ul>
                    </li>
                    <li class="sidebar-header">Development</li>
                    <li><a href="/building.html">Building from Source</a></li>
                    <li><a href="/codingconventions.html">Coding Conventions</a></li>
                    <li><a href="/siteupdate.html">Update the Website</a></li>
                    <li><a href="https://ci-builds.apache.org/job/PDFBox/">Jenkins</a></li>
                    <li><a href="https://sonarcloud.io/dashboard?id=pdfbox-reactor">SonarCloud</a></li>
                    <li><a href="https://issues.apache.org/jira/browse/PDFBOX">JIRA</a></li>
                    <li><a href="/ideas.html">Ideas</a></li>
                    <li><a href="/references.html">External Links</a></li>

                    <li class="sidebar-header">Apache Software Foundation</li>
                    <li><a href="https://www.apache.org/foundation/">About</a></li>
                    <li><a href="/security.html">Security</a></li>
                    <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                    <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                </ul>
		<!-- dontation page logo/link-->
		<a href="https://www.apache.org/foundation/contributing.html"><img width="135" src="/images/SupportApache.jpg" alt="Support Apache"></a>
		<!-- ASF events page logo/link -->
		<a  href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png" alt="Apache events"></a>
            </div>
            <div class="col-xs-12 col-sm-9">
                <h1 id="external-links" tabindex="-1">External Links</h1>
<p>This page lists projects that utilize PDFBox and articles that have been written about PDFBox.
Please file an <a href="https://issues.apache.org/jira/browse/PDFBOX">improvement issue</a> to get new projects or articles added to this page, or to update the information on existing links.</p>
<h2 id="projects-using-pdfbox" tabindex="-1">Projects Using PDFBox</h2>
<table>
<thead>
<tr>
<th>Project Name</th>
<th>License</th>
<th>Project Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://www.alfresco.com/">Alfresco</a></td>
<td>LGPL - commercial services/support/training is available</td>
<td>Alfresco is an open source, open-standards content repository built by the most experienced content management team that includes the co-founder of Documentum.</td>
</tr>
<tr>
<td><a href="https://nutch.apache.org/">Apache Nutch</a></td>
<td>Apache License v2</td>
<td>Apache Nutch is open source web-search software. It builds on Apache Lucene, adding web-specifics, such as a crawler, a link-graph database, parsers for HTML and other document formats, etc.</td>
</tr>
<tr>
<td><a href="https://tika.apache.org/">Apache Tika</a></td>
<td>Apache License v2</td>
<td>Apache Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries.</td>
</tr>
<tr>
<td><a href="http://jomic.sourceforge.net/">Jomic</a></td>
<td>GPL</td>
<td>Jomic is a viewer for comic book archives.</td>
</tr>
<tr>
<td><a href="http://jpdfunit.sourceforge.net/">JpdfUnit</a></td>
<td>Apache License v2</td>
<td>pdfUnit is a framework for testing a generated pdf document with the JUnit Test Framework.</td>
</tr>
<tr>
<td><a href="https://www.liferay.com/">Liferay Portal</a></td>
<td>MIT</td>
<td>Liferay Portal is an open source portal that helps organizations collaborate more efficiently by providing a consolidated view of disparate applications.</td>
</tr>
<tr>
<td><a href="http://gmod.org/wiki/LuceGene">LuceGene</a></td>
<td>Artistic License</td>
<td>LuceGene is an open-source document/object search and retrieval system specially tuned for bioinformatics text databases and documents.</td>
</tr>
<tr>
<td><a href="https://www.lutece.paris.fr/">Lutece</a></td>
<td>BSD-like</td>
<td>Lutece is a portal engine which allows you to easily create your websites or intranets based upon HTML, XML content.</td>
</tr>
<tr>
<td><a href="http://mmapps.sourceforge.net/lucenemodule/">MMBase Lucene Module</a></td>
<td>MPL</td>
<td>MMBase Lucene Module is a plugin (module) for the MMBase content management system that enables Lucene full text search through it's content, and thanks to PDFBox also PDF content.</td>
</tr>
<tr>
<td><a href="http://www.opencms.org/">OpenCms</a></td>
<td>LGPL</td>
<td>MMBase Lucene Module is a plugin (module) for the MMBase content management system that enables Lucene full text search through it's content, and thanks to PDFBox also PDF content.</td>
</tr>
<tr>
<td><a href="https://www.opensearchserver.com/">OpenSearchServer</a></td>
<td>GPLv3</td>
<td>An open source search engine and crawler based on best open source technologies. It is a modern search engine and a suite of high-powered full text search algorithms.</td>
</tr>
<tr>
<td><a href="https://www.orbeon.com/">Orbeon PresentationServer</a></td>
<td>LGPL</td>
<td>Orbeon PresentationServer (OPS) is an open source J2EE-based platform for XML-centric web applications. OPS is built around XHTML, XForms, XSLT, XML pipelines, and Web Services, which makes it ideal for applications that capture, process and present XML data. Commercial consulting/training/support is available through orbeon.</td>
</tr>
<tr>
<td><a href="https://github.com/andrescg2sj/PDFJuice">PDFJuice</a></td>
<td>Apache License v2</td>
<td>This project provides some tools that help the user to extract structured information form PDF documents. Currently, the program is able to export them to HTML.</td>
</tr>
<tr>
<td><a href="https://www.rewoo.de/">REWOO Scope</a></td>
<td>Commercial</td>
<td>REWOO Scope is an Enterprise Content Management (ECM) software to organize, structure and consolidate enterprise data. Apache PDFBox is an integral part to read and index PDF documents.</td>
</tr>
<tr>
<td><a href="https://www.searchblox.com/">SearchBlox</a></td>
<td>Commercial</td>
<td>SearchBlox is a high-performance corporate search software designed for the Java 2 Enterprise Edition (J2EE) platform.</td>
</tr>
<tr>
<td><a href="https://www.semanticscholar.org/">Semantic Scholar</a></td>
<td>Web Based</td>
<td>Semantic Scholar is a new service from AI2 for scientific literature search and discovery, focusing on semantics and textual understanding.</td>
</tr>
<tr>
<td><a href="https://github.com/esialb/simplexrepaginator">SimplexRepaginator</a></td>
<td>Apache License v2</td>
<td>Simplex Repaginator converts simplex-scanned PDFs into properly duplex-paginated PDFs and vice versa.</td>
</tr>
<tr>
<td><a href="http://terrier.org/">Terrier</a></td>
<td>MPL</td>
<td>Terrier is software for the rapid development of Web, intranet and desktop search engines.</td>
</tr>
<tr>
<td><a href="https://triboni.com/">Triboni GinkGO</a></td>
<td>Commercial</td>
<td>Triboni GinkGO is a highly scalable J2EE services platform that is based on a simple XML business object defintion and scripting language. Together with XSLT content centric web applications can be configured in a very short time.</td>
</tr>
</tbody>
</table>
<h2 id="articles%2Fbooks" tabindex="-1">Articles/Books</h2>
<table>
<thead>
<tr>
<th>Article Name</th>
<th>Article Abstract</th>
</tr>
</thead>
<tbody>
<tr>
<td>Build an eDoc Reader for your iPod <br/> <a href="http://www.oreillynet.com/pub/a/mac/2004/12/14/ipod_reader.html">Part 1 - User Interface</a> <br/> <a href="http://www.oreillynet.com/pub/a/mac/2004/12/17/ipod_reader.html">Part 2 - Document Reading Engine</a> <br/> <a href="http://www.oreillynet.com/pub/a/mac/2005/01/07/ipod_reader.html">Part 3 - <em>Integration with PDFBox</em></a></td>
<td>A three part article that discusses the implementation of the PodReader application. PodReader is Cocoa application written in Objective-C and article discusses how to use the Cocoa-Java bridge to integrate with the Java version of PDFBox.</td>
</tr>
<tr>
<td><a href="http://www.manning.com/hatcher2/">Lucene In Action</a></td>
<td>A book that discusses integrating with the lucene search engine. One chapter discusses how to index various file formats and highlights PDFBox for indexing PDF documents.</td>
</tr>
<tr>
<td><a href="http://java.sys-con.com/node/48543">Java Developers Journal - March 2005</a></td>
<td>An article written by the lead developer of PDFBox discussing text extraction and AcroForm integration using PDFBox functionality.</td>
</tr>
<tr>
<td><a href="http://www.dcs.bbk.ac.uk/research/techreps/2005/bbkcs-05-02.pdf">Refactoring trends across N versions of N Java open source systems: an empirical study</a></td>
<td>This article describes an empirical study of multiple versions of a range of open source Java systems in an attempt to understand whether refactoring occur and, if so, which types of refactoring were most (and least) common. PDFBox is used as a case study.</td>
</tr>
</tbody>
</table>

            </div>
        </div>
    </div>

    <footer class="footer">
    <div class="container">
        <div class="row">
            <div class="span3">
                <!-- nothing in here on purpose -->
            </div>
            <div class="span9">
                <p>Copyright © 2009&ndash;2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
                    <br>Apache PDFBox, PDFBox, Apache, the Apache feather logo and the Apache PDFBox project logos are trademarks of The Apache Software Foundation.</p>
            </div>
        </div>
    </div>
</footer>


    <script>

    function addCollapsed(el) {
        el.classList.add('collapsed');
    }

    function toggleCollapsed(ev) {
        ev.target.parentNode.classList.toggle('collapsed');
        ev.preventDefault();
    }

    function addClickEvent(el) {
        console.log(el);
        el.addEventListener('click', toggleCollapsed);
    }

    document.querySelectorAll('.sidebar-node').forEach(addCollapsed);
    document.querySelectorAll('.sidebar-node > a').forEach(addClickEvent);

    // preserve expand/collapse across page navigation
    var path = document.location.pathname;
    if (path.indexOf('/1.8') == 0) {
        var el = document.getElementById("#v1-8");
        el.classList.toggle("collapsed");
        if (path.indexOf('/1.8/cookbook') == 0) {
            el = document.getElementById('v1-8-cookbook');
            el.classList.remove('collapsed');
        }
    } else {
        var el = document.getElementById("v2-0");
        console.log(el);
        el.classList.remove("collapsed");
        if (path.indexOf('/2.0/cookbook') == 0) {
            el = document.getElementById('#v2-0-cookbook');
            el.classList.remove('collapsed');
        }
    }
</script>


</body>

</html>