From 493aa8c30d6f0e2f86f2271c72758a212a9abceb Mon Sep 17 00:00:00 2001 From: Sergey Vladimirov Date: Thu, 28 Jul 2011 15:08:06 +0000 Subject: [PATCH] add simpliest "escher" pictures support in Word-to-HTML and Word-to-FO converters git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1151888 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/hwpf/HWPFDocument.java | 4 +- .../hwpf/converter/AbstractWordConverter.java | 20 +- .../hwpf/converter/HtmlDocumentFacade.java | 7 + .../poi/hwpf/converter/PicturesManager.java | 7 +- .../poi/hwpf/converter/WordToFoConverter.java | 16 +- .../hwpf/converter/WordToHtmlConverter.java | 53 +- .../poi/hwpf/model/EscherRecordHolder.java | 80 +++ .../poi/hwpf/usermodel/OfficeDrawing.java | 60 +- .../poi/hwpf/usermodel/OfficeDrawings.java | 21 + .../hwpf/usermodel/OfficeDrawingsImpl.java | 122 +++- .../apache/poi/hwpf/usermodel/Picture.java | 645 ++++++++++-------- .../poi/hwpf/usermodel/PictureType.java | 35 +- .../converter/TestWordToHtmlConverter.java | 75 +- test-data/document/pictures_escher.doc | Bin 0 -> 120320 bytes 14 files changed, 767 insertions(+), 378 deletions(-) create mode 100644 test-data/document/pictures_escher.doc diff --git a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java index b2d466045..fa8a47649 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java @@ -310,8 +310,8 @@ public final class HWPFDocument extends HWPFDocumentCore _officeArts = new ShapesTable(_tableStream, _fib); // And escher pictures - _officeDrawingsHeaders = new OfficeDrawingsImpl( _fspaHeaders, _escherRecordHolder ); - _officeDrawingsMain = new OfficeDrawingsImpl( _fspaMain , _escherRecordHolder); + _officeDrawingsHeaders = new OfficeDrawingsImpl( _fspaHeaders, _escherRecordHolder, _mainStream ); + _officeDrawingsMain = new OfficeDrawingsImpl( _fspaMain , _escherRecordHolder, _mainStream); _st = new SectionTable(_mainStream, _tableStream, _fib.getFcPlcfsed(), _fib.getLcbPlcfsed(), fcMin, _tpt, _cpSplit); _ss = new StyleSheet(_tableStream, _fib.getFcStshf()); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java index b65e8cf71..afb5a5f70 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java @@ -41,6 +41,7 @@ import org.apache.poi.hwpf.usermodel.Notes; import org.apache.poi.hwpf.usermodel.OfficeDrawing; import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Picture; +import org.apache.poi.hwpf.usermodel.PictureType; import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.hwpf.usermodel.Section; import org.apache.poi.hwpf.usermodel.Table; @@ -578,7 +579,10 @@ public abstract class AbstractWordConverter protected void processDrawnObject( HWPFDocument doc, CharacterRun characterRun, Element block ) { - // main? + if ( getPicturesManager() == null ) + return; + + // TODO: support headers OfficeDrawing officeDrawing = doc.getOfficeDrawingsMain() .getOfficeDrawingAt( characterRun.getStartOffset() ); if ( officeDrawing == null ) @@ -588,10 +592,22 @@ public abstract class AbstractWordConverter return; } - // TODO: do something :) + byte[] pictureData = officeDrawing.getPictureData(); + if ( pictureData == null ) + // usual shape? + return; + final PictureType type = PictureType.findMatchingType( pictureData ); + String path = getPicturesManager().savePicture( pictureData, type, + "s" + characterRun.getStartOffset() + "." + type ); + + processDrawnObject( doc, characterRun, officeDrawing, path, block ); } + protected abstract void processDrawnObject( HWPFDocument doc, + CharacterRun characterRun, OfficeDrawing officeDrawing, + String path, Element block ); + protected abstract void processEndnoteAutonumbered( HWPFDocument doc, int noteIndex, Element block, Range endnoteTextRange ); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java index a6e38073c..a02b2942c 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java @@ -113,6 +113,13 @@ public class HtmlDocumentFacade return basicLink; } + public Element createImage( String src ) + { + Element result = document.createElement( "img" ); + result.setAttribute( "src", src ); + return result; + } + public Element createLineBreak() { return document.createElement( "br" ); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/PicturesManager.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/PicturesManager.java index ac408139c..dbbca5700 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/PicturesManager.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/PicturesManager.java @@ -16,7 +16,6 @@ ==================================================================== */ package org.apache.poi.hwpf.converter; -import org.apache.poi.hwpf.usermodel.Picture; import org.apache.poi.hwpf.usermodel.PictureType; /** @@ -35,11 +34,11 @@ public interface PicturesManager * {@link PictureType#WMF}. FO (Apache FOP) supports at least PNG and SVG * types. * - * @param picture - * Word picture + * @param content + * picture content * @return path to file that can be used as reference in HTML (img's src) of * XLS FO (fo:external-graphic's src) or null if image were * not saved and should not be referenced from result HTML / FO. */ - String savePicture( Picture picture ); + String savePicture( byte[] content, PictureType pictureType, String suggestedName ); } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoConverter.java index 8121e2cd9..653b44cec 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoConverter.java @@ -37,6 +37,7 @@ import org.apache.poi.hwpf.HWPFDocumentCore; import org.apache.poi.hwpf.converter.FontReplacer.Triplet; import org.apache.poi.hwpf.usermodel.Bookmark; import org.apache.poi.hwpf.usermodel.CharacterRun; +import org.apache.poi.hwpf.usermodel.OfficeDrawing; import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Picture; import org.apache.poi.hwpf.usermodel.Range; @@ -262,6 +263,16 @@ public class WordToFoConverter extends AbstractWordConverter foDocumentFacade.setDescription( summaryInformation.getComments() ); } + @Override + protected void processDrawnObject( HWPFDocument doc, + CharacterRun characterRun, OfficeDrawing officeDrawing, + String path, Element block ) + { + final Element externalGraphic = foDocumentFacade + .createExternalGraphic( path ); + block.appendChild( externalGraphic ); + } + @Override protected void processEndnoteAutonumbered( HWPFDocument doc, int noteIndex, Element block, Range endnoteTextRange ) @@ -364,7 +375,10 @@ public class WordToFoConverter extends AbstractWordConverter PicturesManager fileManager = getPicturesManager(); if ( fileManager != null ) { - String url = fileManager.savePicture( picture ); + String url = fileManager + .savePicture( picture.getContent(), + picture.suggestPictureType(), + picture.suggestFullFileName() ); if ( WordToFoUtils.isNotEmpty( url ) ) { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java index f17a76c13..beba077c7 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java @@ -34,6 +34,7 @@ import org.apache.poi.hwpf.HWPFDocumentCore; import org.apache.poi.hwpf.converter.FontReplacer.Triplet; import org.apache.poi.hwpf.usermodel.Bookmark; import org.apache.poi.hwpf.usermodel.CharacterRun; +import org.apache.poi.hwpf.usermodel.OfficeDrawing; import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Picture; import org.apache.poi.hwpf.usermodel.Range; @@ -61,6 +62,22 @@ import static org.apache.poi.hwpf.converter.AbstractWordUtils.TWIPS_PER_INCH; public class WordToHtmlConverter extends AbstractWordConverter { + /** + * Holds properties values, applied to current p element. Those + * properties shall not be doubled in children span elements. + */ + private static class BlockProperies + { + final String pFontName; + final int pFontSize; + + public BlockProperies( String pFontName, int pFontSize ) + { + this.pFontName = pFontName; + this.pFontSize = pFontSize; + } + } + private static final POILogger logger = POILogFactory .getLogger( WordToHtmlConverter.class ); @@ -253,6 +270,15 @@ public class WordToHtmlConverter extends AbstractWordConverter .addDescription( summaryInformation.getComments() ); } + @Override + protected void processDrawnObject( HWPFDocument doc, + CharacterRun characterRun, OfficeDrawing officeDrawing, + String path, Element block ) + { + Element img = htmlDocumentFacade.createImage( path ); + block.appendChild( img ); + } + @Override protected void processEndnoteAutonumbered( HWPFDocument doc, int noteIndex, Element block, Range endnoteTextRange ) @@ -302,7 +328,10 @@ public class WordToHtmlConverter extends AbstractWordConverter PicturesManager fileManager = getPicturesManager(); if ( fileManager != null ) { - String url = fileManager.savePicture( picture ); + String url = fileManager + .savePicture( picture.getContent(), + picture.suggestPictureType(), + picture.suggestFullFileName() ); if ( WordToHtmlUtils.isNotEmpty( url ) ) { @@ -388,8 +417,7 @@ public class WordToHtmlConverter extends AbstractWordConverter + "in;overflow:hidden;" ) ); root.appendChild( inner ); - Element image = htmlDocumentFacade.document.createElement( "img" ); - image.setAttribute( "src", imageSourcePath ); + Element image = htmlDocumentFacade.createImage( imageSourcePath ); image.setAttribute( "class", htmlDocumentFacade .getOrCreateCssClass( image.getTagName(), "i", "position:absolute;left:-" + cropLeft + ";top:-" @@ -401,8 +429,7 @@ public class WordToHtmlConverter extends AbstractWordConverter } else { - root = htmlDocumentFacade.document.createElement( "img" ); - root.setAttribute( "src", imageSourcePath ); + root = htmlDocumentFacade.createImage( imageSourcePath ); root.setAttribute( "style", "width:" + imageWidth + "in;height:" + imageHeight + "in;vertical-align:text-bottom;" ); } @@ -691,20 +718,4 @@ public class WordToHtmlConverter extends AbstractWordConverter } } - /** - * Holds properties values, applied to current p element. Those - * properties shall not be doubled in children span elements. - */ - private static class BlockProperies - { - final String pFontName; - final int pFontSize; - - public BlockProperies( String pFontName, int pFontSize ) - { - this.pFontName = pFontName; - this.pFontSize = pFontSize; - } - } - } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/EscherRecordHolder.java b/src/scratchpad/src/org/apache/poi/hwpf/model/EscherRecordHolder.java index 310dbc52c..329707832 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/EscherRecordHolder.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/EscherRecordHolder.java @@ -20,6 +20,7 @@ package org.apache.poi.hwpf.model; import java.util.ArrayList; import java.util.Iterator; import java.util.List; + import org.apache.poi.ddf.DefaultEscherRecordFactory; import org.apache.poi.ddf.EscherContainerRecord; import org.apache.poi.ddf.EscherRecord; @@ -119,4 +120,83 @@ public final class EscherRecordHolder { // Not found in this lot return null; } + + public List getDgContainers() + { + List dgContainers = new ArrayList( + 1 ); + for ( EscherRecord escherRecord : getEscherRecords() ) + { + if ( escherRecord.getRecordId() == (short) 0xF002 ) + { + dgContainers.add( (EscherContainerRecord) escherRecord ); + } + } + return dgContainers; + } + + public List getDggContainers() + { + List dggContainers = new ArrayList( + 1 ); + for ( EscherRecord escherRecord : getEscherRecords() ) + { + if ( escherRecord.getRecordId() == (short) 0xF000 ) + { + dggContainers.add( (EscherContainerRecord) escherRecord ); + } + } + return dggContainers; + } + + public List getBStoreContainers() + { + List bStoreContainers = new ArrayList( + 1 ); + for ( EscherContainerRecord dggContainer : getDggContainers() ) + { + for ( EscherRecord escherRecord : dggContainer.getChildRecords() ) + { + if ( escherRecord.getRecordId() == (short) 0xF001 ) + { + bStoreContainers.add( (EscherContainerRecord) escherRecord ); + } + } + } + return bStoreContainers; + } + + public List getSpgrContainers() + { + List spgrContainers = new ArrayList( + 1 ); + for ( EscherContainerRecord dgContainer : getDgContainers() ) + { + for ( EscherRecord escherRecord : dgContainer.getChildRecords() ) + { + if ( escherRecord.getRecordId() == (short) 0xF003 ) + { + spgrContainers.add( (EscherContainerRecord) escherRecord ); + } + } + } + return spgrContainers; + } + + public List getSpContainers() + { + List spContainers = new ArrayList( + 1 ); + for ( EscherContainerRecord spgrContainer : getSpgrContainers() ) + { + for ( EscherRecord escherRecord : spgrContainer.getChildRecords() ) + { + if ( escherRecord.getRecordId() == (short) 0xF004 ) + { + spContainers.add( (EscherContainerRecord) escherRecord ); + } + } + } + return spContainers; + } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawing.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawing.java index 20e3cc522..002fa30b8 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawing.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawing.java @@ -1,26 +1,32 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.hwpf.usermodel; +/** + * User-friendly interface to office drawing objects + * + * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com) + */ public interface OfficeDrawing { /** - * Shape Identifier + * Returns picture data if this shape has (single?) associated picture data */ - int getShapeId(); - - /** - * Left of rectangle enclosing shape relative to the origin of the shape - */ - int getRectangleLeft(); - - /** - * Top of rectangle enclosing shape relative to the origin of the shape - */ - int getRectangleTop(); - - /** - * Right of rectangle enclosing shape relative to the origin of the shape - */ - int getRectangleRight(); + byte[] getPictureData(); /** * Bottom of the rectangle enclosing shape relative to the origin of the @@ -28,4 +34,24 @@ public interface OfficeDrawing */ int getRectangleBottom(); + /** + * Left of rectangle enclosing shape relative to the origin of the shape + */ + int getRectangleLeft(); + + /** + * Right of rectangle enclosing shape relative to the origin of the shape + */ + int getRectangleRight(); + + /** + * Top of rectangle enclosing shape relative to the origin of the shape + */ + int getRectangleTop(); + + /** + * Shape Identifier + */ + int getShapeId(); + } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawings.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawings.java index 672d5e193..58661aa8d 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawings.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawings.java @@ -1,7 +1,28 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.hwpf.usermodel; import java.util.Collection; +/** + * User-friendly interface to access document part's office drawings + * + * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com) + */ public interface OfficeDrawings { OfficeDrawing getOfficeDrawingAt( int characterPosition ); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawingsImpl.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawingsImpl.java index 933821c14..370cacd70 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawingsImpl.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/OfficeDrawingsImpl.java @@ -1,3 +1,19 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.hwpf.usermodel; import java.util.ArrayList; @@ -5,6 +21,16 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import org.apache.poi.ddf.DefaultEscherRecordFactory; +import org.apache.poi.ddf.EscherBSERecord; +import org.apache.poi.ddf.EscherBlipRecord; +import org.apache.poi.ddf.EscherContainerRecord; +import org.apache.poi.ddf.EscherOptRecord; +import org.apache.poi.ddf.EscherProperties; +import org.apache.poi.ddf.EscherRecord; +import org.apache.poi.ddf.EscherRecordFactory; +import org.apache.poi.ddf.EscherSimpleProperty; +import org.apache.poi.ddf.EscherSpRecord; import org.apache.poi.hwpf.model.EscherRecordHolder; import org.apache.poi.hwpf.model.FSPA; import org.apache.poi.hwpf.model.FSPATable; @@ -13,12 +39,82 @@ public class OfficeDrawingsImpl implements OfficeDrawings { private final EscherRecordHolder _escherRecordHolder; private final FSPATable _fspaTable; + private final byte[] _mainStream; public OfficeDrawingsImpl( FSPATable fspaTable, - EscherRecordHolder escherRecordHolder ) + EscherRecordHolder escherRecordHolder, byte[] mainStream ) { this._fspaTable = fspaTable; this._escherRecordHolder = escherRecordHolder; + this._mainStream = mainStream; + } + + private EscherContainerRecord getEscherShapeRecordContainer( + final int shapeId ) + { + for ( EscherContainerRecord spContainer : _escherRecordHolder + .getSpContainers() ) + { + EscherSpRecord escherSpRecord = spContainer + .getChildById( (short) 0xF00A ); + if ( escherSpRecord != null + && escherSpRecord.getShapeId() == shapeId ) + return spContainer; + } + + return null; + } + + private EscherBlipRecord getBitmapRecord( int bitmapIndex ) + { + List bContainers = _escherRecordHolder + .getBStoreContainers(); + if ( bContainers == null || bContainers.size() != 1 ) + return null; + + EscherContainerRecord bContainer = bContainers.get( 0 ); + final List bitmapRecords = bContainer.getChildRecords(); + + if ( bitmapRecords.size() < bitmapIndex ) + return null; + + EscherRecord imageRecord = bitmapRecords.get( bitmapIndex - 1 ); + + if ( imageRecord instanceof EscherBlipRecord ) + { + return (EscherBlipRecord) imageRecord; + } + + if ( imageRecord instanceof EscherBSERecord ) + { + EscherBSERecord bseRecord = (EscherBSERecord) imageRecord; + + EscherBlipRecord blip = bseRecord.getBlipRecord(); + if ( blip != null ) + { + return blip; + } + + if ( bseRecord.getOffset() > 0 ) + { + /* + * Blip stored in delay stream, which in a word doc, is the main + * stream + */ + EscherRecordFactory recordFactory = new DefaultEscherRecordFactory(); + EscherRecord record = recordFactory.createRecord( _mainStream, + bseRecord.getOffset() ); + + if ( record instanceof EscherBlipRecord ) + { + record.fillFields( _mainStream, bseRecord.getOffset(), + recordFactory ); + return (EscherBlipRecord) record; + } + } + } + + return null; } private OfficeDrawing getOfficeDrawing( final FSPA fspa ) @@ -50,6 +146,30 @@ public class OfficeDrawingsImpl implements OfficeDrawings return fspa.getSpid(); } + public byte[] getPictureData() + { + EscherContainerRecord shapeDescription = getEscherShapeRecordContainer( getShapeId() ); + if ( shapeDescription == null ) + return null; + + EscherOptRecord escherOptRecord = shapeDescription + .getChildById( (short) 0xF00B ); + if ( escherOptRecord == null ) + return null; + + EscherSimpleProperty escherProperty = escherOptRecord + .lookup( EscherProperties.BLIP__BLIPTODISPLAY ); + if ( escherProperty == null ) + return null; + + int bitmapIndex = escherProperty.getPropertyValue(); + EscherBlipRecord escherBlipRecord = getBitmapRecord( bitmapIndex ); + if ( escherBlipRecord == null ) + return null; + + return escherBlipRecord.getPicturedata(); + } + @Override public String toString() { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Picture.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Picture.java index b42ad0063..2781b7651 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Picture.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Picture.java @@ -30,19 +30,21 @@ import org.apache.poi.util.POILogger; /** * Represents embedded picture extracted from Word Document + * * @author Dmitry Romanov */ public final class Picture extends PictureDescriptor { - private static final POILogger log = POILogFactory.getLogger(Picture.class); + private static final POILogger log = POILogFactory + .getLogger( Picture.class ); -// public static final int FILENAME_OFFSET = 0x7C; -// public static final int FILENAME_SIZE_OFFSET = 0x6C; - static final int PICF_OFFSET = 0x0; - static final int PICT_HEADER_OFFSET = 0x4; - static final int MFPMM_OFFSET = 0x6; - static final int PICF_SHAPE_OFFSET = 0xE; - static final int UNKNOWN_HEADER_SIZE = 0x49; + // public static final int FILENAME_OFFSET = 0x7C; + // public static final int FILENAME_SIZE_OFFSET = 0x6C; + static final int PICF_OFFSET = 0x0; + static final int PICT_HEADER_OFFSET = 0x4; + static final int MFPMM_OFFSET = 0x6; + static final int PICF_SHAPE_OFFSET = 0xE; + static final int UNKNOWN_HEADER_SIZE = 0x49; @Deprecated public static final byte[] GIF = PictureType.GIF.getSignatures()[0]; @@ -66,52 +68,57 @@ public final class Picture extends PictureDescriptor public static final byte[] WMF2 = PictureType.WMF.getSignatures()[1]; // TODO: DIB, PICT - public static final byte[] IHDR = new byte[]{'I', 'H', 'D', 'R'}; + public static final byte[] IHDR = new byte[] { 'I', 'H', 'D', 'R' }; - public static final byte[] COMPRESSED1 = { (byte)0xFE, 0x78, (byte)0xDA }; - public static final byte[] COMPRESSED2 = { (byte)0xFE, 0x78, (byte)0x9C }; + public static final byte[] COMPRESSED1 = { (byte) 0xFE, 0x78, (byte) 0xDA }; + public static final byte[] COMPRESSED2 = { (byte) 0xFE, 0x78, (byte) 0x9C }; - private int dataBlockStartOfsset; - private int pictureBytesStartOffset; - private int dataBlockSize; - private int size; -// private String fileName; - private byte[] rawContent; - private byte[] content; - private byte[] _dataStream; - private int height = -1; - private int width = -1; + private int dataBlockStartOfsset; + private int pictureBytesStartOffset; + private int dataBlockSize; + private int size; + // private String fileName; + private byte[] rawContent; + private byte[] content; + private byte[] _dataStream; + private int height = -1; + private int width = -1; - public Picture(int dataBlockStartOfsset, byte[] _dataStream, boolean fillBytes) - { - super (_dataStream, dataBlockStartOfsset); - - this._dataStream = _dataStream; - this.dataBlockStartOfsset = dataBlockStartOfsset; - this.dataBlockSize = LittleEndian.getInt(_dataStream, dataBlockStartOfsset); - this.pictureBytesStartOffset = getPictureBytesStartOffset(dataBlockStartOfsset, _dataStream, dataBlockSize); - this.size = dataBlockSize - (pictureBytesStartOffset - dataBlockStartOfsset); - - if (size<0) { - - } - - if (fillBytes) + public Picture( int dataBlockStartOfsset, byte[] _dataStream, + boolean fillBytes ) { - fillImageContent(); - } - } + super( _dataStream, dataBlockStartOfsset ); - public Picture(byte[] _dataStream) - { + this._dataStream = _dataStream; + this.dataBlockStartOfsset = dataBlockStartOfsset; + this.dataBlockSize = LittleEndian.getInt( _dataStream, + dataBlockStartOfsset ); + this.pictureBytesStartOffset = getPictureBytesStartOffset( + dataBlockStartOfsset, _dataStream, dataBlockSize ); + this.size = dataBlockSize + - ( pictureBytesStartOffset - dataBlockStartOfsset ); + + if ( size < 0 ) + { + + } + + if ( fillBytes ) + { + fillImageContent(); + } + } + + public Picture( byte[] _dataStream ) + { super(); - this._dataStream = _dataStream; - this.dataBlockStartOfsset = 0; - this.dataBlockSize = _dataStream.length; - this.pictureBytesStartOffset = 0; - this.size = _dataStream.length; - } + this._dataStream = _dataStream; + this.dataBlockStartOfsset = 0; + this.dataBlockSize = _dataStream.length; + this.pictureBytesStartOffset = 0; + this.size = _dataStream.length; + } private void fillWidthHeight() { @@ -131,42 +138,50 @@ public final class Picture extends PictureDescriptor } } - /** - * Tries to suggest a filename: hex representation of picture structure offset in "Data" stream plus extension that - * is tried to determine from first byte of picture's content. - * - * @return suggested file name - */ - public String suggestFullFileName() - { - String fileExt = suggestFileExtension(); - return Integer.toHexString(dataBlockStartOfsset) + (fileExt.length()>0 ? "."+fileExt : ""); - } - - /** - * Writes Picture's content bytes to specified OutputStream. - * Is useful when there is need to write picture bytes directly to stream, omitting its representation in - * memory as distinct byte array. - * - * @param out a stream to write to - * @throws IOException if some exception is occured while writing to specified out - */ - public void writeImageContent(OutputStream out) throws IOException - { - if (rawContent!=null && rawContent.length>0) { - out.write(rawContent, 0, size); - } else { - out.write(_dataStream, pictureBytesStartOffset, size); + /** + * Tries to suggest a filename: hex representation of picture structure + * offset in "Data" stream plus extension that is tried to determine from + * first byte of picture's content. + * + * @return suggested file name + */ + public String suggestFullFileName() + { + String fileExt = suggestFileExtension(); + return Integer.toHexString( dataBlockStartOfsset ) + + ( fileExt.length() > 0 ? "." + fileExt : "" ); } - } - /** - * @return The offset of this picture in the picture bytes, used - * when matching up with {@link CharacterRun#getPicOffset()} - */ - public int getStartOffset() { - return dataBlockStartOfsset; - } + /** + * Writes Picture's content bytes to specified OutputStream. Is useful when + * there is need to write picture bytes directly to stream, omitting its + * representation in memory as distinct byte array. + * + * @param out + * a stream to write to + * @throws IOException + * if some exception is occured while writing to specified out + */ + public void writeImageContent( OutputStream out ) throws IOException + { + if ( rawContent != null && rawContent.length > 0 ) + { + out.write( rawContent, 0, size ); + } + else + { + out.write( _dataStream, pictureBytesStartOffset, size ); + } + } + + /** + * @return The offset of this picture in the picture bytes, used when + * matching up with {@link CharacterRun#getPicOffset()} + */ + public int getStartOffset() + { + return dataBlockStartOfsset; + } /** * @return picture's content as byte array @@ -189,14 +204,14 @@ public final class Picture extends PictureDescriptor return rawContent; } - /** - * - * @return size in bytes of the picture - */ - public int getSize() - { - return size; - } + /** + * + * @return size in bytes of the picture + */ + public int getSize() + { + return size; + } /** * @return the horizontal aspect ratio for picture provided by user @@ -236,48 +251,56 @@ public final class Picture extends PictureDescriptor } /** - * Gets the initial width of the picture, in twips, prior to cropping or scaling. - * + * Gets the initial width of the picture, in twips, prior to cropping or + * scaling. + * * @return the initial width of the picture in twips */ - public int getDxaGoal() { + public int getDxaGoal() + { return dxaGoal; } /** - * Gets the initial height of the picture, in twips, prior to cropping or scaling. - * + * Gets the initial height of the picture, in twips, prior to cropping or + * scaling. + * * @return the initial width of the picture in twips */ - public int getDyaGoal() { + public int getDyaGoal() + { return dyaGoal; } /** * @return The amount the picture has been cropped on the left in twips */ - public int getDxaCropLeft() { + public int getDxaCropLeft() + { return dxaCropLeft; } /** * @return The amount the picture has been cropped on the top in twips */ - public int getDyaCropTop() { + public int getDyaCropTop() + { return dyaCropTop; } /** * @return The amount the picture has been cropped on the right in twips */ - public int getDxaCropRight() { + public int getDxaCropRight() + { return dxaCropRight; } /** * @return The amount the picture has been cropped on the bottom in twips */ - public int getDyaCropBottom() { + public int getDyaCropBottom() + { return dyaCropBottom; } @@ -304,225 +327,255 @@ public final class Picture extends PictureDescriptor public PictureType suggestPictureType() { - final byte[] imageContent = getContent(); - for ( PictureType pictureType : PictureType.values() ) - for ( byte[] signature : pictureType.getSignatures() ) - if ( matchSignature( imageContent, signature, 0 ) ) - return pictureType; - - // TODO: DIB, PICT - return PictureType.UNKNOWN; + return PictureType.findMatchingType( getContent() ); } - private static boolean matchSignature(byte[] dataStream, byte[] signature, int pictureBytesOffset) - { - boolean matched = pictureBytesOffset < dataStream.length; - for (int i = 0; (i+pictureBytesOffset) < dataStream.length && i < signature.length; i++) + // public String getFileName() + // { + // return fileName; + // } + + // private static String extractFileName(int blockStartIndex, byte[] + // dataStream) { + // int fileNameStartOffset = blockStartIndex + 0x7C; + // int fileNameSizeOffset = blockStartIndex + FILENAME_SIZE_OFFSET; + // int fileNameSize = LittleEndian.getShort(dataStream, fileNameSizeOffset); + // + // int fileNameIndex = fileNameStartOffset; + // char[] fileNameChars = new char[(fileNameSize-1)/2]; + // int charIndex = 0; + // while(charIndex 0 ) return; - this.rawContent = new byte[size]; - System.arraycopy(_dataStream, pictureBytesStartOffset, rawContent, 0, size); - } + this.rawContent = new byte[size]; + System.arraycopy( _dataStream, pictureBytesStartOffset, rawContent, 0, + size ); + } - private void fillImageContent() - { + private void fillImageContent() + { if ( content != null && content.length > 0 ) return; - byte[] rawContent = getRawContent(); + byte[] rawContent = getRawContent(); - // HACK: Detect compressed images. In reality there should be some way to determine - // this from the first 32 bytes, but I can't see any similarity between all the - // samples I have obtained, nor any similarity in the data block contents. - if (matchSignature(rawContent, COMPRESSED1, 32) || matchSignature(rawContent, COMPRESSED2, 32)) - { - try - { - InflaterInputStream in = new InflaterInputStream( - new ByteArrayInputStream(rawContent, 33, rawContent.length - 33)); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] buf = new byte[4096]; - int readBytes; - while ((readBytes = in.read(buf)) > 0) + // HACK: Detect compressed images. In reality there should be some way + // to determine + // this from the first 32 bytes, but I can't see any similarity between + // all the + // samples I have obtained, nor any similarity in the data block + // contents. + if ( matchSignature( rawContent, COMPRESSED1, 32 ) + || matchSignature( rawContent, COMPRESSED2, 32 ) ) { - out.write(buf, 0, readBytes); + try + { + InflaterInputStream in = new InflaterInputStream( + new ByteArrayInputStream( rawContent, 33, + rawContent.length - 33 ) ); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] buf = new byte[4096]; + int readBytes; + while ( ( readBytes = in.read( buf ) ) > 0 ) + { + out.write( buf, 0, readBytes ); + } + content = out.toByteArray(); + } + catch ( IOException e ) + { + // Problems reading from the actual ByteArrayInputStream should + // never happen + // so this will only ever be a ZipException. + log.log( POILogger.INFO, + "Possibly corrupt compression or non-compressed data", + e ); + } } - content = out.toByteArray(); - } - catch (IOException e) - { - // Problems reading from the actual ByteArrayInputStream should never happen - // so this will only ever be a ZipException. - log.log(POILogger.INFO, "Possibly corrupt compression or non-compressed data", e); - } - } else { - // Raw data is not compressed. - content = rawContent; - } - } - - private static int getPictureBytesStartOffset(int dataBlockStartOffset, byte[] _dataStream, int dataBlockSize) - { - int realPicoffset = dataBlockStartOffset; - final int dataBlockEndOffset = dataBlockSize + dataBlockStartOffset; - - // Skip over the PICT block - int PICTFBlockSize = LittleEndian.getShort(_dataStream, dataBlockStartOffset +PICT_HEADER_OFFSET); // Should be 68 bytes - - // Now the PICTF1 - int PICTF1BlockOffset = PICTFBlockSize + PICT_HEADER_OFFSET; - short MM_TYPE = LittleEndian.getShort(_dataStream, dataBlockStartOffset + PICT_HEADER_OFFSET + 2); - if(MM_TYPE == 0x66) { - // Skip the stPicName - int cchPicName = LittleEndian.getUnsignedByte(_dataStream, PICTF1BlockOffset); - PICTF1BlockOffset += 1 + cchPicName; - } - int PICTF1BlockSize = LittleEndian.getShort(_dataStream, dataBlockStartOffset +PICTF1BlockOffset); - - int unknownHeaderOffset = (PICTF1BlockSize + PICTF1BlockOffset) < dataBlockEndOffset ? (PICTF1BlockSize + PICTF1BlockOffset) : PICTF1BlockOffset; - realPicoffset += (unknownHeaderOffset + UNKNOWN_HEADER_SIZE); - if (realPicoffset>=dataBlockEndOffset) { - realPicoffset -= UNKNOWN_HEADER_SIZE; - } - return realPicoffset; - } - - private void fillJPGWidthHeight() { - /* - http://www.codecomments.com/archive281-2004-3-158083.html - - Algorhitm proposed by Patrick TJ McPhee: - - read 2 bytes - make sure they are 'ffd8'x - repeatedly: - read 2 bytes - make sure the first one is 'ff'x - if the second one is 'd9'x stop - else if the second one is c0 or c2 (or possibly other values ...) - skip 2 bytes - read one byte into depth - read two bytes into height - read two bytes into width - else - read two bytes into length - skip forward length-2 bytes - - Also used Ruby code snippet from: http://www.bigbold.com/snippets/posts/show/805 for reference - */ - int pointer = pictureBytesStartOffset+2; - int firstByte = _dataStream[pointer]; - int secondByte = _dataStream[pointer+1]; - - int endOfPicture = pictureBytesStartOffset + size; - while(pointer= dataBlockEndOffset ) + { + realPicoffset -= UNKNOWN_HEADER_SIZE; + } + return realPicoffset; } - return height; - } - private static int getBigEndianInt(byte[] data, int offset) - { - return (((data[offset] & 0xFF)<< 24) + ((data[offset +1] & 0xFF) << 16) + ((data[offset + 2] & 0xFF) << 8) + (data[offset +3] & 0xFF)); - } + private void fillJPGWidthHeight() + { + /* + * http://www.codecomments.com/archive281-2004-3-158083.html + * + * Algorhitm proposed by Patrick TJ McPhee: + * + * read 2 bytes make sure they are 'ffd8'x repeatedly: read 2 bytes make + * sure the first one is 'ff'x if the second one is 'd9'x stop else if + * the second one is c0 or c2 (or possibly other values ...) skip 2 + * bytes read one byte into depth read two bytes into height read two + * bytes into width else read two bytes into length skip forward + * length-2 bytes + * + * Also used Ruby code snippet from: + * http://www.bigbold.com/snippets/posts/show/805 for reference + */ + int pointer = pictureBytesStartOffset + 2; + int firstByte = _dataStream[pointer]; + int secondByte = _dataStream[pointer + 1]; - private static int getBigEndianShort(byte[] data, int offset) - { - return (((data[offset] & 0xFF)<< 8) + (data[offset +1] & 0xFF)); - } + int endOfPicture = pictureBytesStartOffset + size; + while ( pointer < endOfPicture - 1 ) + { + do + { + firstByte = _dataStream[pointer]; + secondByte = _dataStream[pointer + 1]; + pointer += 2; + } + while ( !( firstByte == (byte) 0xFF ) && pointer < endOfPicture - 1 ); + + if ( firstByte == ( (byte) 0xFF ) && pointer < endOfPicture - 1 ) + { + if ( secondByte == (byte) 0xD9 || secondByte == (byte) 0xDA ) + { + break; + } + else if ( ( secondByte & 0xF0 ) == 0xC0 + && secondByte != (byte) 0xC4 + && secondByte != (byte) 0xC8 + && secondByte != (byte) 0xCC ) + { + pointer += 5; + this.height = getBigEndianShort( _dataStream, pointer ); + this.width = getBigEndianShort( _dataStream, pointer + 2 ); + break; + } + else + { + pointer++; + pointer++; + int length = getBigEndianShort( _dataStream, pointer ); + pointer += length; + } + } + else + { + pointer++; + } + } + } + + private void fillPNGWidthHeight() + { + /* + * Used PNG file format description from + * http://www.wotsit.org/download.asp?f=png + */ + int HEADER_START = pictureBytesStartOffset + PNG.length + 4; + if ( matchSignature( _dataStream, IHDR, HEADER_START ) ) + { + int IHDR_CHUNK_WIDTH = HEADER_START + 4; + this.width = getBigEndianInt( _dataStream, IHDR_CHUNK_WIDTH ); + this.height = getBigEndianInt( _dataStream, IHDR_CHUNK_WIDTH + 4 ); + } + } + + /** + * returns pixel width of the picture or -1 if dimensions determining was + * failed + */ + public int getWidth() + { + if ( width == -1 ) + { + fillWidthHeight(); + } + return width; + } + + /** + * returns pixel height of the picture or -1 if dimensions determining was + * failed + */ + public int getHeight() + { + if ( height == -1 ) + { + fillWidthHeight(); + } + return height; + } + + private static int getBigEndianInt( byte[] data, int offset ) + { + return ( ( ( data[offset] & 0xFF ) << 24 ) + + ( ( data[offset + 1] & 0xFF ) << 16 ) + + ( ( data[offset + 2] & 0xFF ) << 8 ) + ( data[offset + 3] & 0xFF ) ); + } + + private static int getBigEndianShort( byte[] data, int offset ) + { + return ( ( ( data[offset] & 0xFF ) << 8 ) + ( data[offset + 1] & 0xFF ) ); + } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/PictureType.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/PictureType.java index d89f0e7bd..5858c15e0 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/PictureType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/PictureType.java @@ -36,11 +36,34 @@ public enum PictureType { TIFF( "image/tiff", "tiff", new byte[][] { { 0x49, 0x49, 0x2A, 0x00 }, { 0x4D, 0x4D, 0x00, 0x2A } } ), + UNKNOWN( "image/unknown", "", new byte[][] {} ), + WMF( "image/x-wmf", "wmf", new byte[][] { { (byte) 0xD7, (byte) 0xCD, (byte) 0xC6, (byte) 0x9A, 0x00, 0x00 }, - { 0x01, 0x00, 0x09, 0x00, 0x00, 0x03 } } ), + { 0x01, 0x00, 0x09, 0x00, 0x00, 0x03 } } ); - UNKNOWN( "image/unknown", "", new byte[][] {} ); + public static PictureType findMatchingType( byte[] pictureContent ) + { + for ( PictureType pictureType : PictureType.values() ) + for ( byte[] signature : pictureType.getSignatures() ) + if ( matchSignature( pictureContent, signature ) ) + return pictureType; + + // TODO: DIB, PICT + return PictureType.UNKNOWN; + } + + private static boolean matchSignature( byte[] pictureData, byte[] signature ) + { + if ( pictureData.length < signature.length ) + return false; + + for ( int i = 0; i < signature.length; i++ ) + if ( pictureData[i] != signature[i] ) + return false; + + return true; + } private String _extension; @@ -69,4 +92,12 @@ public enum PictureType { { return _signatures; } + + public boolean matchSignature( byte[] pictureData ) + { + for ( byte[] signature : getSignatures() ) + if ( matchSignature( signature, pictureData ) ) + return true; + return false; + } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java b/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java index 4fd3ac216..daa37eae8 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java @@ -29,9 +29,8 @@ import junit.framework.TestCase; import org.apache.poi.POIDataSamples; import org.apache.poi.hwpf.HWPFDocument; -import org.apache.poi.hwpf.usermodel.Picture; +import org.apache.poi.hwpf.usermodel.PictureType; import org.w3c.dom.Document; -import org.w3c.dom.Element; /** * Test cases for {@link WordToHtmlConverter} @@ -62,16 +61,21 @@ public class TestWordToHtmlConverter extends TestCase Document newDocument = DocumentBuilderFactory.newInstance() .newDocumentBuilder().newDocument(); - WordToHtmlConverter wordToHtmlConverter = !emulatePictureStorage ? new WordToHtmlConverter( - newDocument ) : new WordToHtmlConverter( newDocument ) + WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter( + newDocument ); + + if ( emulatePictureStorage ) { - @Override - protected void processImage( Element currentBlock, boolean inlined, - Picture picture ) + wordToHtmlConverter.setPicturesManager( new PicturesManager() { - processImage( currentBlock, inlined, picture, "picture.bin" ); - } - }; + public String savePicture( byte[] content, + PictureType pictureType, String suggestedName ) + { + return suggestedName; + } + } ); + } + wordToHtmlConverter.processDocument( hwpfDocument ); StringWriter stringWriter = new StringWriter(); @@ -172,20 +176,6 @@ public class TestWordToHtmlConverter extends TestCase assertContains( result, "" ); } - public void testPicture() throws Exception - { - String result = getHtmlText( "picture.doc", true ); - - // picture - assertContains( result, "src=\"picture.bin\"" ); - // visible size - assertContains( result, "width:3.1305554in;height:1.7250001in;" ); - // shift due to crop - assertContains( result, "left:-0.09375;top:-0.25694445;" ); - // size without crop - assertContains( result, "width:3.4125in;height:2.325in;" ); - } - public void testHyperlink() throws Exception { String result = getHtmlText( "hyperlink.doc" ); @@ -201,14 +191,6 @@ public class TestWordToHtmlConverter extends TestCase getHtmlText( "innertable.doc" ); } - public void testTableMerges() throws Exception - { - String result = getHtmlText( "table-merges.doc" ); - - assertContains( result, "" ); - assertContains( result, "" ); - } - public void testO_kurs_doc() throws Exception { getHtmlText( "o_kurs.doc" ); @@ -222,4 +204,33 @@ public class TestWordToHtmlConverter extends TestCase assertContains( result, "" ); assertContains( result, "1" ); } + + public void testPicture() throws Exception + { + String result = getHtmlText( "picture.doc", true ); + + // picture + assertContains( result, "src=\"0.emf\"" ); + // visible size + assertContains( result, "width:3.1305554in;height:1.7250001in;" ); + // shift due to crop + assertContains( result, "left:-0.09375;top:-0.25694445;" ); + // size without crop + assertContains( result, "width:3.4125in;height:2.325in;" ); + } + + public void testPicturesEscher() throws Exception + { + String result = getHtmlText( "pictures_escher.doc", true ); + assertContains( result, "" ); + assertContains( result, "" ); + } + + public void testTableMerges() throws Exception + { + String result = getHtmlText( "table-merges.doc" ); + + assertContains( result, "" ); + assertContains( result, "" ); + } } diff --git a/test-data/document/pictures_escher.doc b/test-data/document/pictures_escher.doc new file mode 100644 index 0000000000000000000000000000000000000000..4870bc7ab2d4311d9d102557c84eaad1802eca30 GIT binary patch literal 120320 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 bFq7k7Vf>3cf5-k$^#6+x|B~&0GX8%77A|H0 literal 0 HcmV?d00001