Dominik Schmidt created TIKA-4855:
-------------------------------------
Summary: Render EMF/WMF images to raster previews and emit the
OLE2 SummaryInformation thumbnail
Key: TIKA-4855
URL: https://issues.apache.org/jira/browse/TIKA-4855
Project: Tika
Issue Type: Improvement
Reporter: Dominik Schmidt
Office documents carry their preview image as a vector metafile: the OOXML
docProps/thumbnail.emf of Word (an EMF wrapping a WMF) and thumbnail.wmf of
Excel, and the SummaryInformation thumbnail (PIDSI_THUMBNAIL, CF_METAFILEPICT,
a WMF) of the OLE2 formats, which PowerPoint writes almost always and
Word/Excel on request. Neither is usable as a preview outside Windows, and
outside the JVM there is no maintained EMF/WMF rasterizer. POI's HEMF/HWMF can
draw both and Tika already bundles them.
Proposal, following the PDF parser's rendering design:
1. A Renderer for image/emf and image/wmf (POI HemfPicture/HwmfPicture drawn
onto a white canvas, a PNG of a configurable width, the height following the
aspect ratio). The WMF thumbnails Word writes consist of a setWindowExt and a
dibStretchBlt record only, for which POI cannot compute bounds; for those the
renderer emits the record's bitmap.
2. EMFParser and WMFParser implement RenderingParser and, with "emf-parser" /
"wmf-parser": {"renderImage": true, "renderWidth": 800} (off by default), emit
the rendering as a RENDERING embedded document named after the image, the way
the PDF parser emits page renderings. An injected renderer is used when it
supports the type, the POI one otherwise.
3. OfficeParser emits the SummaryInformation thumbnail of the OLE2 formats as a
THUMBNAIL embedded document (image/wmf, named thumbnail.wmf), consistent with
the docProps thumbnail of the OOXML parsers. Existing tests that count the
embedded documents of .ppt fixtures gain one.
With that, a client that asks for THUMBNAIL and RENDERING embedded documents
gets a raster preview for docx, xlsx, doc, xls and ppt files that carry a
thumbnail, with the same request it uses for every other format. Verified
against tika-server with /unpack: each of these yields the thumbnail at depth 1
and its PNG rendering at depth 2.
Note for clients: with rendering enabled every embedded metafile is rendered,
e.g. the picture of an OLE object, so the preview is the RENDERING under the
THUMBNAIL, not the first RENDERING.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)