The `Pdfbox3.xqm` library is an XQuery module designed to interface with **Apache PDFBox 3.0**, a powerful Java library for working with PDF documents. This module allows you to perform various operations on PDF files, such as extracting text, rendering pages as images, managing outlines, and more. The library is distributed as a **XAR (XQuery Archive) file**, which includes the necessary PDFBox JAR files, making it easy to install and use in BaseX 10.7+.
The `Pdfbox3.xqm` XQuery library module enables features from **Apache PDFBox 3.0** to be called from `BaseX`.
>The [Apache PDFBox®](https://pdfbox.apache.org/) 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.
The library is distributed as a **XAR (XQuery Archive) file**, which includes the necessary PDFBox JAR files, making it easy to install and use in BaseX 10.7+.
---
@ -12,18 +16,13 @@ The `Pdfbox3.xqm` library is an XQuery module designed to interface with **Apach
The library is distributed as a XAR file that includes the required PDFBox JAR files. You can obtain the XAR file from the distribution source (e.g., a repository or a shared location).
### 2. Install the XAR File in BaseX
To install the XAR file in BaseX, follow these steps:
The latest version is avaiable at https://github.com/expkg-zone58/pdfbox/releases.
The `XAR` can be installed into the repository. For example:
1. Open the BaseX GUI or command-line interface.
2. Use the `REPO INSTALL` command to install the XAR file:
```xquery
REPO INSTALL path/to/pdfbox3.xar
```
Replace `path/to/pdfbox3.xar` with the actual path to the XAR file.
3. Verify the installation by listing the installed packages:
</h2><spanclass="ml-2"><ahref="imports.html"title="Summary of import usage "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports</a><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a><ahref="restxq.html"title="Summary of REST interface "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">restxq</a><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></span><h3>
Contents
</h3><olclass="toc"><li><ahref="#summary"><spanclass="secno">1</span><spanclass="content">Summary</span></a></li><li><ahref="#annotations"><spanclass="secno">2</span><spanclass="content">Annotations</span></a><ol><li><ahref="#http://www.w3.org/2012/xquery"><spanclass="secno">2.1</span><spanclass="content">http://www.w3.org/2012/xquery</span></a></li></ol></li></ol></nav><sectionid="summary"><h2>Summary</h2><p>This project uses 1 annotation namespaces.</p><details><summary>Related documents</summary><tableclass="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a></td><td>Index of sources</td><td>xhtml</td></tr><tr><td><ahref="restxq.html"title="Summary of REST interface "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">restxq</a></td><td>Summary of REST interface</td><td>xhtml</td></tr><tr><td><ahref="imports.html"title="Summary of import usage "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports</a></td><td>Summary of import usage</td><td>xhtml</td></tr><tr><td><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a></td><td>Project wide module imports as html mermaid class diagram</td><td>html5</td></tr><tr><td><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a></td><td>Project wide module imports as a mermaid class diagram</td><td>text</td></tr><tr><td><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></td><td>xqDocA run configuration report (XML)</td><td>xml</td></tr><tr><td><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a></td><td>validate generated xqdoc files</td><td>xml</td></tr></tbody></table></details></section><sectionid="annotations"><h2>Annotations</h2><sectionid="http://www.w3.org/2012/xquery"><h3>2.1http://www.w3.org/2012/xquery</h3><spanstyle="margin-left:1em"><ahref="#{http://www.w3.org/2012/xquery}private">private</a></span><divclass="div4"><h4><aid="{http://www.w3.org/2012/xquery}private"></a>{http://www.w3.org/2012/xquery}private<divstyle="float:right"><spanclass="badge badge-info">8</span></div></h4><tableclass="data"><thead><tr><th>Attached to</th><th>Values</th></tr></thead><tbody><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}$property-map"title="Pdfbox3.xqm">pdfbox:$property-map</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}read-stream#2"title="Pdfbox3.xqm">pdfbox:read-stream#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}outline#2"title="Pdfbox3.xqm">pdfbox:outline#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}outline_#2"title="Pdfbox3.xqm">pdfbox:outline_#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}bookmark-xml#1"title="Pdfbox3.xqm">pdfbox:bookmark-xml#1</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}bookmark#2"title="Pdfbox3.xqm">pdfbox:bookmark#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}gregToISO#1"title="Pdfbox3.xqm">pdfbox:gregToISO#1</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}do-until#3"title="Pdfbox3.xqm">pdfbox:do-until#3</a></span></td><td>()</td></tr></tbody></table></div></section></section></div></div><divclass="footer"><pstyle="text-align:right">Generated by
</h3><olclass="toc"><li><ahref="#summary"><spanclass="secno">1</span><spanclass="content">Summary</span></a></li><li><ahref="#annotations"><spanclass="secno">2</span><spanclass="content">Annotations</span></a><ol><li><ahref="#http://www.w3.org/2012/xquery"><spanclass="secno">2.1</span><spanclass="content">http://www.w3.org/2012/xquery</span></a></li></ol></li></ol></nav><sectionid="summary"><h2>Summary</h2><p>This project uses 1 annotation namespaces.</p><details><summary>Related documents</summary><tableclass="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a></td><td>Index of sources</td><td>xhtml</td></tr><tr><td><ahref="restxq.html"title="Summary of REST interface "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">restxq</a></td><td>Summary of REST interface</td><td>xhtml</td></tr><tr><td><ahref="imports.html"title="Summary of import usage "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports</a></td><td>Summary of import usage</td><td>xhtml</td></tr><tr><td><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a></td><td>Project wide module imports as html mermaid class diagram</td><td>html5</td></tr><tr><td><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a></td><td>Project wide module imports as a mermaid class diagram</td><td>text</td></tr><tr><td><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></td><td>xqDocA run configuration report (XML)</td><td>xml</td></tr><tr><td><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a></td><td>validate generated xqdoc files</td><td>xml</td></tr></tbody></table></details></section><sectionid="annotations"><h2>Annotations</h2><sectionid="http://www.w3.org/2012/xquery"><h3>2.1http://www.w3.org/2012/xquery</h3><spanstyle="margin-left:1em"><ahref="#{http://www.w3.org/2012/xquery}private">private</a></span><divclass="div4"><h4><aid="{http://www.w3.org/2012/xquery}private"></a>{http://www.w3.org/2012/xquery}private<divstyle="float:right"><spanclass="badge badge-info">7</span></div></h4><tableclass="data"><thead><tr><th>Attached to</th><th>Values</th></tr></thead><tbody><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}$property-map"title="Pdfbox3.xqm">pdfbox:$property-map</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}read-stream#2"title="Pdfbox3.xqm">pdfbox:read-stream#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}outline#2"title="Pdfbox3.xqm">pdfbox:outline#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}outline_#2"title="Pdfbox3.xqm">pdfbox:outline_#2</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}bookmark-xml#1"title="Pdfbox3.xqm">pdfbox:bookmark-xml#1</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}gregToISO#1"title="Pdfbox3.xqm">pdfbox:gregToISO#1</a></span></td><td>()</td></tr><tr><td><span><ahref="modules/F000001/index.html#{org.expkg_zone58.Pdfbox3}do-until#3"title="Pdfbox3.xqm">pdfbox:do-until#3</a></span></td><td>()</td></tr></tbody></table></div></section></section></div></div><divclass="footer"><pstyle="text-align:right">Generated by
on <spantitle="2025-06-04T16:17:13.527+01:00">Wednesday, 4th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
on <spantitle="2025-06-09T21:09:05.833+01:00">Monday, 9th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
</h3><olclass="toc"><li><ahref="#summary"><spanclass="secno">1</span><spanclass="content">Summary</span></a></li><li><ahref="#imports"><spanclass="secno">2</span><spanclass="content">Imports</span></a><ol></ol></li></ol></nav><sectionid="summary"><h2>Summary</h2><p>Lists all modules imported.</p><details><summary>Related documents</summary><tableclass="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a></td><td>Index of sources</td><td>xhtml</td></tr><tr><td><ahref="restxq.html"title="Summary of REST interface "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">restxq</a></td><td>Summary of REST interface</td><td>xhtml</td></tr><tr><td><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a></td><td>Project wide module imports as html mermaid class diagram</td><td>html5</td></tr><tr><td><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a></td><td>Project wide module imports as a mermaid class diagram</td><td>text</td></tr><tr><td><ahref="annotations.html"title="Summary of XQuery annotation use "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">annotations</a></td><td>Summary of XQuery annotation use</td><td>xhtml</td></tr><tr><td><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></td><td>xqDocA run configuration report (XML)</td><td>xml</td></tr><tr><td><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a></td><td>validate generated xqdoc files</td><td>xml</td></tr></tbody></table></details></section><sectionid="imports"><h2>Imports (0)</h2></section></div></div><divclass="footer"><pstyle="text-align:right">Generated by
on <spantitle="2025-06-04T16:17:13.527+01:00">Wednesday, 4th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
on <spantitle="2025-06-09T21:09:05.833+01:00">Monday, 9th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
</p><p>This document was built from source folder <kbd>C:/Users/mrwhe/git/expkg-zone58/pdfbox/src/</kbd> on
<spantitle="2025-06-04T16:17:13.527+01:00">Wednesday, 4th June 2025</span>.</p><details><summary>Related documents</summary><tableclass="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a></td><td>Index of sources</td><td>xhtml</td></tr><tr><td><ahref="restxq.html"title="Summary of REST interface "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">restxq</a></td><td>Summary of REST interface</td><td>xhtml</td></tr><tr><td><ahref="imports.html"title="Summary of import usage "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports</a></td><td>Summary of import usage</td><td>xhtml</td></tr><tr><td><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a></td><td>Project wide module imports as html mermaid class diagram</td><td>html5</td></tr><tr><td><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a></td><td>Project wide module imports as a mermaid class diagram</td><td>text</td></tr><tr><td><ahref="annotations.html"title="Summary of XQuery annotation use "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">annotations</a></td><td>Summary of XQuery annotation use</td><td>xhtml</td></tr><tr><td><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></td><td>xqDocA run configuration report (XML)</td><td>xml</td></tr><tr><td><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a></td><td>validate generated xqdoc files</td><td>xml</td></tr></tbody></table></details></section><sectionid="main_mods"><h2> XQuery Main (0)</h2><div><p>None</p></div></section><sectionid="library_mods"><h2> XQuery Library (1)</h2><div><tableclass="data"><colgroup><colstyle="width: 35%;"/><colstyle="width: 10%;"/><colstyle="width: 25%;"/><colstyle="width: 10%;"/><colstyle="width: 10%;"/><colstyle="width: 10%;"/></colgroup><thead><tr><th>Uri</th><th>Prefix</th><th>Description</th><th>Use</th><thtitle="Annotations">A</th><th>Metrics</th></tr></thead><tbody><tr><tdstyle="word-break:break-all;"><span><ahref="modules/F000001/index.html"title="A BaseX 10.7+ interface to pdfbox3 https://pdfbox.apache.org/ , requires pdfbox jars on classpath, in lib/custom or xar refer to the same concept. Also label and (page)range are used interchangably ">org.expkg_zone58.Pdfbox3</a></span></td><tdtitle="prefix">pdfbox</td><tdtitle="A BaseX 10.7+ interface to pdfbox3 https://pdfbox.apache.org/ , requires pdfbox jars on classpath, in lib/custom or xar refer to the same concept. Also label and (page)range are used interchangably ">
<spantitle="2025-06-09T21:09:05.833+01:00">Monday, 9th June 2025</span>.</p><details><summary>Related documents</summary><tableclass="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a></td><td>Index of sources</td><td>xhtml</td></tr><tr><td><ahref="restxq.html"title="Summary of REST interface "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">restxq</a></td><td>Summary of REST interface</td><td>xhtml</td></tr><tr><td><ahref="imports.html"title="Summary of import usage "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports</a></td><td>Summary of import usage</td><td>xhtml</td></tr><tr><td><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a></td><td>Project wide module imports as html mermaid class diagram</td><td>html5</td></tr><tr><td><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a></td><td>Project wide module imports as a mermaid class diagram</td><td>text</td></tr><tr><td><ahref="annotations.html"title="Summary of XQuery annotation use "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">annotations</a></td><td>Summary of XQuery annotation use</td><td>xhtml</td></tr><tr><td><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></td><td>xqDocA run configuration report (XML)</td><td>xml</td></tr><tr><td><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a></td><td>validate generated xqdoc files</td><td>xml</td></tr></tbody></table></details></section><sectionid="main_mods"><h2> XQuery Main (0)</h2><div><p>None</p></div></section><sectionid="library_mods"><h2> XQuery Library (1)</h2><div><tableclass="data"><colgroup><colstyle="width: 35%;"/><colstyle="width: 10%;"/><colstyle="width: 25%;"/><colstyle="width: 10%;"/><colstyle="width: 10%;"/><colstyle="width: 10%;"/></colgroup><thead><tr><th>Uri</th><th>Prefix</th><th>Description</th><th>Use</th><thtitle="Annotations">A</th><th>Metrics</th></tr></thead><tbody><tr><tdstyle="word-break:break-all;"><span><ahref="modules/F000001/index.html"title="A BaseX 10.7+ interface to pdfbox3 https://pdfbox.apache.org/ , requires pdfbox jars on classpath, in lib/custom or xar refer to the same concept. Also label and (page)range are used interchangably ">org.expkg_zone58.Pdfbox3</a></span></td><tdtitle="prefix">pdfbox</td><tdtitle="A BaseX 10.7+ interface to pdfbox3 https://pdfbox.apache.org/ , requires pdfbox jars on classpath, in lib/custom or xar refer to the same concept. Also label and (page)range are used interchangably ">

A BaseX 10.7+ interface to pdfbox3 https://...</td><td><div><divtitle="imported by">0<span>↖</span></div><divtitle="Library module"class="badge badge-info">Library</div><divtitle="imports"style="float:right">↖0</div></div></td><tdtitle="http://www.w3.org/2012/xquery"><spanclass="badge badge-dark"title="Private">P</span></td><tdstyle="text-align: right"><div>V#1</div><div>F#37</div></td></tr></tbody></table></div></section><sectionid="file"><h2>File view (1)</h2><ulclass="tree"><li><ahref="modules/F000001/index.html">Pdfbox3.xqm</a></li></ul></section><sectionid="annotation"><h2>Annotation namespaces (1)</h2><p> A total of 8 annotations are defined.
</p><sectionid="http://www.w3.org/2012/xquery"><h3>http://www.w3.org/2012/xquery</h3><div><spanstyle="margin-right:1em;"><ahref="annotations.html#{http://www.w3.org/2012/xquery}private">private</a><spanclass="badge badge-info">8</span></span></div></section></section></div><divclass="footer"><pstyle="text-align:right">Generated by
A BaseX 10.7+ interface to pdfbox3 https://...</td><td><div><divtitle="imported by">0<span>↖</span></div><divtitle="Library module"class="badge badge-info">Library</div><divtitle="imports"style="float:right">↖0</div></div></td><tdtitle="http://www.w3.org/2012/xquery"><spanclass="badge badge-dark"title="Private">P</span></td><tdstyle="text-align: right"><div>V#1</div><div>F#36</div></td></tr></tbody></table></div></section><sectionid="file"><h2>File view (1)</h2><ulclass="tree"><li><ahref="modules/F000001/index.html">Pdfbox3.xqm</a></li></ul></section><sectionid="annotation"><h2>Annotation namespaces (1)</h2><p> A total of 7 annotations are defined.
</p><sectionid="http://www.w3.org/2012/xquery"><h3>http://www.w3.org/2012/xquery</h3><div><spanstyle="margin-right:1em;"><ahref="annotations.html#{http://www.w3.org/2012/xquery}private">private</a><spanclass="badge badge-info">7</span></span></div></section></section></div><divclass="footer"><pstyle="text-align:right">Generated by
on <spantitle="2025-06-04T16:17:13.527+01:00">Wednesday, 4th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
on <spantitle="2025-06-09T21:09:05.833+01:00">Monday, 9th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:with-pdf</xqdoc:name><xqdoc:signature>function pdfbox:with-pdf ( $src as xs:string, $fn as function(item())as item()* ) as item()* { let $pdf:=pdfbox:open($src) return try{ $fn($pdf),pdfbox:close($pdf) } catch *{ pdfbox:close($pdf),fn:error($err:code,$src || " " || $err:description) } }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>src</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>fn</xqdoc:name><xqdoc:type>function(item())as item()*</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>open</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:ref-variable><xqdoc:uri>http://www.w3.org/2005/xqt-errors</xqdoc:uri><xqdoc:name>code</xqdoc:name></xqdoc:ref-variable><xqdoc:ref-variable><xqdoc:uri>http://www.w3.org/2005/xqt-errors</xqdoc:uri><xqdoc:name>description</xqdoc:name></xqdoc:ref-variable><xqdoc:body>function pdfbox:with-pdf($src as xs:string,
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:with-pdf</xqdoc:name><xqdoc:signature>function pdfbox:with-pdf ( $src as xs:string, $fn as function(item())as item()* ) as item()*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>src</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>fn</xqdoc:name><xqdoc:type>function(item())as item()*</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>open</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:ref-variable><xqdoc:uri>http://www.w3.org/2005/xqt-errors</xqdoc:uri><xqdoc:name>code</xqdoc:name></xqdoc:ref-variable><xqdoc:ref-variable><xqdoc:uri>http://www.w3.org/2005/xqt-errors</xqdoc:uri><xqdoc:name>description</xqdoc:name></xqdoc:ref-variable><xqdoc:body>function pdfbox:with-pdf($src as xs:string,
open pdf using fetch:binary, returns pdf object</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:open</xqdoc:name><xqdoc:signature>function pdfbox:open ( $pdfsrc as item() ) as item() { pdfbox:open($pdfsrc, map{}) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfsrc</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>open</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:open($pdfsrc as item())
open pdf from file/url/binary, opts may have password , returns pdf object
</xqdoc:description><xqdoc:param>$pdfsrc a fetchable url or filepath, or xs:base64Binary item</xqdoc:param><xqdoc:param>$opts options options include map {"password":}</xqdoc:param><xqdoc:customtag="note">fetch:binary for https will use a lot of memory here</xqdoc:custom></xqdoc:comment><xqdoc:name>pdfbox:open</xqdoc:name><xqdoc:signature>function pdfbox:open ( $pdfsrc as item(), $opts as map(*) ) as item() { try{ if($pdfsrc instance of xs:base64Binary) then Loader:loadPDF( $pdfsrc,string($opts?password)) else if(starts-with($pdfsrc,"http")) then Loader:loadPDF( fetch:binary($pdfsrc),string($opts?password)) else Loader:loadPDF(RandomAccessReadBufferedFile:new($pdfsrc),string($opts?password)) } catch *{ let $loc:=if($pdfsrc instance of xs:base64Binary) then "xs:base64Binary" else $pdfsrc return error(xs:QName("pdfbox:open"),"Failed PDF load " || $loc || " " || $err:description) } }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfsrc</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>opts</xqdoc:name><xqdoc:type>map(*)</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.Loader</xqdoc:uri><xqdoc:name>loadPDF</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>starts-with</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.Loader</xqdoc:uri><xqdoc:name>loadPDF</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://basex.org/modules/fetch</xqdoc:uri><xqdoc:name>binary</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.Loader</xqdoc:uri><xqdoc:name>loadPDF</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.io.RandomAccessReadBufferedFile</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:ref-variable><xqdoc:uri>http://www.w3.org/2005/xqt-errors</xqdoc:uri><xqdoc:name>description</xqdoc:name></xqdoc:ref-variable><xqdoc:body>function pdfbox:open($pdfsrc as item(), $opts as map(*))
</xqdoc:description><xqdoc:param>$pdfsrc a fetchable url or filepath, or xs:base64Binary item</xqdoc:param><xqdoc:param>$opts options options include map {"password":}</xqdoc:param><xqdoc:customtag="note">fetch:binary for https will use a lot of memory here</xqdoc:custom></xqdoc:comment><xqdoc:name>pdfbox:open</xqdoc:name><xqdoc:signature>function pdfbox:open ( $pdfsrc as item(), $opts as map(*) ) as item()</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfsrc</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>opts</xqdoc:name><xqdoc:type>map(*)</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.Loader</xqdoc:uri><xqdoc:name>loadPDF</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>starts-with</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.Loader</xqdoc:uri><xqdoc:name>loadPDF</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://basex.org/modules/fetch</xqdoc:uri><xqdoc:name>binary</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.Loader</xqdoc:uri><xqdoc:name>loadPDF</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.io.RandomAccessReadBufferedFile</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:ref-variable><xqdoc:uri>http://www.w3.org/2005/xqt-errors</xqdoc:uri><xqdoc:name>description</xqdoc:name></xqdoc:ref-variable><xqdoc:body>function pdfbox:open($pdfsrc as item(), $opts as map(*))
open pdf from a location, returns pdf object</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:open</xqdoc:name><xqdoc:signature>function pdfbox:open ( $pdfsrc as item() ) as item()</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfsrc</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>open</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:open($pdfsrc as item())
The version of the PDF specification used by $pdf e.g "1.4"
returned as string to avoid float rounding issues
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:specification</xqdoc:name><xqdoc:signature>function pdfbox:specification ( $pdf as item() ) as xs:string { PDDocument:getVersion($pdf)=>xs:decimal()=>round(4)=>string() }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getVersion</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:specification($pdf as item())
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:specification</xqdoc:name><xqdoc:signature>function pdfbox:specification ( $pdf as item() ) as xs:string</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getVersion</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:specification($pdf as item())
Save pdf $pdf to filesystem at $savepath , returns $savepath</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:pdf-save</xqdoc:name><xqdoc:signature>function pdfbox:pdf-save ( $pdf as item(),$savepath as xs:string ) as xs:string { PDDocument:save($pdf, File:new($savepath)),$savepath }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>savepath</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>save</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.io.File</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:pdf-save($pdf as item(),$savepath as xs:string)
Save pdf <code>$pdf</code> to filesystem at <code>$savepath</code> , returns $savepath</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:pdf-save</xqdoc:name><xqdoc:signature>function pdfbox:pdf-save ( $pdf as item(),$savepath as xs:string ) as xs:string</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>savepath</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>save</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.io.File</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:pdf-save($pdf as item(),$savepath as xs:string)
Create binary representation of $pdf object as xs:base64Binary</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:binary</xqdoc:name><xqdoc:signature>function pdfbox:binary ( $pdf as item() ) as xs:base64Binary { let $bytes:=Q{java:java.io.ByteArrayOutputStream}new() let $_:=PDDocument:save($pdf, $bytes) return Q{java:java.io.ByteArrayOutputStream}toByteArray($bytes) =>convert:integers-to-base64() }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:base64Binary</xqdoc:type></xqdoc:return><xqdoc:invokedarity="0"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>save</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>toByteArray</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:binary($pdf as item())
Create binary representation (xs:base64Binary) of <code>$pdf</code> object</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:binary</xqdoc:name><xqdoc:signature>function pdfbox:binary ( $pdf as item() ) as xs:base64Binary</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:base64Binary</xqdoc:type></xqdoc:return><xqdoc:invokedarity="0"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>save</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>toByteArray</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:binary($pdf as item())
as xs:base64Binary{
let $bytes:=Q{java:java.io.ByteArrayOutputStream}new()
Release any resources related to $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:close</xqdoc:name><xqdoc:signature>function pdfbox:close ( $pdf as item() ) as empty-sequence() { (# db:wrapjava void #) { PDDocument:close($pdf) } }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>empty-sequence</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:close($pdf as item())
Release any resources related to $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:close</xqdoc:name><xqdoc:signature>function pdfbox:close ( $pdf as item() ) as empty-sequence()</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>empty-sequence()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:close($pdf as item())
Number of pages in PDF</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:number-of-pages</xqdoc:name><xqdoc:signature>function pdfbox:number-of-pages ( $pdf as item() ) as xs:integer { PDDocument:getNumberOfPages($pdf) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:integer</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getNumberOfPages</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:number-of-pages($pdf as item())
Number of pages in PDF</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:number-of-pages</xqdoc:name><xqdoc:signature>function pdfbox:number-of-pages ( $pdf as item() ) as xs:integer</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:integer</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getNumberOfPages</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:number-of-pages($pdf as item())
options.format="bmp jpg png gif" etc, options.scale= 1 is 72 dpi??</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:page-render</xqdoc:name><xqdoc:signature>function pdfbox:page-render ( $pdf as item(),$pageNo as xs:integer,$options as map(*) ) as xs:base64Binary { let $options := map:merge(($options,map{"format":"jpg","scale":1})) let $bufferedImage := PDFRenderer:new($pdf) =>PDFRenderer:renderImage($pageNo,$options?scale) let $bytes := Q{java:java.io.ByteArrayOutputStream}new() let $_ := Q{java:javax.imageio.ImageIO}write($bufferedImage ,$options?format, $bytes) return Q{java:java.io.ByteArrayOutputStream}toByteArray($bytes) =>convert:integers-to-base64() }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pageNo</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>options</xqdoc:name><xqdoc:type>map(*)</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:base64Binary</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>merge</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.rendering.PDFRenderer</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="0"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>java:javax.imageio.ImageIO</xqdoc:uri><xqdoc:name>write</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>toByteArray</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:page-render($pdf as item(),$pageNo as xs:integer,$options as map(*))
options.format="bmp jpg png gif" etc, options.scale= 1 is 72 dpi??</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:page-render</xqdoc:name><xqdoc:signature>function pdfbox:page-render ( $pdf as item(),$pageNo as xs:integer,$options as map(*) ) as xs:base64Binary</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pageNo</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>options</xqdoc:name><xqdoc:type>map(*)</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:base64Binary</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>merge</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.rendering.PDFRenderer</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="0"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>java:javax.imageio.ImageIO</xqdoc:uri><xqdoc:name>write</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.io.ByteArrayOutputStream</xqdoc:uri><xqdoc:name>toByteArray</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:page-render($pdf as item(),$pageNo as xs:integer,$options as map(*))
as xs:base64Binary{
let $options := map:merge(($options,map{"format":"jpg","scale":1}))
Return the value of $property for $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:property</xqdoc:name><xqdoc:signature>function pdfbox:property ( $pdf as item(),$property as xs:string ) as item()* { let $fns:= $pdfbox:property-map($property) return if(exists($fns)) then fold-left($fns, $pdf, function($result,$this as function(*)){$result!$this(.)}) else error(xs:QName('pdfbox:property'),concat("Property '",$property,"' not defined.")) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>property</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>fold-left</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>concat</xqdoc:name></xqdoc:invoked><xqdoc:ref-variable><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>property-map</xqdoc:name></xqdoc:ref-variable><xqdoc:body>function pdfbox:property($pdf as item(),$property as xs:string)
Return the value of $property for $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:property</xqdoc:name><xqdoc:signature>function pdfbox:property ( $pdf as item(),$property as xs:string ) as item()*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>property</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>fold-left</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>concat</xqdoc:name></xqdoc:invoked><xqdoc:ref-variable><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>property-map</xqdoc:name></xqdoc:ref-variable><xqdoc:body>function pdfbox:property($pdf as item(),$property as xs:string)
as item()*{
let $fns:= $pdfbox:property-map($property)
return if(exists($fns))
@ -653,14 +646,9 @@ as item()*{
$pdf, 
function($result,$this as function(*)){$result!$this(.)})
else error(xs:QName('pdfbox:property'),concat("Property '",$property,"' not defined."))
summary CSV style info for all properties for $pdfpaths
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:report</xqdoc:name><xqdoc:signature>function pdfbox:report ( $pdfpaths as xs:string* ) as map(*) { pdfbox:report($pdfpaths,pdfbox:property-names()) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfpaths</xqdoc:name><xqdoc:typeoccurrence="*">xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>report</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="0"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>property-names</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:report($pdfpaths as xs:string*)
summary CSV style info for named $properties for PDFs in $pdfpaths
</xqdoc:description><xqdoc:see>https://docs.basex.org/main/CSV_Functions#xquery</xqdoc:see></xqdoc:comment><xqdoc:name>pdfbox:report</xqdoc:name><xqdoc:signature>function pdfbox:report ( $pdfpaths as item()*, $properties as xs:string* ) as map(*) { map{"names": array{"path",$properties}, "records": for $path in $pdfpaths let $name:=if($path instance of xs:base64Binary) then "binary" else $path return try{ let $pdf:=pdfbox:open($path) return (fold-left($properties, array{$name}, function($result as array(*),$prop as xs:string){ array:append($result, string(pdfbox:property($pdf, $prop)))} ), pdfbox:close($pdf) ) } catch *{ fold-left($properties, array{$name}, function($result as array(*),$prop as xs:string){ array:append($result, "#ERROR")} ) } } }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfpaths</xqdoc:name><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>properties</xqdoc:name><xqdoc:typeoccurrence="*">xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>open</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>fold-left</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/array</xqdoc:uri><xqdoc:name>append</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>property</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>fold-left</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/array</xqdoc:uri><xqdoc:name>append</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:report($pdfpaths as item()*, $properties as xs:string*)
</xqdoc:description><xqdoc:see>https://docs.basex.org/main/CSV_Functions#xquery</xqdoc:see></xqdoc:comment><xqdoc:name>pdfbox:report</xqdoc:name><xqdoc:signature>function pdfbox:report ( $pdfpaths as item()*, $properties as xs:string* ) as map(*)</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfpaths</xqdoc:name><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>properties</xqdoc:name><xqdoc:typeoccurrence="*">xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>open</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>fold-left</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/array</xqdoc:uri><xqdoc:name>append</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>property</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>fold-left</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/array</xqdoc:uri><xqdoc:name>append</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:report($pdfpaths as item()*, $properties as xs:string*)
summary CSV style info for all properties for $pdfpaths
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:report</xqdoc:name><xqdoc:signature>function pdfbox:report ( $pdfpaths as xs:string* ) as map(*)</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdfpaths</xqdoc:name><xqdoc:typeoccurrence="*">xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>report</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="0"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>property-names</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:report($pdfpaths as xs:string*)
Convenience function to save report() data to file</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:report-save</xqdoc:name><xqdoc:signature>function pdfbox:report-save ( $data as map(*),$dest as xs:string ) as empty-sequence() { let $opts := map { "format":"xquery", "header":"yes", "separator" : "," } return file:write-text($dest,csv:serialize($data,$opts)) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>data</xqdoc:name><xqdoc:type>map(*)</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>dest</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>empty-sequence</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>http://expath.org/ns/file</xqdoc:uri><xqdoc:name>write-text</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://basex.org/modules/csv</xqdoc:uri><xqdoc:name>serialize</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:report-save($data as map(*),$dest as xs:string)
Convenience function to save report() data to file</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:report-save</xqdoc:name><xqdoc:signature>function pdfbox:report-save ( $data as map(*),$dest as xs:string ) as empty-sequence()</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>data</xqdoc:name><xqdoc:type>map(*)</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>dest</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>empty-sequence()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>http://expath.org/ns/file</xqdoc:uri><xqdoc:name>write-text</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://basex.org/modules/csv</xqdoc:uri><xqdoc:name>serialize</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:report-save($data as map(*),$dest as xs:string)
The number of outline items defined in $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:number-of-bookmarks</xqdoc:name><xqdoc:signature>function pdfbox:number-of-bookmarks ( $pdf as item() ) as xs:integer { let $xml:=pdfbox:outline-xml($pdf) return count($xml//bookmark) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:integer</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline-xml</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>count</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:number-of-bookmarks($pdf as item())
The number of outline items defined in $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:number-of-bookmarks</xqdoc:name><xqdoc:signature>function pdfbox:number-of-bookmarks ( $pdf as item() ) as xs:integer</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:integer</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline-xml</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>count</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:number-of-bookmarks($pdf as item())
</xqdoc:description><xqdoc:customtag="note">usually rdf:RDF root, but sometimes x:xmpmeta</xqdoc:custom></xqdoc:comment><xqdoc:name>pdfbox:metadata</xqdoc:name><xqdoc:signature>function pdfbox:metadata ( $pdf as item() ) as document-node(element(*))? { let $m:=PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getMetadata() return if(exists($m)) then let $is:=PDMetadata:exportXMPMetadata($m) return pdfbox:do-until( map{"n":0,"data":""}, function($input,$pos ) { pdfbox:read-stream($is,$input?data)}, function($output,$pos) { $output?n eq -1 } )?data=>parse-xml() else () }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">document-node(element(*))</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDMetadata</xqdoc:uri><xqdoc:name>exportXMPMetadata</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>do-until</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>read-stream</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:metadata($pdf as item())
</xqdoc:description><xqdoc:customtag="note">usually rdf:RDF root, but sometimes x:xmpmeta</xqdoc:custom></xqdoc:comment><xqdoc:name>pdfbox:metadata</xqdoc:name><xqdoc:signature>function pdfbox:metadata ( $pdf as item() ) as document-node(element(*))?</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">document-node(element(*))</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDMetadata</xqdoc:uri><xqdoc:name>exportXMPMetadata</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>do-until</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>read-stream</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:metadata($pdf as item())
as document-node(element(*))?
{
let $m:=PDDocument:getDocumentCatalog($pdf)
@ -712,7 +705,7 @@ as document-node(element(*))?
read next block from XMP stream</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:read-stream</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:read-stream ( $is,$read as xs:string ) as map(*) { let $blen:=4096 let $buff:=Q{java:java.util.Arrays}copyOf(array{xs:byte(0)},$blen) let $n:= COSInputStream:read($is,$buff,xs:int(0),xs:int($blen)) let $data:=convert:integers-to-base64(subsequence($buff,1,$n))=>convert:binary-to-string() return map{"n":$n, "data": $read || $data} }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>is</xqdoc:name></xqdoc:parameter><xqdoc:parameter><xqdoc:name>read</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:java.util.Arrays</xqdoc:uri><xqdoc:name>copyOf</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>byte</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="4"><xqdoc:uri>java:org.apache.pdfbox.cos.COSInputStream</xqdoc:uri><xqdoc:name>read</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>int</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>int</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://basex.org/modules/convert</xqdoc:uri><xqdoc:name>integers-to-base64</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>subsequence</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:read-stream($is,$read as xs:string)
read next block from XMP stream</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:read-stream</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:read-stream ( $is,$read as xs:string ) as map(*)</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>is</xqdoc:name></xqdoc:parameter><xqdoc:parameter><xqdoc:name>read</xqdoc:name><xqdoc:type>xs:string</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:java.util.Arrays</xqdoc:uri><xqdoc:name>copyOf</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>byte</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="4"><xqdoc:uri>java:org.apache.pdfbox.cos.COSInputStream</xqdoc:uri><xqdoc:name>read</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>int</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>int</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://basex.org/modules/convert</xqdoc:uri><xqdoc:name>integers-to-base64</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="3"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>subsequence</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:read-stream($is,$read as xs:string)
as map(*){
let $blen:=4096
let $buff:=Q{java:java.util.Arrays}copyOf(array{xs:byte(0)},$blen)
@ -720,7 +713,7 @@ as map(*){
let $data:=convert:integers-to-base64(subsequence($buff,1,$n))=>convert:binary-to-string()
Return outline for $pdf as map()*</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline</xqdoc:name><xqdoc:signature>function pdfbox:outline ( $pdf as item() ) as map(*)* { (# db:wrapjava some #) { let $outline:= PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getDocumentOutline() return if(exists($outline)) then pdfbox:outline($pdf,PDOutlineItem:getFirstChild($outline)) } }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getFirstChild</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline($pdf as item())
Return outline for $pdf as map()*</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline</xqdoc:name><xqdoc:signature>function pdfbox:outline ( $pdf as item() ) as map(*)*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getFirstChild</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline($pdf as item())
as map(*)*{
(# db:wrapjava some #) {
let $outline:=
@ -731,21 +724,26 @@ as map(*)*{
then pdfbox:outline($pdf,PDOutlineItem:getFirstChild($outline)) 
return bookmark info for children of $outlineItem as seq of maps</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:outline ( $pdf as item(),$outlineItem as item()? ) as map(*)* { let $find as map(*):=pdfbox:outline_($pdf ,$outlineItem) return map:get($find,"list") }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>outlineItem</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline_</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>get</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline($pdf as item(),$outlineItem as item()?)
return bookmark info for children of $outlineItem as seq of maps</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:outline ( $pdf as item(),$outlineItem as item()? ) as map(*)*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>outlineItem</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline_</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>get</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline($pdf as item(),$outlineItem as item()?)
as map(*)*{
let $find as map(*):=pdfbox:outline_($pdf ,$outlineItem)
outline helper. BaseX bug 10.7? error if inlined in outline</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline_</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:outline_ ( $pdf as item(),$outlineItem as item()? ) as map(*) { pdfbox:do-until( map{"list":(),"this":$outlineItem}, function($input,$pos ) { let $bk:= pdfbox:bookmark($input?this,$pdf) let $bk:= if($bk?hasChildren) then let $kids:=pdfbox:outline($pdf,PDOutlineItem:getFirstChild($input?this)) return map:merge(($bk,map:entry("children",$kids))) else $bk return map{ "list": ($input?list, $bk), "this": PDOutlineItem:getNextSibling($input?this)} }, function($output,$pos) { empty($output?this) } ) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>outlineItem</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="3"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>do-until</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>bookmark</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getFirstChild</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>merge</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>entry</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getNextSibling</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline_($pdf as item(),$outlineItem as item()?)
outline helper. BaseX bug 10.7? error if inlined in outline</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline_</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:outline_ ( $pdf as item(),$outlineItem as item()? ) as map(*)</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>outlineItem</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="3"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>do-until</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>findDestinationPage</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getTitle</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>hasChildren</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getFirstChild</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>merge</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions/map</xqdoc:uri><xqdoc:name>entry</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</xqdoc:uri><xqdoc:name>getNextSibling</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline_($pdf as item(),$outlineItem as item()?)
as map(*){
pdfbox:do-until(

map{"list":(),"this":$outlineItem},

function($input,$pos ) { 
let $bk:= pdfbox:bookmark($input?this,$pdf)
let $bk:= if($bk?hasChildren)
then let $kids:=pdfbox:outline($pdf,PDOutlineItem:getFirstChild($input?this))
PDF outline in xml format</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline-xml</xqdoc:name><xqdoc:signature>function pdfbox:outline-xml ( $pdf as item() ) as element(outline)? { let $outline:=pdfbox:outline($pdf) return if(exists($outline)) then <outline>{$outline!pdfbox:bookmark-xml(.)}</outline> else () }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">element(outline)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>bookmark-xml</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline-xml($pdf as item())
PDF outline in xml format</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:outline-xml</xqdoc:name><xqdoc:signature>function pdfbox:outline-xml ( $pdf as item() ) as element(outline)?</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">element(outline)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>outline</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>bookmark-xml</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:outline-xml($pdf as item())
as element(outline)?{
let $outline:=pdfbox:outline($pdf)
return if(exists($outline))
then <outline>{$outline!pdfbox:bookmark-xml(.)}</outline>
Convert outline map to XML</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:bookmark-xml</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:bookmark-xml ( $outline as map(*)* ) as element(bookmark)* { $outline! <bookmark title="{?title}" index="{?index}"> {?children!pdfbox:bookmark-xml(.)} </bookmark> }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>outline</xqdoc:name><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">element(bookmark)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>bookmark-xml</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:bookmark-xml($outline as map(*)*)
Convert outline map to XML</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:bookmark-xml</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:bookmark-xml ( $outline as map(*)* ) as element(bookmark)*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>outline</xqdoc:name><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">element(bookmark)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>bookmark-xml</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:bookmark-xml($outline as map(*)*)
pageIndex of $page in $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:find-page</xqdoc:name><xqdoc:signature>function pdfbox:find-page ( $page as item()? (: as java:org.apache.pdfbox.pdmodel.PDPage :), $pdf as item() ) as item()? { if(exists($page)) then PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getPages() =>PDPageTree:indexOf($page) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>page</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:find-page(
pageIndex of $page in $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:find-page</xqdoc:name><xqdoc:signature>function pdfbox:find-page ( $page as item()? (: as java:org.apache.pdfbox.pdmodel.PDPage :), $pdf as item() ) as item()?</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>page</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:find-page(
$page as item()? (: as java:org.apache.pdfbox.pdmodel.PDPage :),
Return new PDF doc with pages from $start to $end as xs:base64Binary, (1 based)
</xqdoc:description><xqdoc:param>$start first page to include</xqdoc:param><xqdoc:param>$end last page to include</xqdoc:param></xqdoc:comment><xqdoc:name>pdfbox:extract-range</xqdoc:name><xqdoc:signature>function pdfbox:extract-range ( $pdf as item(), $start as xs:integer,$end as xs:integer ) as xs:base64Binary { let $a:=PageExtractor:new($pdf, $start, $end) =>PageExtractor:extract() return (pdfbox:binary($a),pdfbox:close($a)) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>start</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>end</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:base64Binary</xqdoc:type></xqdoc:return><xqdoc:invokedarity="3"><xqdoc:uri>java:org.apache.pdfbox.multipdf.PageExtractor</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>binary</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:extract-range($pdf as item(), 
</xqdoc:description><xqdoc:param>$start first page to include</xqdoc:param><xqdoc:param>$end last page to include</xqdoc:param></xqdoc:comment><xqdoc:name>pdfbox:extract-range</xqdoc:name><xqdoc:signature>function pdfbox:extract-range ( $pdf as item(), $start as xs:integer,$end as xs:integer ) as xs:base64Binary</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>start</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>end</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:base64Binary</xqdoc:type></xqdoc:return><xqdoc:invokedarity="3"><xqdoc:uri>java:org.apache.pdfbox.multipdf.PageExtractor</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>binary</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>close</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:extract-range($pdf as item(), 
$start as xs:integer,$end as xs:integer)
as xs:base64Binary
{
let $a:=PageExtractor:new($pdf, $start, $end) =>PageExtractor:extract()
The number of labels defined in PDF</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:number-of-labels</xqdoc:name><xqdoc:signature>function pdfbox:number-of-labels ( $pdf as item() ) as xs:integer { let $labels:=PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getPageLabels() return if(exists($labels)) then PDPageLabels:getPageRangeCount($labels) else 0 }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:integer</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabels</xqdoc:uri><xqdoc:name>getPageRangeCount</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:number-of-labels($pdf as item())
The number of labels defined in PDF</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:number-of-labels</xqdoc:name><xqdoc:signature>function pdfbox:number-of-labels ( $pdf as item() ) as xs:integer</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:integer</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabels</xqdoc:uri><xqdoc:name>getPageRangeCount</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:number-of-labels($pdf as item())
as xs:integer
{
let $labels:=PDDocument:getDocumentCatalog($pdf)
pageLabel for every page from derived from page-ranges
The returned sequence will contain at MOST as much entries as the document has pages.
</xqdoc:description><xqdoc:see>https://www.w3.org/TR/WCAG20-TECHS/PDF17.html#PDF17-examples</xqdoc:see><xqdoc:see>https://codereview.stackexchange.com/questions/286078/java-code-showing-page-labels-from-pdf-files</xqdoc:see></xqdoc:comment><xqdoc:name>pdfbox:labels-by-page</xqdoc:name><xqdoc:signature>function pdfbox:labels-by-page ( $pdf as item() ) as xs:string* { PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getPageLabels() =>PDPageLabels:getLabelsByPageIndices() }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:labels-by-page($pdf as item())
</xqdoc:description><xqdoc:see>https://www.w3.org/TR/WCAG20-TECHS/PDF17.html#PDF17-examples</xqdoc:see><xqdoc:see>https://codereview.stackexchange.com/questions/286078/java-code-showing-page-labels-from-pdf-files</xqdoc:see></xqdoc:comment><xqdoc:name>pdfbox:labels-by-page</xqdoc:name><xqdoc:signature>function pdfbox:labels-by-page ( $pdf as item() ) as xs:string*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:labels-by-page($pdf as item())
sequence of label ranges defined in PDF as formatted strings
</xqdoc:description><xqdoc:return>a custom representation of the labels e.g "0-*Cover,1r,11D"</xqdoc:return></xqdoc:comment><xqdoc:name>pdfbox:labels-as-string</xqdoc:name><xqdoc:signature>function pdfbox:labels-as-string ( $pdf as item() ) as xs:string { let $pagelabels:=PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getPageLabels() return $pagelabels !(0 to pdfbox:number-of-pages($pdf)-1) !pdfbox:label-as-string($pagelabels,.)=>string-join("&#10;") }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>number-of-pages</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>label-as-string</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:labels-as-string($pdf as item())
</xqdoc:description><xqdoc:return>a custom representation of the labels e.g "0-*Cover,1r,11D"</xqdoc:return></xqdoc:comment><xqdoc:name>pdfbox:labels-as-string</xqdoc:name><xqdoc:signature>function pdfbox:labels-as-string ( $pdf as item() ) as xs:string</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>number-of-pages</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>label-as-string</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:labels-as-string($pdf as item())
as xs:string{
let $pagelabels:=PDDocument:getDocumentCatalog($pdf)
label for $page formated as string, empty if none</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:label-as-string</xqdoc:name><xqdoc:signature>function pdfbox:label-as-string ( $pagelabels,$page as xs:integer ) as xs:string? { let $label:=PDPageLabels:getPageLabelRange($pagelabels,$page) return if(empty($label)) then () else let $start:= PDPageLabelRange:getStart($label) let $style := PDPageLabelRange:getStyle($label) let $prefix:= PDPageLabelRange:getPrefix($label) return string-join(($page, if(empty($style)) then "-" else $style, if(($start eq 1)) then "" else $start, if(exists($prefix)) then '*' || $prefix (:TODO double " :) )) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pagelabels</xqdoc:name></xqdoc:parameter><xqdoc:parameter><xqdoc:name>page</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabels</xqdoc:uri><xqdoc:name>getPageLabelRange</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStart</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStyle</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getPrefix</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string-join</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:label-as-string($pagelabels,$page as xs:integer)
label for $page formated as string, empty if none</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:label-as-string</xqdoc:name><xqdoc:signature>function pdfbox:label-as-string ( $pagelabels,$page as xs:integer ) as xs:string?</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pagelabels</xqdoc:name></xqdoc:parameter><xqdoc:parameter><xqdoc:name>page</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabels</xqdoc:uri><xqdoc:name>getPageLabelRange</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStart</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStyle</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getPrefix</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>string-join</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:label-as-string($pagelabels,$page as xs:integer)
as xs:string?{
let $label:=PDPageLabels:getPageLabelRange($pagelabels,$page)
return if(empty($label))
@ -848,7 +835,7 @@ as xs:string?{
if(exists($prefix)) then '*' || $prefix (:TODO double " :)
sequence of maps for each label/page range defined in $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:labels-as-map</xqdoc:name><xqdoc:signature>function pdfbox:labels-as-map ( $pdf as item() ) as map(*)* { let $pagelabels:=PDDocument:getDocumentCatalog($pdf) =>PDDocumentCatalog:getPageLabels() return $pagelabels !(0 to pdfbox:number-of-pages($pdf)-1) !pdfbox:label-as-map($pagelabels,.) }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>number-of-pages</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>label-as-map</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:labels-as-map($pdf as item())
sequence of maps for each label/page range defined in $pdf</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:labels-as-map</xqdoc:name><xqdoc:signature>function pdfbox:labels-as-map ( $pdf as item() ) as map(*)*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getDocumentCatalog</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>number-of-pages</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>org.expkg_zone58.Pdfbox3</xqdoc:uri><xqdoc:name>label-as-map</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:labels-as-map($pdf as item())
as map(*)*{
let $pagelabels:=PDDocument:getDocumentCatalog($pdf)
label/page-range for $page as map</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:label-as-map</xqdoc:name><xqdoc:signature>function pdfbox:label-as-map ( $pagelabels,$page as xs:integer ) as map(*) { let $label:=PDPageLabels:getPageLabelRange($pagelabels,$page) return if(empty($label)) then () else map{ "index": $page, "prefix": PDPageLabelRange:getPrefix($label), "start": PDPageLabelRange:getStart($label), "style": PDPageLabelRange:getStyle($label) } }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pagelabels</xqdoc:name></xqdoc:parameter><xqdoc:parameter><xqdoc:name>page</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabels</xqdoc:uri><xqdoc:name>getPageLabelRange</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getPrefix</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStart</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStyle</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:label-as-map($pagelabels,$page as xs:integer)
label/page-range for $page as map</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:label-as-map</xqdoc:name><xqdoc:signature>function pdfbox:label-as-map ( $pagelabels,$page as xs:integer ) as map(*)</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pagelabels</xqdoc:name></xqdoc:parameter><xqdoc:parameter><xqdoc:name>page</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>map(*)</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabels</xqdoc:uri><xqdoc:name>getPageLabelRange</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>empty</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getPrefix</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStart</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.common.PDPageLabelRange</xqdoc:uri><xqdoc:name>getStyle</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:label-as-map($pagelabels,$page as xs:integer)
as map(*)
{
let $label:=PDPageLabels:getPageLabelRange($pagelabels,$page)
return text on $pageNo</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:page-text</xqdoc:name><xqdoc:signature>function pdfbox:page-text ( $pdf as item(), $pageNo as xs:integer ) as xs:string { let $tStripper := (# db:wrapjava instance #) { PDFTextStripper:new() => PDFTextStripper:setStartPage($pageNo) => PDFTextStripper:setEndPage($pageNo) } return (# db:checkstrings #) {PDFTextStripper:getText($tStripper,$pdf)} }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pageNo</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="0"><xqdoc:uri>java:org.apache.pdfbox.text.PDFTextStripper</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.text.PDFTextStripper</xqdoc:uri><xqdoc:name>getText</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:page-text($pdf as item(), $pageNo as xs:integer)
return text on $pageNo</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:page-text</xqdoc:name><xqdoc:signature>function pdfbox:page-text ( $pdf as item(), $pageNo as xs:integer ) as xs:string</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pageNo</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="0"><xqdoc:uri>java:org.apache.pdfbox.text.PDFTextStripper</xqdoc:uri><xqdoc:name>new</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.text.PDFTextStripper</xqdoc:uri><xqdoc:name>getText</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:page-text($pdf as item(), $pageNo as xs:integer)
as xs:string{
let $tStripper := (# db:wrapjava instance #) {
</xqdoc:description><xqdoc:return>e.g. [0.0,0.0,168.0,239.52]</xqdoc:return></xqdoc:comment><xqdoc:name>pdfbox:page-media-box</xqdoc:name><xqdoc:signature>function pdfbox:page-media-box ( $pdf as item(), $pageNo as xs:integer ) as xs:string { PDDocument:getPage($pdf, $pageNo) =>PDPage:getMediaBox() =>PDRectangle:toString() }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pageNo</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getPage</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:page-media-box($pdf as item(), $pageNo as xs:integer)
</xqdoc:description><xqdoc:return>e.g. [0.0,0.0,168.0,239.52]</xqdoc:return></xqdoc:comment><xqdoc:name>pdfbox:page-media-box</xqdoc:name><xqdoc:signature>function pdfbox:page-media-box ( $pdf as item(), $pageNo as xs:integer ) as xs:string</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>pdf</xqdoc:name><xqdoc:type>item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>pageNo</xqdoc:name><xqdoc:type>xs:integer</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>java:org.apache.pdfbox.pdmodel.PDDocument</xqdoc:uri><xqdoc:name>getPage</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:page-media-box($pdf as item(), $pageNo as xs:integer)
Version of Apache Pdfbox in use e.g. "3.0.4"</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:version</xqdoc:name><xqdoc:signature>function pdfbox:version ( ) as xs:string { Q{java:org.apache.pdfbox.util.Version}getVersion() }</xqdoc:signature><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="0"><xqdoc:uri>java:org.apache.pdfbox.util.Version</xqdoc:uri><xqdoc:name>getVersion</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:version()
Version of Apache Pdfbox in use e.g. "3.0.4"</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:version</xqdoc:name><xqdoc:signature>function pdfbox:version ( ) as xs:string</xqdoc:signature><xqdoc:return><xqdoc:type>xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="0"><xqdoc:uri>java:org.apache.pdfbox.util.Version</xqdoc:uri><xqdoc:name>getVersion</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:version()
Convert date</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:gregToISO</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:gregToISO ( $item as item()? ) as xs:string? { if(exists($item)) then Q{java:java.util.GregorianCalendar}toZonedDateTime($item)=>string() else () }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>item</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.util.GregorianCalendar</xqdoc:uri><xqdoc:name>toZonedDateTime</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:gregToISO($item as item()?)
Convert date</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:gregToISO</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:gregToISO ( $item as item()? ) as xs:string?</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>item</xqdoc:name><xqdoc:typeoccurrence="?">item()</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="?">xs:string</xqdoc:type></xqdoc:return><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>java:java.util.GregorianCalendar</xqdoc:uri><xqdoc:name>toZonedDateTime</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:gregToISO($item as item()?)
as xs:string?{
if(exists($item))
then Q{java:java.util.GregorianCalendar}toZonedDateTime($item)=>string()
if fn:do-until not found use hof:until, note: $pos always zero
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:do-until</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:do-until ( $input as item()*, $action as function(item()*, xs:integer) as item()*, $predicate as function(item()*, xs:integer) as xs:boolean? ) as item()* { let $fn:=function-lookup(QName('http://www.w3.org/2005/xpath-functions','do-until'), 3) return if(exists($fn)) then $fn($input,$action,$predicate) else let $hof:=function-lookup(QName('http://basex.org/modules/hof','until'), 3) return if(exists($hof)) then $hof($predicate(?,0),$action(?,0),$input) else error(xs:QName('pdfbox:do-until'),"No implementation do-until found") }</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>input</xqdoc:name><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>action</xqdoc:name><xqdoc:type>function(item()*, xs:integer) as item()*</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>predicate</xqdoc:name><xqdoc:type>function(item()*, xs:integer) as xs:boolean?</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>function-lookup</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>function-lookup</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:do-until(
</xqdoc:description></xqdoc:comment><xqdoc:name>pdfbox:do-until</xqdoc:name><xqdoc:annotations><xqdoc:annotationname="private"/></xqdoc:annotations><xqdoc:signature>function pdfbox:do-until ( $input as item()*, $action as function(item()*, xs:integer) as item()*, $predicate as function(item()*, xs:integer) as xs:boolean? ) as item()*</xqdoc:signature><xqdoc:parameters><xqdoc:parameter><xqdoc:name>input</xqdoc:name><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>action</xqdoc:name><xqdoc:type>function(item()*, xs:integer) as item()*</xqdoc:type></xqdoc:parameter><xqdoc:parameter><xqdoc:name>predicate</xqdoc:name><xqdoc:type>function(item()*, xs:integer) as xs:boolean?</xqdoc:type></xqdoc:parameter></xqdoc:parameters><xqdoc:return><xqdoc:typeoccurrence="*">item()</xqdoc:type></xqdoc:return><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>function-lookup</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>function-lookup</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>exists</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="2"><xqdoc:uri>http://www.w3.org/2005/xpath-functions</xqdoc:uri><xqdoc:name>error</xqdoc:name></xqdoc:invoked><xqdoc:invokedarity="1"><xqdoc:uri>http://www.w3.org/2001/XMLSchema</xqdoc:uri><xqdoc:name>QName</xqdoc:name></xqdoc:invoked><xqdoc:body>function pdfbox:do-until(
$input as item()*, 
$action as function(item()*, xs:integer) as item()*, 
$predicate as function(item()*, xs:integer) as xs:boolean? 
</h3><olclass="toc"><li><ahref="#summary"><spanclass="secno">1 </span><spanclass="content">Summary</span></a></li><li><ahref="#rest"><spanclass="secno">2 </span><spanclass="content">Rest Paths</span></a></li></ol></nav><sectionid="summary"><h2>Summary</h2><p>No RESTXQ usage</p><details><summary>Related documents</summary><tableclass="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><ahref="index.html"title="Index of sources "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">report</a></td><td>Index of sources</td><td>xhtml</td></tr><tr><td><ahref="imports.html"title="Summary of import usage "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports</a></td><td>Summary of import usage</td><td>xhtml</td></tr><tr><td><ahref="mermaid.html"title="Project wide module imports as html mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">imports-diag</a></td><td>Project wide module imports as html mermaid class diagram</td><td>html5</td></tr><tr><td><ahref="mermaid.mmd"title="Project wide module imports as a mermaid class diagram "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">imports-diag.mmd</a></td><td>Project wide module imports as a mermaid class diagram</td><td>text</td></tr><tr><td><ahref="annotations.html"title="Summary of XQuery annotation use "class="badge badge-pill badge-light"style="margin-left:1em"target="_self">annotations</a></td><td>Summary of XQuery annotation use</td><td>xhtml</td></tr><tr><td><ahref="xqdoca.xml"title="xqDocA run configuration report (XML) "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoca.xml</a></td><td>xqDocA run configuration report (XML)</td><td>xml</td></tr><tr><td><ahref="validation-report.xml"title="validate generated xqdoc files "class="badge badge-pill badge-light"style="margin-left:1em"target="_blank">xqdoc-validate</a></td><td>validate generated xqdoc files</td><td>xml</td></tr></tbody></table></details></section><sectionid="rest"><h2>Rest interface paths</h2></section></div></div><divclass="footer"><pstyle="text-align:right">Generated by
on <spantitle="2025-06-04T16:17:13.527+01:00">Wednesday, 4th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>
on <spantitle="2025-06-09T21:09:05.833+01:00">Monday, 9th June 2025</span></p></div><scriptsrc="resources/prism/1.29.0/prism.js"type="text/javascript"></script><scriptsrc="resources/xqdoca.js"type="text/javascript"></script></body></html>