| /plugin/totext/Extractor/ |
| H A D | AbstractOdfExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | ExtractionResult.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | AbstractOoxmlExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | ExtractorInterface.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | PptxExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | ExtractorFactory.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | OdsExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | OdpExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | OdtExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | TextExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | DocxExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | AbstractZipXmlExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | XlsxExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | ImageExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | PdfExtractor.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| /plugin/totext/ |
| H A D | cli.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | helper.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | plugin.info.txt | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| /plugin/totext/Exception/ |
| H A D | ExtractionException.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| /plugin/totext/_test/ |
| H A D | HelperTest.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | PptxExtractorTest.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | TextExtractorTest.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | XlsxExtractorTest.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | OdtExtractorTest.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|
| H A D | ExtractorFactoryTest.php | 0fbee1892eb8b7339ce48e27e48e3fc821a8695f Mon Jun 22 13:32:54 UTC 2026 Andreas Gohr <gohr@cosmocode.de> Return body text and metadata from a single extraction
Every extractor now returns an ExtractionResult (body text plus a normalised metadata map) from one parse of the file, instead of just a text string. Metadata keys are a single canonical vocabulary shared across all formats - Title, Author, Subject, Keywords, Description, Created, Modified, Language, Producer, plus Copyright (image-only) - so consumers never have to special-case the source format.
- ExtractionResult: final readonly value object carrying $text, $metadata and a per-half ?Throwable $textError / $metadataError (with isComplete()). Text and metadata are extracted independently: an extractor throws only at its total-failure gate (container won't unzip, PDF won't parse, file unreadable) and otherwise records a failed half's error while still returning the salvaged half.
- OOXML/ODF metadata: new AbstractOoxmlExtractor and AbstractOdfExtractor intermediaries declare each family's source map once (docProps/core.xml + app.xml; meta.xml); the concrete extractors only switch their extends clause. AbstractZipXmlExtractor gains a generic mapMetadataFromXml() walker.
- PDF: reads the Info dictionary (Title/Author/Subject/Keywords/Created/ Modified/Producer-else-Creator) alongside the body text from the same parse. normalizePdfString() is a temporary shim for UTF-16BE literal strings that prinsfrank <= v3.1.0 returns mojibake-expanded.
- Images: now metadata-only (text is ''); field-map keys renamed to the canonical vocabulary (Caption->Description, Date->Created, Camera->Producer).
- helper: extract() and extractMetadata() added; extractText() keeps its string return and its throw-on-failure contract (rethrows textError), so the docsearch plugin keeps working unchanged.
- cli: prints body text followed by metadata by default; --text/-t and --meta/-m restrict to one. A salvaged-but-partial extraction warns on STDERR and exits 0; nothing usable exits non-zero.
- ExtractionException::wrap() centralises wrapping a caught error as an ExtractionException (passing one through if it already is).
Tests assert the real Tika samples' embedded metadata and the partial-failure paths. The pre-existing PDF body-text Form-XObject failure is unchanged.
|