Skip to content

v2.6.2

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:38
· 88 commits to main since this release
2d31af8

PDF Craft v2.6.2

PDF Craft 2.6.2 checks source PDF compatibility before expensive processing and
lets EPUB generation use Korean and other content languages without rejecting
them because fixed navigation labels are unavailable.

PDF input preflight

  • All source-PDF tasks now perform mandatory pypdf and Poppler compatibility
    checks before OCR, LLM requests, content/metadata callbacks, or final output.
    Checks traverse pages and resources, decode content streams, render every page
    at low DPI, compare geometry, and trial-write and reopen a temporary document.
  • The new public PDFPreflightError identifies the source, backend, stage, page
    and reason. It cannot be ignored by ErrorPolicy, including permissive
    callbacks. Source files are never repaired or replaced automatically.
  • Read-only PDF operations use Poppler; PDF object editing remains with pypdf.
    Explicit publication labels additionally require the Poppler GLib library.
    See the updated installation and error-handling guides.
  • Explicit DefaultPDFHandler(poppler_path=...) directories now reach preflight
    as well as actual reading. A directory does not need to appear on PATH;
    successful checks for one configuration do not validate a different one.
  • Require pypdf 6.21.2 or later in the 6.x series. Upgrade system Poppler
    separately when updating an existing deployment; Python package updates do not
    update native tools. See #530.
  • Preflight is backend compatibility evidence, not a complete PDF conformance
    certificate or a guarantee that later high-DPI rendering or composition succeeds.

The initial preflight implementation was merged in
#529.

EPUB fixed labels

  • Rename the lan keyword to label_language in render_epub(),
    convert_pdf_to_epub() and EpubRenderer.render(). Update callers to the new
    keyword; the former keyword is no longer accepted.
  • The rename applies to both synchronous and asynchronous facades. Calls that
    omitted lan need no keyword change, but use label_language="zh" to retain
    Chinese labels instead of the new English default. Translation parameters
    such as target_language="ko" are unchanged. Before/after examples are in the
    English API reference and
    Chinese API reference.
  • This parameter chooses only fixed labels such as Cover, Table of Contents,
    Preface and Unnamed. Exact zh and en select their catalogs; every other
    string falls back to English. The default is now English.
  • Fixed labels are no longer inferred from source or translation language.
    Korean, French, regional codes and human-readable language names no longer
    trigger unsupported EPUB language during rendering. Label fallback does not
    modify body text, translation targets, PCEX language metadata or callback data.
  • This does not change OCR/LLM model capabilities. The pinned EPUB generator's
    separate hard-coded OPF/XHTML language markers remain a known limitation;
    label_language is not a content-language metadata setting.

PCEX v4 is unchanged. No QPDF or pikepdf dependency is added.

The label and Poppler-configuration changes were merged in
#531.

Full Changelog: v2.6.1...v2.6.2