pdftract/docs/user-docs/build/user-docs/troubleshooting.html
jedarden 3e3fff08e1 fix(pdftract-1j0f8): fix clap short flag conflict in conformance subcommand
The conformance subcommand had duplicate short options (-s) for both
--suite and --sdk, causing the CLI reference generator to panic with
"Short option names must be unique".

Changed --sdk short option from -s to -k (matching the CI workflow
convention). This allows the gen-cli-reference binary to run and the
CI cli-ref-gen gate to function correctly.

Also regenerated mdBook build output including the new cli-reference.html.

Closes pdftract-1j0f8. Verification: notes/pdftract-1j0f8.md.
2026-06-08 16:06:26 -04:00

451 lines
38 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html lang="en" class="light sidebar-visible" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Troubleshooting Guide - pdftract User Documentation</title>
<!-- Custom HTML head -->
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="favicon-de23e50b.svg">
<link rel="shortcut icon" href="favicon-8114d1fc.png">
<link rel="stylesheet" href="css/variables-8adf115d.css">
<link rel="stylesheet" href="css/general-2459343d.css">
<link rel="stylesheet" href="css/chrome-ae938929.css">
<link rel="stylesheet" href="css/print-9e4910d8.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="fonts/fonts-9644e21d.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" id="mdbook-highlight-css" href="highlight-493f70e1.css">
<link rel="stylesheet" id="mdbook-tomorrow-night-css" href="tomorrow-night-4c0ae647.css">
<link rel="stylesheet" id="mdbook-ayu-highlight-css" href="ayu-highlight-3fdfc3ac.css">
<!-- Custom theme stylesheets -->
<!-- Provide site root and default themes to javascript -->
<script>
const path_to_root = "";
const default_light_theme = "light";
const default_dark_theme = "navy";
window.path_to_searchindex_js = "searchindex-b0453933.js";
</script>
<!-- Start loading toc.js asap -->
<script src="toc-224e0484.js"></script>
</head>
<body>
<div id="mdbook-help-container">
<div id="mdbook-help-popup">
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
<div>
<p>Press <kbd></kbd> or <kbd></kbd> to navigate between chapters</p>
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
<p>Press <kbd>?</kbd> to show this help</p>
<p>Press <kbd>Esc</kbd> to hide this help</p>
</div>
</div>
</div>
<div id="mdbook-body-container">
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
let theme = localStorage.getItem('mdbook-theme');
let sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
let theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
const html = document.documentElement;
html.classList.remove('light')
html.classList.add(theme);
html.classList.add("js");
</script>
<input type="checkbox" id="mdbook-sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
let sidebar = null;
const sidebar_toggle = document.getElementById("mdbook-sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
sidebar_toggle.checked = false;
}
if (sidebar === 'visible') {
sidebar_toggle.checked = true;
} else {
html.classList.remove('sidebar-visible');
}
</script>
<nav id="mdbook-sidebar" class="sidebar" aria-label="Table of contents">
<!-- populated by js -->
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
<noscript>
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
</noscript>
<div id="mdbook-sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<div id="mdbook-page-wrapper" class="page-wrapper">
<div class="page">
<div id="mdbook-menu-bar-hover-placeholder"></div>
<div id="mdbook-menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="mdbook-sidebar-toggle" class="icon-button" for="mdbook-sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="mdbook-sidebar">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"/></svg></span>
</label>
<button id="mdbook-theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="mdbook-theme-list">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M371.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L600.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S549.7-4.4 531.1 9.6L294.4 187.2c-24 18-38.2 46.1-38.4 76.1L371.3 367.1zm-19.6 25.4l-116-104.4C175.9 290.3 128 339.6 128 400c0 3.9 .2 7.8 .6 11.6c1.8 17.5-10.2 36.4-27.8 36.4H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H240c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"/></svg></span>
</button>
<ul id="mdbook-theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="mdbook-theme-default_theme">Auto</button></li>
<li role="none"><button role="menuitem" class="theme" id="mdbook-theme-light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="mdbook-theme-rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="mdbook-theme-coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="mdbook-theme-navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="mdbook-theme-ayu">Ayu</button></li>
</ul>
<button id="mdbook-search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="mdbook-searchbar">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352c79.5 0 144-64.5 144-144s-64.5-144-144-144S64 128.5 64 208s64.5 144 144 144z"/></svg></span>
</button>
</div>
<h1 class="menu-title">pdftract User Documentation</h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<span class=fa-svg id="print-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zm-16-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z"/></svg></span>
</a>
<a href="https://github.com/jedarden/pdftract" title="Git repository" aria-label="Git repository">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg></span>
</a>
<a href="https://github.com/jedarden/pdftract/edit/main/docs/user-docs/src/src/troubleshooting.md" title="Suggest an edit" aria-label="Suggest an edit" rel="edit">
<span class=fa-svg id="git-edit-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M421.7 220.3l-11.3 11.3-22.6 22.6-205 205c-6.6 6.6-14.8 11.5-23.8 14.1L30.8 511c-8.4 2.5-17.5 .2-23.7-6.1S-1.5 489.7 1 481.2L38.7 353.1c2.6-9 7.5-17.2 14.1-23.8l205-205 22.6-22.6 11.3-11.3 33.9 33.9 62.1 62.1 33.9 33.9zM96 353.9l-9.3 9.3c-.9 .9-1.6 2.1-2 3.4l-25.3 86 86-25.3c1.3-.4 2.5-1.1 3.4-2l9.3-9.3H112c-8.8 0-16-7.2-16-16V353.9zM453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-14.5 14.5-22.6 22.6-11.3 11.3-33.9-33.9-62.1-62.1L314.3 67.7l11.3-11.3 22.6-22.6 14.5-14.5c25-25 65.5-25 90.5 0z"/></svg></span>
</a>
</div>
</div>
<div id="mdbook-search-wrapper" class="hidden">
<form id="mdbook-searchbar-outer" class="searchbar-outer">
<div class="search-wrapper">
<input type="search" id="mdbook-searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="mdbook-searchresults-outer" aria-describedby="searchresults-header">
<div class="spinner-wrapper">
<span class=fa-svg id="fa-spin"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M304 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 416c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM48 304c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm464-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM142.9 437c18.7-18.7 18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zm0-294.2c18.7-18.7 18.7-49.1 0-67.9S93.7 56.2 75 75s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zM369.1 437c18.7 18.7 49.1 18.7 67.9 0s18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9z"/></svg></span>
</div>
</div>
</form>
<div id="mdbook-searchresults-outer" class="searchresults-outer hidden">
<div id="mdbook-searchresults-header" class="searchresults-header"></div>
<ul id="mdbook-searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('mdbook-sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('mdbook-sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#mdbook-sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="mdbook-content" class="content">
<main>
<h1 id="troubleshooting"><a class="header" href="#troubleshooting">Troubleshooting</a></h1>
<p>This guide maps common pdftract failures to their causes and fixes. Each error is associated with a <strong>diagnostic code</strong> that appears in extraction output (see <code>diagnostics</code> in the JSON response or CLI stderr).</p>
<blockquote>
<p><strong>For the authoritative diagnostic code catalog</strong>, see the <a href="./troubleshooting/diagnostics.html">Diagnostics Reference</a>.</p>
</blockquote>
<h2 id="symptom--diagnostic-lookup"><a class="header" href="#symptom--diagnostic-lookup">Symptom → Diagnostic Lookup</a></h2>
<div class="table-wrapper">
<table>
<thead>
<tr><th>Symptom</th><th>Likely Diagnostic Code</th></tr>
</thead>
<tbody>
<tr><td>PDF wont open, “encrypted” error</td><td><code>ENCRYPTION_UNSUPPORTED</code></td></tr>
<tr><td>Text extraction incomplete or missing</td><td><code>XREF_REPAIRED</code>, <code>OCR_*_UNSUPPORTED</code></td></tr>
<tr><td>Process hangs or runs very long</td><td><code>STREAM_BOMB</code></td></tr>
<tr><td>“Path outside root” (MCP mode)</td><td><code>MCP_PATH_TRAVERSAL</code></td></tr>
<tr><td>Cache errors / corrupted entries</td><td><code>CACHE_ENTRY_CORRUPT</code>, <code>CACHE_INTEGRITY_FAIL</code></td></tr>
<tr><td>Profile fails to load</td><td><code>PROFILE_INVALID</code>, <code>PROFILE_SECRETS_FORBIDDEN</code></td></tr>
<tr><td>Remote URL fetch blocked</td><td><code>URL_PRIVATE_NETWORK</code></td></tr>
<tr><td>Requested page doesnt exist</td><td><code>PAGE_OUT_OF_RANGE</code></td></tr>
<tr><td>Text contains placeholder characters (⍰)</td><td><code>GLYPH_UNMAPPED</code></td></tr>
<tr><td>Broken vector graphics not recovered</td><td><code>BROKENVECTOR_OCR_UNAVAILABLE</code></td></tr>
<tr><td>JavaScript warning in output</td><td><code>JAVASCRIPT_PRESENT</code></td></tr>
<tr><td>Circular reference warnings</td><td><code>STRUCT_CIRCULAR_REF</code>, <code>STRUCT_XOBJECT_CYCLE</code></td></tr>
<tr><td>Stack overflow warnings</td><td><code>GSTATE_STACK_OVERFLOW</code></td></tr>
</tbody>
</table>
</div>
<hr>
<h2 id="xref_repaired-warning"><a class="header" href="#xref_repaired-warning">XREF_REPAIRED warning</a></h2>
<p><strong>What it means</strong>: pdftract found the PDFs cross-reference table was corrupt and ran the forward-scan fallback (Phase 1.3) to recover.</p>
<p><strong>Cause</strong>: PDF created or transmitted with truncation or corruption. The <code>startxref</code> offset points outside the file, or the xref table is malformed.</p>
<p><strong>Fix</strong>: Usually no action needed; extraction succeeds with the recovered xref. Output may be incomplete on truncated files. If extraction fails, the PDF is unsalvageable.</p>
<p><strong>Severity</strong>: info (extraction continues)</p>
<hr>
<h2 id="stream_bomb-error"><a class="header" href="#stream_bomb-error">STREAM_BOMB error</a></h2>
<p><strong>What it means</strong>: A compressed stream exceeded the decompression size limit (default: 512 MB).</p>
<p><strong>Cause</strong>: A hostile PDF with a “compression bomb” — a small stream that expands to multi-GB size (e.g., 10 KB → 2 GB). This is a common security exploit pattern.</p>
<p><strong>Fix</strong>:</p>
<ul>
<li>If the PDF is <strong>trusted</strong>: Increase the limit with <code>--max-decompress-gb 2</code> (or higher)</li>
<li>If the PDF is <strong>untrusted</strong>: Treat as a hostile file; do not process</li>
</ul>
<p><strong>Severity</strong>: error (stream aborted; partial extraction returned)</p>
<hr>
<h2 id="encryption_unsupported-fatal"><a class="header" href="#encryption_unsupported-fatal">ENCRYPTION_UNSUPPORTED fatal</a></h2>
<p><strong>What it means</strong>: The PDF is encrypted with an unsupported handler or the wrong password.</p>
<p><strong>Cause</strong>:</p>
<ul>
<li>PDF encrypted with an unknown handler (e.g., Adobe LiveCycle policy server)</li>
<li>PDF password-protected but no password (or wrong password) supplied</li>
</ul>
<p><strong>Fix</strong>:</p>
<pre><code class="language-bash"># Supply password via environment variable
export PDFTRACT_PASSWORD="your-password"
pdftract extract document.pdf
# Or via stdin
echo "your-password" | pdftract extract --password-stdin document.pdf
</code></pre>
<p>If the handler is unsupported (e.g., Adobe LiveCycle), use an Adobe-side decryption tool first, or a dedicated password recovery tool like <code>pdfcrack</code> or <code>john</code>.</p>
<p><strong>Severity</strong>: fatal (process exits with code 3)</p>
<hr>
<h2 id="ocr_jbig2_unsupported--ocr_jpx_unsupported--ocr_ccitt_unsupported-warning"><a class="header" href="#ocr_jbig2_unsupported--ocr_jpx_unsupported--ocr_ccitt_unsupported-warning">OCR_JBIG2_UNSUPPORTED / OCR_JPX_UNSUPPORTED / OCR_CCITT_UNSUPPORTED warning</a></h2>
<p><strong>What it means</strong>: A page contains an image that requires a decoder not available in the current build.</p>
<p><strong>Cause</strong>:</p>
<ul>
<li><code>OCR_JBIG2_UNSUPPORTED</code>: JBIG2-encoded image (rare)</li>
<li><code>OCR_JPX_UNSUPPORTED</code>: JPEG 2000-encoded image</li>
<li><code>OCR_CCITT_UNSUPPORTED</code>: CCITT fax-encoded image</li>
</ul>
<p><strong>Fix</strong>:</p>
<pre><code class="language-bash"># Build with full-render feature (enables all decoders via PDFium)
cargo build --release --features full-render
# Or install system libraries:
# - JPX: install libopenjp2
# - CCITT: install libtiff
</code></pre>
<p><strong>Severity</strong>: warn (page skipped from OCR; extraction continues)</p>
<hr>
<h2 id="brokenvector_ocr_unavailable-warning"><a class="header" href="#brokenvector_ocr_unavailable-warning">BROKENVECTOR_OCR_UNAVAILABLE warning</a></h2>
<p><strong>What it means</strong>: A page contains broken vector graphics that could be recovered via OCR, but the OCR feature is disabled.</p>
<p><strong>Cause</strong>: Build was compiled without the <code>ocr</code> feature.</p>
<p><strong>Fix</strong>: Rebuild with OCR enabled:</p>
<pre><code class="language-bash">cargo build --release --features ocr
</code></pre>
<p><strong>Severity</strong>: warn (broken vector graphics not recovered; extraction continues)</p>
<hr>
<h2 id="mcp_path_traversal--path_outside_root-error"><a class="header" href="#mcp_path_traversal--path_outside_root-error">MCP_PATH_TRAVERSAL / PATH_OUTSIDE_ROOT error</a></h2>
<p><strong>What it means</strong>: (MCP mode) The requested path escapes the <code>--root</code> directory boundary.</p>
<p><strong>Cause</strong>: A tool call attempted path traversal (e.g., <code>../../etc/passwd</code>).</p>
<p><strong>Fix</strong>:</p>
<ul>
<li>Adjust the requested path to stay within <code>--root</code></li>
<li>Or restart the MCP server without <code>--root</code> restriction (not recommended for multi-tenant deployments)</li>
</ul>
<p><strong>Severity</strong>: error (request rejected)</p>
<hr>
<h2 id="url_private_network-error"><a class="header" href="#url_private_network-error">URL_PRIVATE_NETWORK error</a></h2>
<p><strong>What it means</strong>: Remote fetch blocked because the URL targets a private network address.</p>
<p><strong>Cause</strong>: URL targets localhost, private IP ranges (RFC 1918), or link-local addresses. This is an SSRF (Server-Side Request Forgery) protection.</p>
<p><strong>Fix</strong>:</p>
<pre><code class="language-bash"># If you trust the URL, allow private networks:
pdftract extract --allow-private-networks https://internal-server/docs.pdf
</code></pre>
<p><strong>Severity</strong>: error (request rejected with HTTP 400 in serve mode)</p>
<hr>
<h2 id="cache_entry_corrupt-warning"><a class="header" href="#cache_entry_corrupt-warning">CACHE_ENTRY_CORRUPT warning</a></h2>
<p><strong>What it means</strong>: A cache entry failed integrity verification.</p>
<p><strong>Cause</strong>: Cache file corruption (disk error, concurrent write, etc.).</p>
<p><strong>Fix</strong>: None needed — the entry is automatically deleted and extraction re-runs. If this recurs frequently, check your disk filesystem.</p>
<p><strong>Severity</strong>: warn (entry deleted; extraction re-runs)</p>
<hr>
<h2 id="cache_integrity_fail-diagnostic"><a class="header" href="#cache_integrity_fail-diagnostic">CACHE_INTEGRITY_FAIL diagnostic</a></h2>
<p><strong>What it means</strong>: A cache entrys HMAC verification failed, indicating potential cache poisoning.</p>
<p><strong>Cause</strong>: Malicious co-tenant wrote a forged cache entry (multi-user cache scenarios), or disk corruption.</p>
<p><strong>Fix</strong>: The entry is treated as a cache miss and extraction re-runs. In multi-user environments, ensure per-user cache directories or verify cache permissions.</p>
<p><strong>Severity</strong>: warn (entry rejected; extraction re-runs)</p>
<hr>
<h2 id="profile_invalid--profile_secrets_forbidden-error"><a class="header" href="#profile_invalid--profile_secrets_forbidden-error">PROFILE_INVALID / PROFILE_SECRETS_FORBIDDEN error</a></h2>
<p><strong>What it means</strong>: Profile YAML failed validation.</p>
<p><strong>Cause</strong>:</p>
<ul>
<li><code>PROFILE_INVALID</code>: YAML syntax error or schema violation</li>
<li><code>PROFILE_SECRETS_FORBIDDEN</code>: Profile contains secret-keyword keys (<code>password:</code>, <code>token:</code>, <code>secret:</code>, <code>api_key:</code>)</li>
</ul>
<p><strong>Fix</strong>:</p>
<pre><code class="language-bash"># For schema errors, check the YAML syntax:
pdftract profile show --profile-path your-profile.yaml
# For secrets errors, remove secret keys from the profile.
# Secrets should be passed via environment variables, not profiles.
</code></pre>
<p><strong>Severity</strong>: error (profile rejected)</p>
<hr>
<h2 id="page_out_of_range-warning"><a class="header" href="#page_out_of_range-warning">PAGE_OUT_OF_RANGE warning</a></h2>
<p><strong>What it means</strong>: The <code>--pages</code> argument exceeds the documents actual page count.</p>
<p><strong>Cause</strong>: Page range specified (e.g., <code>--pages 1-100</code>) on a document with fewer pages (e.g., 10 pages).</p>
<p><strong>Fix</strong>: Adjust the <code>--pages</code> argument to the actual page count:</p>
<pre><code class="language-bash"># First, get the page count:
pdftract inspect document.json | jq '.page_count'
# Then extract with a valid range:
pdftract extract --pages 1-10 document.pdf
</code></pre>
<p><strong>Severity</strong>: warn (pages clamped to available range)</p>
<hr>
<h2 id="glyph_unmapped-warning"><a class="header" href="#glyph_unmapped-warning">GLYPH_UNMAPPED warning</a></h2>
<p><strong>What it means</strong>: A glyph could not be resolved by any of the four encoding levels.</p>
<p><strong>Cause</strong>: Font encoding corruption, missing font embedding, or non-standard encoding.</p>
<p><strong>Fix</strong>: Output contains the Unicode replacement character (⍰). No direct fix; consider re-saving the PDF through a normalizing tool (e.g., Adobe Acrobat, qpdf).</p>
<p><strong>Severity</strong>: warn (character replaced with U+FFFD; extraction continues)</p>
<hr>
<h2 id="javascript_present-info"><a class="header" href="#javascript_present-info">JAVASCRIPT_PRESENT info</a></h2>
<p><strong>What it means</strong>: PDF contains embedded JavaScript (in <code>/AA</code>, <code>/OpenAction</code>, or <code>/JS</code> entries).</p>
<p><strong>Cause</strong>: PDF includes JavaScript actions (common in forms, interactive documents).</p>
<p><strong>Fix</strong>: None needed for extraction — pdftract NEVER executes embedded JavaScript. JavaScript actions are surfaced in <code>metadata.javascript_actions[]</code> for downstream review.</p>
<p><strong>Severity</strong>: info (JavaScript is not executed)</p>
<hr>
<h2 id="struct_circular_ref--struct_xobject_cycle--gstate_stack_overflow-warning"><a class="header" href="#struct_circular_ref--struct_xobject_cycle--gstate_stack_overflow-warning">STRUCT_CIRCULAR_REF / STRUCT_XOBJECT_CYCLE / GSTATE_STACK_OVERFLOW warning</a></h2>
<p><strong>What it means</strong>: PDF contains circular references or malformed content streams.</p>
<p><strong>Cause</strong>:</p>
<ul>
<li><code>STRUCT_CIRCULAR_REF</code>: Indirect object reference cycle</li>
<li><code>STRUCT_XOBJECT_CYCLE</code>: XObject (image/form) reference cycle</li>
<li><code>GSTATE_STACK_OVERFLOW</code>: Graphics state stack exceeds depth limit</li>
</ul>
<p><strong>Fix</strong>: Usually no action needed — pdftract breaks cycles at the second visit (or depth 20 for XObjects). If output is incomplete, investigate the source PDF for a producer bug.</p>
<p><strong>Severity</strong>: warn (cycle broken; extraction continues)</p>
<hr>
<h2 id="remote_fetch_interrupted-error"><a class="header" href="#remote_fetch_interrupted-error">REMOTE_FETCH_INTERRUPTED error</a></h2>
<p><strong>What it means</strong>: Remote fetch was interrupted (network timeout, connection reset, etc.).</p>
<p><strong>Cause</strong>: Network connectivity issues, server timeout, or premature connection close.</p>
<p><strong>Fix</strong>: Retry the request; check network connectivity:</p>
<pre><code class="language-bash"># Retry with increased timeout:
pdftract extract --timeout-seconds 120 https://example.com/document.pdf
</code></pre>
<p><strong>Severity</strong>: error (request aborted)</p>
<hr>
<h2 id="remote_no_range_support-warning"><a class="header" href="#remote_no_range_support-warning">REMOTE_NO_RANGE_SUPPORT warning</a></h2>
<p><strong>What it means</strong>: Remote server does not support HTTP Range requests.</p>
<p><strong>Cause</strong>: Server lacks <code>Accept-Ranges</code> header or returns 206 Unsupported.</p>
<p><strong>Fix</strong>: None needed — pdftract falls back to whole-file download. For large files, consider hosting on a Range-supporting server.</p>
<p><strong>Severity</strong>: warn (fallback to whole-file download)</p>
<hr>
<h2 id="tagged_pdf_struct_tree_deferred-info"><a class="header" href="#tagged_pdf_struct_tree_deferred-info">TAGGED_PDF_STRUCT_TREE_DEFERRED info</a></h2>
<p><strong>What it means</strong>: Tagged PDF structure tree extraction is deferred in this version.</p>
<p><strong>Cause</strong>: Phase 7.1 (full structure tree extraction) is not yet implemented.</p>
<p><strong>Fix</strong>: None needed — this is a temporary fallback. Structure tree extraction will be added in v1.0.0.</p>
<p><strong>Severity</strong>: info (structure tree not extracted)</p>
<hr>
<h2 id="getting-help"><a class="header" href="#getting-help">Getting Help</a></h2>
<p>If you encounter a diagnostic code not listed here, or the suggested fix doesnt resolve your issue:</p>
<ol>
<li><strong>Check the <a href="./troubleshooting/diagnostics.html">Diagnostics Reference</a></strong> for the full catalog</li>
<li><strong>Search existing issues</strong> on <a href="https://github.com/jedarden/pdftract/issues">GitHub</a></li>
<li><strong>Open a new issue</strong> with:
<ul>
<li>The diagnostic code(s)</li>
<li>A minimal reproducible example (PDF or command)</li>
<li>The <code>--debug</code> output if safe to share</li>
</ul>
</li>
</ol>
<h2 id="related-documentation"><a class="header" href="#related-documentation">Related Documentation</a></h2>
<ul>
<li><a href="./troubleshooting/diagnostics.html">Diagnostics Reference</a> — Full diagnostic code catalog</li>
<li><a href="./faq.html">FAQ</a> — Common questions and answers</li>
<li><a href="./advanced/ocr.html">Advanced: OCR Configuration</a> — OCR troubleshooting details</li>
</ul>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="advanced/provenance.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg></span>
</a>
<a rel="next prefetch" href="troubleshooting/index.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/></svg></span>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="advanced/provenance.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg></span>
</a>
<a rel="next prefetch" href="troubleshooting/index.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/></svg></span>
</a>
</nav>
</div>
<template id=fa-eye><span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z"/></svg></span></template>
<template id=fa-eye-slash><span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5z"/></svg></span></template>
<template id=fa-copy><span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M502.6 70.63l-61.25-61.25C435.4 3.371 427.2 0 418.7 0H255.1c-35.35 0-64 28.66-64 64l.0195 256C192 355.4 220.7 384 256 384h192c35.2 0 64-28.8 64-64V93.25C512 84.77 508.6 76.63 502.6 70.63zM464 320c0 8.836-7.164 16-16 16H255.1c-8.838 0-16-7.164-16-16L239.1 64.13c0-8.836 7.164-16 16-16h128L384 96c0 17.67 14.33 32 32 32h47.1V320zM272 448c0 8.836-7.164 16-16 16H63.1c-8.838 0-16-7.164-16-16L47.98 192.1c0-8.836 7.164-16 16-16H160V128H63.99c-35.35 0-64 28.65-64 64l.0098 256C.002 483.3 28.66 512 64 512h192c35.2 0 64-28.8 64-64v-32h-47.1L272 448z"/></svg></span></template>
<template id=fa-play><span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"/></svg></span></template>
<template id=fa-clock-rotate-left><span class=fa-svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z"/></svg></span></template>
<script>
window.playground_copyable = true;
</script>
<script src="elasticlunr-ef4e11c1.min.js"></script>
<script src="mark-09e88c2c.min.js"></script>
<script src="searcher-c2a407aa.js"></script>
<script src="clipboard-1626706a.min.js"></script>
<script src="highlight-abc7f01d.js"></script>
<script src="book-a0b12cfe.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>