1
0
Fork 0
pdfbox/docs/xqdoc/modules/F000001/index.html

474 lines
No EOL
52 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html xmlns="http:/www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta http-equiv="Generator" content="xqdoca - https://github.com/quodatum/xqdoca"/><title>jars - xqDocA - xqDocA</title><link rel="shortcut icon" type="image/x-icon" href="../../resources/xqdoc.png"/><link rel="stylesheet" type="text/css" href="../../resources/prism/1.29.0/prism.css"/><link rel="stylesheet" type="text/css" href="../../resources/page.css"/><link rel="stylesheet" type="text/css" href="../../resources/query.css"/><link rel="stylesheet" type="text/css" href="../../resources/base.css"/></head><body class="home" id="top"><div id="main" class="line-numbers"><div><h1><span class="badge badge-info">org.expkg_zone58.Pdfbox3</span> 
<small>library module</small><div style="float:right"></div></h1><nav id="toc"><h2><a href="../../index.html">jars</a>
/ Module
</h2><h3><a id="contents"></a><span class="">org.expkg_zone58.Pdfbox3</span></h3><ol class="toc"><li><a href="#summary"><span class="secno">1 </span><span class="content">Summary</span></a></li><li><a href="#imports"><span class="secno">2 </span><span class="content">Imports</span></a></li><li><a href="#variables"><span class="secno">3 </span><span class="content">Variables</span></a><ol class="toc"></ol></li><li><a href="#functions"><span class="secno">4 </span><span class="content">Functions</span></a><ol class="toc"><li><a href="#pdfbox:_outline"><span class="secno">4.1</span><span class="content" title="">_outline<div style="float:right"></div></span></a></li><li><a href="#pdfbox:bookmark"><span class="secno">4.2</span><span class="content" title="">bookmark<div style="float:right"></div></span></a></li><li><a href="#pdfbox:bookmark-xml"><span class="secno">4.3</span><span class="content" title="">bookmark-xml<div style="float:right"></div></span></a></li><li><a href="#pdfbox:close"><span class="secno">4.4</span><span class="content" title="">close<div style="float:right"></div></span></a></li><li><a href="#pdfbox:extract"><span class="secno">4.5</span><span class="content" title="">extract<div style="float:right"></div></span></a></li><li><a href="#pdfbox:getPageLabels"><span class="secno">4.6</span><span class="content" title="">getPageLabels<div style="float:right"></div></span></a></li><li><a href="#pdfbox:getText"><span class="secno">4.7</span><span class="content" title="">getText<div style="float:right"></div></span></a></li><li><a href="#pdfbox:gregToISO"><span class="secno">4.8</span><span class="content" title="">gregToISO<div style="float:right"></div></span></a></li><li><a href="#pdfbox:imageBinary"><span class="secno">4.9</span><span class="content" title="">imageBinary<div style="float:right"></div></span></a></li><li><a href="#pdfbox:imageSave"><span class="secno">4.10</span><span class="content" title="">imageSave<div style="float:right"></div></span></a></li><li><a href="#pdfbox:information"><span class="secno">4.11</span><span class="content" title="">information<div style="float:right"></div></span></a></li><li><a href="#pdfbox:open"><span class="secno">4.12</span><span class="content" title="">open<div style="float:right"></div></span></a></li><li><a href="#pdfbox:outline"><span class="secno">4.13</span><span class="content" title="">outline<div style="float:right"></div></span></a></li><li><a href="#pdfbox:outline-xml"><span class="secno">4.14</span><span class="content" title="">outline-xml<div style="float:right"></div></span></a></li><li><a href="#pdfbox:outx"><span class="secno">4.15</span><span class="content" title="">outx<div style="float:right"></div></span></a></li><li><a href="#pdfbox:page-count"><span class="secno">4.16</span><span class="content" title="">page-count<div style="float:right"></div></span></a></li><li><a href="#pdfbox:pageBufferedImage"><span class="secno">4.17</span><span class="content" title="">pageBufferedImage<div style="float:right"></div></span></a></li><li><a href="#pdfbox:pageIndex"><span class="secno">4.18</span><span class="content" title="">pageIndex<div style="float:right"></div></span></a></li><li><a href="#pdfbox:pageLabels"><span class="secno">4.19</span><span class="content" title="">pageLabels<div style="float:right"></div></span></a></li><li><a href="#pdfbox:pdfVersion"><span class="secno">4.20</span><span class="content" title="">pdfVersion<div style="float:right"></div></span></a></li><li><a href="#pdfbox:report"><span class="secno">4.21</span><span class="content" title="">report<div style="float:right"></div></span></a></li><li><a href="#pdfbox:save"><span class="secno">4.22</span><span class="content" title="">save<div style="float:right"></div></span></a></li><li><a href="#pdfbox:version"><span class="secno">4.23</span><span class="content" title="">version<div style="float:right"></div></span></a></li></ol></li><li><a href="#namespaces"><span class="secno">5 </span><span class="content">Namespaces</span></a></li><li><a href="#restxq"><span class="secno">6 </span><span class="content">RestXQ</span></a></li><li><a href="#source"><span class="secno">7 </span><span class="content">Source</span></a></li></ol></nav><section id="summary"><h2>Summary</h2><div>MISSING</div><details><summary>Related documents</summary><table class="data"><thead><th>View</th><th>Description</th><th>Format</th></thead><tbody><tr><td><a href="xqdoc.xml" title="xqDoc xml file from the source module " class="badge badge-pill badge-light" style="margin-left:1em" target="_blank">xqdoc</a></td><td>xqDoc xml file from the source module</td><td>xml</td></tr><tr><td><a href="xqparse.xml" title="xqparse xml file from the source module " class="badge badge-pill badge-light" style="margin-left:1em" target="_blank">xqparse</a></td><td>xqparse xml file from the source module</td><td>xml</td></tr></tbody></table></details></section><section id="imports"><h2>Imports</h2><p>
This module is imported by
<span class="badge badge-info">0</span> modules. It imports
<span class="badge badge-info">0</span> modules.
</p></section><section id="variables"><h2>Variables</h2><p>None</p></section><section id="functions"><h2>Functions</h2><div class="div3"><h3><a id="pdfbox:_outline"></a><a id="{org.expkg_zone58.Pdfbox3}_outline#2"></a><a href="#pdfbox:_outline">4.1 </a>pdfbox:_outline</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}_outline#2">#2</a></span></p><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:_outline</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$outlineItem</code><code class="as"> as </code><code class="type">item()?</code> )<code class="as"> as </code><code class="type">map(*)</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li><li>outlineItem<code class="as"> as </code><code class="return-type">item()?</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">map(*)</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 17 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:_outline($doc as item(),$outlineItem as item()?)
as map(*){
hof:until(
function($output) { empty($output?this) },
function($input ) {
let $bk:= pdfbox:bookmark($input?this,$doc)
let $bk:= if($bk?hasChildren)
then let $kids:=pdfbox:outline($doc,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)}
},
map{"list":(),"this":$outlineItem}
)
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:bookmark"></a><a id="{org.expkg_zone58.Pdfbox3}bookmark#2"></a><a href="#pdfbox:bookmark">4.2 </a>pdfbox:bookmark</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}bookmark#2">#2</a></span></p><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:bookmark</code>
(
<code class="arg">$bookmark</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">map(*)</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>bookmark<code class="as"> as </code><code class="return-type">item()</code></li><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">map(*)</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 9 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:bookmark($bookmark as item(),$doc as item())
as map(*)
{
map{
"index": PDOutlineItem:findDestinationPage($bookmark,$doc)=&gt;pdfbox:pageIndex($doc),
"title": (# db:checkstrings #) {PDOutlineItem:getTitle($bookmark)}=&gt;translate("<22>",""),
"hasChildren": PDOutlineItem:hasChildren($bookmark)
}
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:bookmark-xml"></a><a id="{org.expkg_zone58.Pdfbox3}bookmark-xml#1"></a><a href="#pdfbox:bookmark-xml">4.3 </a>pdfbox:bookmark-xml</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}bookmark-xml#1">#1</a></span></p><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:bookmark-xml</code>
(
<code class="arg">$outline</code><code class="as"> as </code><code class="type">map(*)*</code> )<code class="as"> as </code><code class="type">element(bookmark)*</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>outline<code class="as"> as </code><code class="return-type">map(*)*</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">element(bookmark) *</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 8 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:bookmark-xml($outline as map(*)*)
as element(bookmark)*
{
$outline!
&lt;bookmark title="{?title}" index="{?index}"&gt;
{?children!pdfbox:bookmark-xml(.)}
&lt;/bookmark&gt;
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:close"></a><a id="{org.expkg_zone58.Pdfbox3}close#1"></a><a href="#pdfbox:close">4.4 </a>pdfbox:close</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}close#1">#1</a></span></p><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:close</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">empty-sequence</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">empty-sequence</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 6 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:close($doc as item())
as empty-sequence(){
(# db:wrapjava void #) {
PDDocument:close($doc)
}
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:extract"></a><a id="{org.expkg_zone58.Pdfbox3}extract#4"></a><a href="#pdfbox:extract">4.5 </a>pdfbox:extract</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}extract#4">#4</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:extract</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$start</code><code class="as"> as </code><code class="type">xs:integer</code>, <code class="arg">$end</code><code class="as"> as </code><code class="type">xs:integer</code>, <code class="arg">$target</code><code class="as"> as </code><code class="type">xs:string</code> )<code class="as"> as </code><code class="type">xs:string</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li><li>start<code class="as"> as </code><code class="return-type">xs:integer</code></li><li>end<code class="as"> as </code><code class="return-type">xs:integer</code></li><li>target<code class="as"> as </code><code class="return-type">xs:string</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:string</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 7 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:extract($doc as item(),
$start as xs:integer,$end as xs:integer,$target as xs:string)
as xs:string
{
let $a:=PageExtractor:new($doc, $start, $end) =&gt;PageExtractor:extract()
return (pdfbox:save($a,$target),pdfbox:close($a))
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:getPageLabels"></a><a id="{org.expkg_zone58.Pdfbox3}getPageLabels#1"></a><a href="#pdfbox:getPageLabels">4.6 </a>pdfbox:getPageLabels</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}getPageLabels#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:getPageLabels</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">item()</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">item()</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 6 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:getPageLabels($doc as item())
as item()
{
PDDocument:getDocumentCatalog($doc)
=&gt;PDDocumentCatalog:getPageLabels()
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:getText"></a><a id="{org.expkg_zone58.Pdfbox3}getText#2"></a><a href="#pdfbox:getText">4.7 </a>pdfbox:getText</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}getText#2">#2</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:getText</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$pageNo</code><code class="as"> as </code><code class="type">xs:integer</code> )<code class="as"> as </code><code class="type">xs:string</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li><li>pageNo<code class="as"> as </code><code class="return-type">xs:integer</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:string</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 9 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:getText($doc as item(), $pageNo as xs:integer)
as xs:string{
let $tStripper := (# db:wrapjava instance #) {
PDFTextStripper:new()
=&gt; PDFTextStripper:setStartPage($pageNo)
=&gt; PDFTextStripper:setEndPage($pageNo)
}
return (# db:checkstrings #) {PDFTextStripper:getText($tStripper,$doc)}
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:gregToISO"></a><a id="{org.expkg_zone58.Pdfbox3}gregToISO#1"></a><a href="#pdfbox:gregToISO">4.8 </a>pdfbox:gregToISO</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}gregToISO#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:gregToISO</code>
(
<code class="arg">$item</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">xs:string</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>item<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:string</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:gregToISO($item as item())
as xs:string{
Q{java:java.util.GregorianCalendar}toZonedDateTime($item)=&gt;string()
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:imageBinary"></a><a id="{org.expkg_zone58.Pdfbox3}imageBinary#2"></a><a href="#pdfbox:imageBinary">4.9 </a>pdfbox:imageBinary</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}imageBinary#2">#2</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:imageBinary</code>
(
<code class="arg">$bufferedImage</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$type</code><code class="as"> as </code><code class="type">xs:string</code> )<code class="as"> as </code><code class="type">xs:base64Binary</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>bufferedImage<code class="as"> as </code><code class="return-type">item()</code></li><li>type<code class="as"> as </code><code class="return-type">xs:string</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:base64Binary</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 7 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:imageBinary($bufferedImage as item(),$type as xs:string)
as xs:base64Binary{
let $bytes:=Q{java:java.io.ByteArrayOutputStream}new()
let $_:=Q{java:javax.imageio.ImageIO}write($bufferedImage , $type, $bytes)
return Q{java:java.io.ByteArrayOutputStream}toByteArray($bytes)
=&gt;convert:integers-to-base64()
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:imageSave"></a><a id="{org.expkg_zone58.Pdfbox3}imageSave#3"></a><a href="#pdfbox:imageSave">4.10 </a>pdfbox:imageSave</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}imageSave#3">#3</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:imageSave</code>
(
<code class="arg">$bufferedImage</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$dest</code><code class="as"> as </code><code class="type">xs:string</code>, <code class="arg">$type</code><code class="as"> as </code><code class="type">xs:string</code> )<code class="as"> as </code><code class="type">xs:boolean</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>bufferedImage<code class="as"> as </code><code class="return-type">item()</code></li><li>dest<code class="as"> as </code><code class="return-type">xs:string</code></li><li>type<code class="as"> as </code><code class="return-type">xs:string</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:boolean</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:imageSave($bufferedImage as item(),$dest as xs:string,$type as xs:string)
as xs:boolean{
Q{java:javax.imageio.ImageIO}write($bufferedImage , $type, File:new($dest))
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:information"></a><a id="{org.expkg_zone58.Pdfbox3}information#1"></a><a href="#pdfbox:information">4.11 </a>pdfbox:information</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}information#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:information</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">map(*)</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">map(*)</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 13 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:information($doc as item())
as map(*){
let $info:=PDDocument:getDocumentInformation($doc)
return map{
"title": PDDocumentInformation:getTitle($info),
"creator": PDDocumentInformation:getCreator($info),
"producer": PDDocumentInformation:getProducer($info),
"subject": PDDocumentInformation:getSubject($info),
"keywords": PDDocumentInformation:getKeywords($info),
"creationdate": pdfbox:gregToISO(PDDocumentInformation:getCreationDate($info)),
"author": PDDocumentInformation:getAuthor($info)
}
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:open"></a><a id="{org.expkg_zone58.Pdfbox3}open#1"></a><a href="#pdfbox:open">4.12 </a>pdfbox:open</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}open#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:open</code>
(
<code class="arg">$pdfpath</code><code class="as"> as </code><code class="type">xs:string</code> )<code class="as"> as </code><code class="type">item()</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>pdfpath<code class="as"> as </code><code class="return-type">xs:string</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">item()</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:open($pdfpath as xs:string)
as item(){
Loader:loadPDF( RandomAccessReadBufferedFile:new($pdfpath))
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:outline"></a><a id="{org.expkg_zone58.Pdfbox3}outline#1"></a><a id="{org.expkg_zone58.Pdfbox3}outline#2"></a><a href="#pdfbox:outline">4.13 </a>pdfbox:outline</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}outline#1">#1</a></span><span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}outline#2">#2</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:outline</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">map(*)*</code></div><div class="proto"><code class="function">pdfbox:outline</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$outlineItem</code><code class="as"> as </code><code class="type">item()?</code> )<code class="as"> as </code><code class="type">map(*)*</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li><li>outlineItem<code class="as"> as </code><code class="return-type">item()?</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">map(*) *</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 17 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:outline($doc as item())
as map(*)*{
(# db:wrapjava some #) {
let $outline:=
PDDocument:getDocumentCatalog($doc)
=&gt;PDDocumentCatalog:getDocumentOutline()
return if(exists($outline))
then pdfbox:outline($doc,PDOutlineItem:getFirstChild($outline))
}
}</code></pre><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:outline($doc as item(),$outlineItem as item()?)
as map(*)*{
let $find as map(*):=pdfbox:_outline($doc ,$outlineItem)
return map:get($find,"list")
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:outline-xml"></a><a id="{org.expkg_zone58.Pdfbox3}outline-xml#1"></a><a href="#pdfbox:outline-xml">4.14 </a>pdfbox:outline-xml</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}outline-xml#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:outline-xml</code>
(
<code class="arg">$outline</code><code class="as"> as </code><code class="type">map(*)*</code> )<code class="as"> as </code><code class="type">element(outline)</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>outline<code class="as"> as </code><code class="return-type">map(*)*</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">element(outline)</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 6 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:outline-xml($outline as map(*)*)
as element(outline){
element outline {
$outline!pdfbox:bookmark-xml(.)
}
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:outx"></a><a id="{org.expkg_zone58.Pdfbox3}outx#2"></a><a href="#pdfbox:outx">4.15 </a>pdfbox:outx</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}outx#2">#2</a></span></p><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:outx</code>
(
<code class="arg">$page</code>, <code class="arg">$document</code> )</div></dd><dt class="label">Parameters</dt><dd><ul><li>page<code class="as"> as </code><code class="return-type"></code></li><li>document<code class="as"> as </code><code class="return-type"></code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type"></code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 6 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:outx($page ,$document)
{
let $currentPage := PDOutlineItem:findDestinationPage($page,$document)
let $pageNumber := pdfbox:pageIndex($currentPage,$document)
return $pageNumber
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:page-count"></a><a id="{org.expkg_zone58.Pdfbox3}page-count#1"></a><a href="#pdfbox:page-count">4.16 </a>pdfbox:page-count</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}page-count#1">#1</a></span></p><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:page-count</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">xs:integer</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:integer</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:page-count($doc as item())
as xs:integer{
PDDocument:getNumberOfPages($doc)
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:pageBufferedImage"></a><a id="{org.expkg_zone58.Pdfbox3}pageBufferedImage#3"></a><a href="#pdfbox:pageBufferedImage">4.17 </a>pdfbox:pageBufferedImage</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}pageBufferedImage#3">#3</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:pageBufferedImage</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$pageNo</code><code class="as"> as </code><code class="type">xs:integer</code>, <code class="arg">$scale</code><code class="as"> as </code><code class="type">xs:float</code> )<code class="as"> as </code><code class="type">item()</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li><li>pageNo<code class="as"> as </code><code class="return-type">xs:integer</code></li><li>scale<code class="as"> as </code><code class="return-type">xs:float</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">item()</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:pageBufferedImage($doc as item(), $pageNo as xs:integer,$scale as xs:float)
as item(){
PDFRenderer:new($doc)=&gt;PDFRenderer:renderImage($pageNo,$scale)
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:pageIndex"></a><a id="{org.expkg_zone58.Pdfbox3}pageIndex#2"></a><a href="#pdfbox:pageIndex">4.18 </a>pdfbox:pageIndex</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}pageIndex#2">#2</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:pageIndex</code>
(
<code class="arg">$page</code><code class="as"> as </code><code class="type">item()?</code>, <code class="arg">$document</code> )<code class="as"> as </code><code class="type">item()?</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>page<code class="as"> as </code><code class="return-type">item()?</code></li><li>document<code class="as"> as </code><code class="return-type"></code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">item() ?</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 10 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:pageIndex(
$page as item()? (: as java:org.apache.pdfbox.pdmodel.PDPage :),
$document)
as item()?
{
if(exists($page))
then PDDocument:getDocumentCatalog($document)
=&gt;PDDocumentCatalog:getPages()
=&gt;PDPageTree:indexOf($page)
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:pageLabels"></a><a id="{org.expkg_zone58.Pdfbox3}pageLabels#1"></a><a href="#pdfbox:pageLabels">4.19 </a>pdfbox:pageLabels</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}pageLabels#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:pageLabels</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">xs:string*</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:string *</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 7 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:pageLabels($doc as item())
as xs:string*
{
PDDocument:getDocumentCatalog($doc)
=&gt;PDDocumentCatalog:getPageLabels()
=&gt;PDPageLabels:getLabelsByPageIndices()
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:pdfVersion"></a><a id="{org.expkg_zone58.Pdfbox3}pdfVersion#1"></a><a href="#pdfbox:pdfVersion">4.20 </a>pdfbox:pdfVersion</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}pdfVersion#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:pdfVersion</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code> )<code class="as"> as </code><code class="type">xs:float</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:float</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:pdfVersion($doc as item())
as xs:float{
PDDocument:getVersion($doc)
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:report"></a><a id="{org.expkg_zone58.Pdfbox3}report#1"></a><a href="#pdfbox:report">4.21 </a>pdfbox:report</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}report#1">#1</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:report</code>
(
<code class="arg">$pdfpath</code><code class="as"> as </code><code class="type">xs:string</code> )<code class="as"> as </code><code class="type">map(*)</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>pdfpath<code class="as"> as </code><code class="return-type">xs:string</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">map(*)</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 10 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:report($pdfpath as xs:string)
as map(*){
let $doc:=pdfbox:open($pdfpath)
return (map{
"file": $pdfpath,
"pages": pdfbox:page-count($doc),
"outline": pdfbox:outline($doc)=&gt;count()
},pdfbox:information($doc)
)=&gt;map:merge()
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:save"></a><a id="{org.expkg_zone58.Pdfbox3}save#2"></a><a href="#pdfbox:save">4.22 </a>pdfbox:save</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}save#2">#2</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:save</code>
(
<code class="arg">$doc</code><code class="as"> as </code><code class="type">item()</code>, <code class="arg">$savepath</code><code class="as"> as </code><code class="type">xs:string</code> )<code class="as"> as </code><code class="type">xs:string</code></div></dd><dt class="label">Parameters</dt><dd><ul><li>doc<code class="as"> as </code><code class="return-type">item()</code></li><li>savepath<code class="as"> as </code><code class="return-type">xs:string</code></li></ul></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:string</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:save($doc as item(),$savepath as xs:string)
as xs:string{
PDDocument:save($doc,File:new($savepath)),$savepath
}</code></pre></details></div><div class="div3"><h3><a id="pdfbox:version"></a><a id="{org.expkg_zone58.Pdfbox3}version#0"></a><a href="#pdfbox:version">4.23 </a>pdfbox:version</h3><p>Arities: <span style="margin-left:1em"><a href="#{org.expkg_zone58.Pdfbox3}version#0">#0</a></span></p><dt class="label">Summary</dt><dd></dd><dt class="label">Signatures</dt><dd><div class="proto"><code class="function">pdfbox:version</code>
(
)<code class="as"> as </code><code class="type">xs:string</code></div></dd><dt class="label">Return</dt><dd><ul><li><code class="return-type">xs:string</code></li></ul></dd><details><summary>Invoked by 0 functions from 0 modules</summary><ul></ul></details><details><summary>Source ( 4 lines)</summary><pre class="no-line-numbers" style="white-space:pre-wrap;"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">function pdfbox:version()
as xs:string{
Q{java:org.apache.pdfbox.util.Version}getVersion()
}</code></pre></details></div></section><section id="namespaces"><h2>Namespaces</h2><p>The following namespaces are defined:</p><table class="data" style="float:none"><thead><tr><th>Prefix</th><th>Uri</th></tr></thead><tbody><tr><td>convert</td><td><span class="badge badge-warning" title="Externally defined">http://basex.org/modules/convert</span></td></tr><tr><td>db</td><td><span class="badge badge-warning" title="Externally defined">http://basex.org/modules/db</span></td></tr><tr><td>File</td><td><span class="badge badge-warning" title="Externally defined">java:java.io.File</span></td></tr><tr><td>hof</td><td><span class="badge badge-warning" title="Externally defined">http://basex.org/modules/hof</span></td></tr><tr><td>Loader</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.Loader</span></td></tr><tr><td>map</td><td><span class="badge badge-warning" title="Externally defined">http://www.w3.org/2005/xpath-functions/map</span></td></tr><tr><td>PageExtractor</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.multipdf.PageExtractor</span></td></tr><tr><td>PDDocument</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.PDDocument</span></td></tr><tr><td>PDDocumentCatalog</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.PDDocumentCatalog</span></td></tr><tr><td>PDDocumentInformation</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.PDDocumentInformation</span></td></tr><tr><td>PDDocumentOutline</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline</span></td></tr><tr><td>pdfbox</td><td><span><a href="../../modules/F000001/index.html" title="Pdfbox3.xqm">org.expkg_zone58.Pdfbox3</a></span></td></tr><tr><td>PDFRenderer</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.rendering.PDFRenderer</span></td></tr><tr><td>PDFTextStripper</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.text.PDFTextStripper</span></td></tr><tr><td>PDOutlineItem</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem</span></td></tr><tr><td>PDPageLabels</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.common.PDPageLabels</span></td></tr><tr><td>PDPageTree</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.pdmodel.PDPageTree</span></td></tr><tr><td>RandomAccessReadBufferedFile</td><td><span class="badge badge-warning" title="Externally defined">java:org.apache.pdfbox.io.RandomAccessReadBufferedFile</span></td></tr><tr><td>xs</td><td><span class="badge badge-warning" title="Externally defined">http://www.w3.org/2001/XMLSchema</span></td></tr></tbody></table></section><div class="div2"><h2><a id="restxq"></a>6 RestXQ</h2><p>None</p></div><section id="source"><h2>Source Code</h2><pre style="white-space:pre-wrap;" class="line-numbers" data-src="plugins/line-numbers/index.html"><code class="language-xquery" data-prismjs-copy="Copy to clipboard">xquery version '3.1';
(:~
pdfbox 3.0 https://pdfbox.apache.org/ BaseX 10.7+ interface library,
requires pdfbox jar on classpath, tested with pdfbox-app-3.0.3.jar
@see download https://pdfbox.apache.org/download.cgi
@javadoc https://javadoc.io/static/org.apache.pdfbox/pdfbox/3.0.3/
:)
module namespace pdfbox="org.expkg_zone58.Pdfbox3";
declare namespace Loader ="java:org.apache.pdfbox.Loader";
declare namespace PDFTextStripper = "java:org.apache.pdfbox.text.PDFTextStripper";
(:~
@see https://javadoc.io/static/org.apache.pdfbox/pdfbox/3.0.0/org/apache/pdfbox/pdmodel/PDDocument.html
:)
declare namespace PDDocument ="java:org.apache.pdfbox.pdmodel.PDDocument";
declare namespace PDDocumentCatalog ="java:org.apache.pdfbox.pdmodel.PDDocumentCatalog";
declare namespace PDPageLabels ="java:org.apache.pdfbox.pdmodel.common.PDPageLabels";
(:~
@see https://javadoc.io/static/org.apache.pdfbox/pdfbox/3.0.0/org/apache/pdfbox/multipdf/PageExtractor.html
:)
declare namespace PageExtractor ="java:org.apache.pdfbox.multipdf.PageExtractor";
(:~
@see https://javadoc.io/static/org.apache.pdfbox/pdfbox/3.0.0/org/apache/pdfbox/pdmodel/PDPageTree.html
:)
declare namespace PDPageTree ="java:org.apache.pdfbox.pdmodel.PDPageTree";
(:~
@see https://javadoc.io/static/org.apache.pdfbox/pdfbox/3.0.2/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDDocumentOutline.html
:)
declare namespace PDDocumentOutline ="java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline";
declare namespace PDDocumentInformation ="java:org.apache.pdfbox.pdmodel.PDDocumentInformation";
(:~
@see https://javadoc.io/static/org.apache.pdfbox/pdfbox/3.0.0/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem.html
:)
declare namespace PDOutlineItem="java:org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem";
declare namespace PDFRenderer="java:org.apache.pdfbox.rendering.PDFRenderer";
declare namespace RandomAccessReadBufferedFile = "java:org.apache.pdfbox.io.RandomAccessReadBufferedFile";
declare namespace File ="java:java.io.File";
(:~ version of pdfbox:)
declare function pdfbox:version()
as xs:string{
Q{java:org.apache.pdfbox.util.Version}getVersion()
};
(:~ open pdf, returns handle :)
declare function pdfbox:open($pdfpath as xs:string)
as item(){
Loader:loadPDF( RandomAccessReadBufferedFile:new($pdfpath))
};
(:~ the PDF specification version this document conforms to.:)
declare function pdfbox:pdfVersion($doc as item())
as xs:float{
PDDocument:getVersion($doc)
};
(:~ save pdf $doc to $savepath , returns $savepath :)
declare function pdfbox:save($doc as item(),$savepath as xs:string)
as xs:string{
PDDocument:save($doc,File:new($savepath)),$savepath
};
declare function pdfbox:close($doc as item())
as empty-sequence(){
(# db:wrapjava void #) {
PDDocument:close($doc)
}
};
declare function pdfbox:page-count($doc as item())
as xs:integer{
PDDocument:getNumberOfPages($doc)
};
(:~ map with document metadata :)
declare function pdfbox:information($doc as item())
as map(*){
let $info:=PDDocument:getDocumentInformation($doc)
return map{
"title": PDDocumentInformation:getTitle($info),
"creator": PDDocumentInformation:getCreator($info),
"producer": PDDocumentInformation:getProducer($info),
"subject": PDDocumentInformation:getSubject($info),
"keywords": PDDocumentInformation:getKeywords($info),
"creationdate": pdfbox:gregToISO(PDDocumentInformation:getCreationDate($info)),
"author": PDDocumentInformation:getAuthor($info)
}
};
(:~ convert date :)
declare
function pdfbox:gregToISO($item as item())
as xs:string{
Q{java:java.util.GregorianCalendar}toZonedDateTime($item)=&gt;string()
};
(:~ outline for $doc as map()* :)
declare function pdfbox:outline($doc as item())
as map(*)*{
(# db:wrapjava some #) {
let $outline:=
PDDocument:getDocumentCatalog($doc)
=&gt;PDDocumentCatalog:getDocumentOutline()
return if(exists($outline))
then pdfbox:outline($doc,PDOutlineItem:getFirstChild($outline))
}
};
(:~ return bookmark info for children of $outlineItem as seq of maps :)
declare function pdfbox:outline($doc as item(),$outlineItem as item()?)
as map(*)*{
let $find as map(*):=pdfbox:_outline($doc ,$outlineItem)
return map:get($find,"list")
};
(: BaseX bug 10.7? error if inlined in outline :)
declare function pdfbox:_outline($doc as item(),$outlineItem as item()?)
as map(*){
hof:until(
function($output) { empty($output?this) },
function($input ) {
let $bk:= pdfbox:bookmark($input?this,$doc)
let $bk:= if($bk?hasChildren)
then let $kids:=pdfbox:outline($doc,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)}
},
map{"list":(),"this":$outlineItem}
)
};
(:~ outline as xml :)
declare function pdfbox:outline-xml($outline as map(*)*)
as element(outline){
element outline {
$outline!pdfbox:bookmark-xml(.)
}
};
declare function pdfbox:bookmark-xml($outline as map(*)*)
as element(bookmark)*
{
$outline!
&lt;bookmark title="{?title}" index="{?index}"&gt;
{?children!pdfbox:bookmark-xml(.)}
&lt;/bookmark&gt;
};
(: return bookmark info for children of $outlineItem :)
declare function pdfbox:bookmark($bookmark as item(),$doc as item())
as map(*)
{
map{
"index": PDOutlineItem:findDestinationPage($bookmark,$doc)=&gt;pdfbox:pageIndex($doc),
"title": (# db:checkstrings #) {PDOutlineItem:getTitle($bookmark)}=&gt;translate("<22>",""),
"hasChildren": PDOutlineItem:hasChildren($bookmark)
}
};
declare function pdfbox:outx($page ,$document)
{
let $currentPage := PDOutlineItem:findDestinationPage($page,$document)
let $pageNumber := pdfbox:pageIndex($currentPage,$document)
return $pageNumber
};
(:~ pageIndex of $page in $document :)
declare function pdfbox:pageIndex(
$page as item()? (: as java:org.apache.pdfbox.pdmodel.PDPage :),
$document)
as item()?
{
if(exists($page))
then PDDocument:getDocumentCatalog($document)
=&gt;PDDocumentCatalog:getPages()
=&gt;PDPageTree:indexOf($page)
};
(:~ save new PDF doc from 1 based page range
@return save path :)
declare function pdfbox:extract($doc as item(),
$start as xs:integer,$end as xs:integer,$target as xs:string)
as xs:string
{
let $a:=PageExtractor:new($doc, $start, $end) =&gt;PageExtractor:extract()
return (pdfbox:save($a,$target),pdfbox:close($a))
};
(:~ pageLabel info
@see https://www.w3.org/TR/WCAG20-TECHS/PDF17.html#PDF17-examples
@see https://codereview.stackexchange.com/questions/286078/java-code-showing-page-labels-from-pdf-files
:)
declare function pdfbox:getPageLabels($doc as item())
as item()
{
PDDocument:getDocumentCatalog($doc)
=&gt;PDDocumentCatalog:getPageLabels()
};
(:~ pageLabel for every page:)
declare function pdfbox:pageLabels($doc as item())
as xs:string*
{
PDDocument:getDocumentCatalog($doc)
=&gt;PDDocumentCatalog:getPageLabels()
=&gt;PDPageLabels:getLabelsByPageIndices()
};
(:~ return text on $pageNo :)
declare function pdfbox:getText($doc as item(), $pageNo as xs:integer)
as xs:string{
let $tStripper := (# db:wrapjava instance #) {
PDFTextStripper:new()
=&gt; PDFTextStripper:setStartPage($pageNo)
=&gt; PDFTextStripper:setEndPage($pageNo)
}
return (# db:checkstrings #) {PDFTextStripper:getText($tStripper,$doc)}
};
(:~ summary info as map for $pdfpath :)
declare function pdfbox:report($pdfpath as xs:string)
as map(*){
let $doc:=pdfbox:open($pdfpath)
return (map{
"file": $pdfpath,
"pages": pdfbox:page-count($doc),
"outline": pdfbox:outline($doc)=&gt;count()
},pdfbox:information($doc)
)=&gt;map:merge()
};
(:~ java:bufferedImage for $pageNo using $scale times dpi= 72
@param $pageNo (ZERO based)
@param $scale 1=72 dpi
@return Java java.awt.image.BufferedImage object
:)
declare function pdfbox:pageBufferedImage($doc as item(), $pageNo as xs:integer,$scale as xs:float)
as item(){
PDFRenderer:new($doc)=&gt;PDFRenderer:renderImage($pageNo,$scale)
};
(:~ save bufferedimage to $dest
@param $type = "gif","png" etc:)
declare function pdfbox:imageSave($bufferedImage as item(),$dest as xs:string,$type as xs:string)
as xs:boolean{
Q{java:javax.imageio.ImageIO}write($bufferedImage , $type, File:new($dest))
};
(:~ return image
@param $type = "gif","png" etc:)
declare function pdfbox:imageBinary($bufferedImage as item(),$type as xs:string)
as xs:base64Binary{
let $bytes:=Q{java:java.io.ByteArrayOutputStream}new()
let $_:=Q{java:javax.imageio.ImageIO}write($bufferedImage , $type, $bytes)
return Q{java:java.io.ByteArrayOutputStream}toByteArray($bytes)
=&gt;convert:integers-to-base64()
};</code></pre></section></div></div><div class="footer"><p style="text-align:right">Generated by
<a href="https://github.com/Quodatum/xqdoca" target="_blank">xqDocA</a>
  on <span title="2025-01-25T21:36:51.487Z">Saturday, 25th January 2025</span></p></div><script src="../../resources/prism/1.29.0/prism.js" type="text/javascript"></script><script src="../../resources/xqdoca.js" type="text/javascript"></script></body></html>