[
https://issues.apache.org/jira/browse/TIKA-4856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18113441#comment-18113441
]
ASF GitHub Bot commented on TIKA-4856:
--------------------------------------
tballison commented on PR #3146:
URL: https://github.com/apache/tika/pull/3146#issuecomment-5604983907
From my :robot:, let me know what you think.
```
Bug (must fix): RENDER_PAGES_BEFORE_PARSE with maxRenderedPages above the
page count renders nothing.
PDFParser.renderPDF now sends PageRangeRequest(1, N), and
PDFBoxRenderer.renderRange loops 1..N without clamping to getNumberOfPages().
Page nPages+1
throws IndexOutOfBoundsException, which is a RuntimeException so it passes
the per-page IOException catch, the renderer closes its results, and
renderPagesBeforeParse records it as a warning and returns with zero
renderings. Verified with a probe test on the 2-page fixture, maxRenderedPages:
5:
RENDER_PAGES_BEFORE_PARSE: renderings=0
tk:exception:warn=java.lang.IndexOutOfBoundsException: 1-based index out
of bounds: 3
RENDER_PAGES_AT_PAGE_END: renderings=2 (fine; per-page requests never
exceed the doc)
So the thumbnail case (maxRenderedPages: 1) works, but any N ≥ 2 silently
loses every rendering on documents shorter than N. No temp-file leak: the
renderer's catch (Throwable) closes the partial results.
Suggested fix: clamp to in PDFBoxRenderer.processRequest (Math.min(to,
pdDocument.getNumberOfPages())). That matches PopplerRenderer, since pdftoppm
-f 1
-l 5 on the same fixture writes exactly 2 PNGs. Keep from beyond the last
page throwing, because PDFBoxRendererTest.testFailedRenderLeavesNoTempFiles uses
PageRangeRequest(9999, 9999) as its vehicle. Add the failing test: both
strategies, limit above the page count, assert nPages renderings. The PR's tests
only cover maxRenderedPages: 1 on a 2-page doc, which can't reach this.
Hygiene
-
tika-parsers-standard-integration-tests/.../config-examples/pdf-parser-full.json
is the "every knob" example; add "maxRenderedPages": -1 next to
maxPages with a one-line comment.
- The PR description's "used to require maxPages: 1" is only true for
AT_PAGE_END; BEFORE_PARSE never honored maxPages at all. Wording only.
```
> /unpack/thumbnail: return the document thumbnail with its metadata
> ------------------------------------------------------------------
>
> Key: TIKA-4856
> URL: https://issues.apache.org/jira/browse/TIKA-4856
> Project: Tika
> Issue Type: New Feature
> Reporter: Dominik Schmidt
> Priority: Major
>
> With TIKA-4850 through TIKA-4855 every container format that carries a
> thumbnail emits it as a THUMBNAIL embedded document, the PDF parser renders
> pages as RENDERING documents, and the EMF/WMF renderer turns the vector
> thumbnails of Office documents into raster ones. Getting "the thumbnail of
> this file" out of that still takes format knowledge on the client: the
> THUMBNAIL of a Word or Excel file is an EMF/WMF whose usable form is the
> RENDERING underneath it, a PDF has no THUMBNAIL but a page RENDERING, the
> THUMBNAIL of a DOCX inside a ZIP is not the ZIP's, and with rendering enabled
> the picture of an embedded OLE object is a RENDERING too. Plus the request
> config that switches the renderers on.
> Proposal: POST /unpack/thumbnail next to /unpack and /unpack/all, multipart
> like them. It runs the usual forked parse in unpack mode with a fixed parse
> context (PDF page 1 rendered, EMF/WMF rendered) and picks, in this order: the
> raster THUMBNAIL at depth 1; the rendering of that thumbnail; the depth-1
> RENDERING of PDF page 1. The endpoint extracts what the document carries; it
> does not resize, convert or generate previews.
> The response is JSON: the /rmeta metadata object of the selected embedded
> document, and the image as base64. Thumbnails are small, so the encoding
> overhead does not matter, and the caller gets type, dimensions, origin
> (stored thumbnail or rendering, tk:rendering:rendered-by) and path in one
> round trip without unpacking a zip. 204 when the document has no thumbnail.
> {
> "metadata": {
> "Content-Type": "image/png",
> "Content-Length": "8459",
> "tiff:ImageWidth": "800",
> "tiff:ImageLength": "1131",
> "tk:embedded-resource-type": "RENDERING",
> "tk:embedded-resource-path": "/thumbnail.emf/thumbnail.png",
> "tk:embedded-depth": "2",
> "tk:rendering:rendered-by": "poi-metafile-renderer",
> "tk:resource-name": "thumbnail.png"
> },
> "image": "iVBORw0KGgoAAAANSUhEUgAA..."
> }
> To keep the selection rule short, the metafile renderer could give the
> rendering of a THUMBNAIL the THUMBNAIL type as well (its
> tk:rendering:rendered-by tells it apart), so a raster thumbnail is a
> THUMBNAIL regardless of whether the document stored it as PNG or as EMF.
> What do you think?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)