@Internal public final class PicturesTable extends java.lang.Object
Word stores images as is within so called "Data stream" - the stream within a Word docfile containing various data that hang off of characters in the main stream. For example, binary data describing in-line pictures and/or formfields an also embedded objects-native data. Word picture structures are concatenated one after the other in the data stream if the document contains pictures. Data stream is easily reachable via HWPFDocument._dataStream property. A picture is represented in the document text stream as a special character, an Unicode whose CharacterRun.isSpecial() returns true. The file location of the picture in the Word binary file is accessed via CharacterRun.getPicOffset(). The CharacterRun.getPicOffset() is a byte offset into the data stream. Beginning at the position recorded in picOffset, a header data structure, will be stored.
Constructor and Description |
---|
PicturesTable(HWPFDocument _document,
byte[] _dataStream,
byte[] _mainStream) |
PicturesTable(HWPFDocument _document,
byte[] _dataStream,
byte[] _mainStream,
FSPATable fspa,
OfficeArtContent dgg)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
Picture |
extractPicture(CharacterRun run,
boolean fillBytes)
Returns picture object tied to specified CharacterRun
|
java.util.List<Picture> |
getAllPictures()
Not all documents have all the images concatenated in the data stream
although MS claims so.
|
boolean |
hasEscherPicture(CharacterRun run) |
boolean |
hasHorizontalLine(CharacterRun run)
determines whether specified CharacterRun contains reference to a picture
|
boolean |
hasPicture(CharacterRun run)
determines whether specified CharacterRun contains reference to a picture
|
@Deprecated public PicturesTable(HWPFDocument _document, byte[] _dataStream, byte[] _mainStream, FSPATable fspa, OfficeArtContent dgg)
public PicturesTable(HWPFDocument _document, byte[] _dataStream, byte[] _mainStream)
public boolean hasPicture(CharacterRun run)
public boolean hasEscherPicture(CharacterRun run)
public boolean hasHorizontalLine(CharacterRun run)
public Picture extractPicture(CharacterRun run, boolean fillBytes)
fillBytes
- if true, Picture will be returned with filled byte array that represent picture's contents. If you don't want
to have that byte array in memory but only write picture's contents to stream, pass false and then use Picture.writeImageContentPicture.writeImageContent(OutputStream)
,
hasPicture(CharacterRun)
public java.util.List<Picture> getAllPictures()
Copyright 2022 The Apache Software Foundation or its licensors, as applicable.