git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898221 13f79535-47bb-0310-9956-ffa450edef68tags/REL_5_2_1
package org.apache.poi.hpbf.model; | package org.apache.poi.hpbf.model; | ||||
import java.io.ByteArrayInputStream; | |||||
import java.io.FileNotFoundException; | import java.io.FileNotFoundException; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; | |||||
import org.apache.poi.poifs.filesystem.DirectoryNode; | import org.apache.poi.poifs.filesystem.DirectoryNode; | ||||
import org.apache.poi.util.IOUtils; | import org.apache.poi.util.IOUtils; | ||||
generateData(); | generateData(); | ||||
// Write out | // Write out | ||||
ByteArrayInputStream bais = new ByteArrayInputStream(data); | |||||
dir.createDocument(path[path.length-1], bais); | |||||
try (UnsynchronizedByteArrayInputStream bais = new UnsynchronizedByteArrayInputStream(data)) { | |||||
dir.createDocument(path[path.length-1], bais); | |||||
} | |||||
} | } | ||||
/** | /** |
package org.apache.poi.hslf.blip; | package org.apache.poi.hslf.blip; | ||||
import java.awt.Dimension; | import java.awt.Dimension; | ||||
import java.io.ByteArrayInputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.util.zip.InflaterInputStream; | import java.util.zip.InflaterInputStream; | ||||
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; | |||||
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; | import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; | ||||
import org.apache.poi.ddf.EscherBSERecord; | import org.apache.poi.ddf.EscherBSERecord; | ||||
import org.apache.poi.ddf.EscherContainerRecord; | import org.apache.poi.ddf.EscherContainerRecord; | ||||
Header header = new Header(); | Header header = new Header(); | ||||
header.read(rawdata, CHECKSUM_SIZE); | header.read(rawdata, CHECKSUM_SIZE); | ||||
try (UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream(); | |||||
InputStream is = new ByteArrayInputStream(rawdata); | |||||
InflaterInputStream inflater = new InflaterInputStream(is)) { | |||||
try ( | |||||
InputStream is = new UnsynchronizedByteArrayInputStream(rawdata); | |||||
InflaterInputStream inflater = new InflaterInputStream(is); | |||||
UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream() | |||||
) { | |||||
long len = IOUtils.skipFully(is,header.getSize() + (long)CHECKSUM_SIZE); | long len = IOUtils.skipFully(is,header.getSize() + (long)CHECKSUM_SIZE); | ||||
assert(len == header.getSize() + CHECKSUM_SIZE); | assert(len == header.getSize() + CHECKSUM_SIZE); | ||||
import java.awt.Dimension; | import java.awt.Dimension; | ||||
import java.awt.Rectangle; | import java.awt.Rectangle; | ||||
import java.io.ByteArrayInputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | import java.io.OutputStream; | ||||
import java.util.zip.DeflaterOutputStream; | import java.util.zip.DeflaterOutputStream; | ||||
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; | |||||
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; | import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; | ||||
import org.apache.poi.ddf.EscherBSERecord; | import org.apache.poi.ddf.EscherBSERecord; | ||||
import org.apache.poi.ddf.EscherContainerRecord; | import org.apache.poi.ddf.EscherContainerRecord; | ||||
import org.apache.poi.hslf.usermodel.HSLFPictureData; | import org.apache.poi.hslf.usermodel.HSLFPictureData; | ||||
import org.apache.poi.hslf.usermodel.HSLFSlideShow; | |||||
import org.apache.poi.util.Internal; | import org.apache.poi.util.Internal; | ||||
import org.apache.poi.util.LittleEndian; | import org.apache.poi.util.LittleEndian; | ||||
import org.apache.poi.util.LittleEndianInputStream; | import org.apache.poi.util.LittleEndianInputStream; | ||||
import org.apache.poi.util.LittleEndianOutputStream; | import org.apache.poi.util.LittleEndianOutputStream; | ||||
import org.apache.poi.util.Removal; | |||||
import org.apache.poi.util.Units; | import org.apache.poi.util.Units; | ||||
/** | /** | ||||
*/ | */ | ||||
private int filter = 254; | private int filter = 254; | ||||
public void read(byte[] data, int offset){ | |||||
@SuppressWarnings("resource") | |||||
LittleEndianInputStream leis = new LittleEndianInputStream( | |||||
new ByteArrayInputStream(data, offset, RECORD_LENGTH)); | |||||
wmfsize = leis.readInt(); | |||||
int left = leis.readInt(); | |||||
int top = leis.readInt(); | |||||
int right = leis.readInt(); | |||||
int bottom = leis.readInt(); | |||||
bounds.setBounds(left, top, right-left, bottom-top); | |||||
int width = leis.readInt(); | |||||
int height = leis.readInt(); | |||||
size.setSize(width, height); | |||||
zipsize = leis.readInt(); | |||||
compression = leis.readUByte(); | |||||
filter = leis.readUByte(); | |||||
public void read(byte[] data, int offset) { | |||||
try ( | |||||
LittleEndianInputStream leis = new LittleEndianInputStream( | |||||
new UnsynchronizedByteArrayInputStream(data, offset, RECORD_LENGTH)) | |||||
) { | |||||
wmfsize = leis.readInt(); | |||||
int left = leis.readInt(); | |||||
int top = leis.readInt(); | |||||
int right = leis.readInt(); | |||||
int bottom = leis.readInt(); | |||||
bounds.setBounds(left, top, right - left, bottom - top); | |||||
int width = leis.readInt(); | |||||
int height = leis.readInt(); | |||||
size.setSize(width, height); | |||||
zipsize = leis.readInt(); | |||||
compression = leis.readUByte(); | |||||
filter = leis.readUByte(); | |||||
} catch (IOException e) { | |||||
throw new IllegalStateException(e); | |||||
} | |||||
} | } | ||||
public void write(OutputStream out) throws IOException { | public void write(OutputStream out) throws IOException { |
package org.apache.poi.hslf.blip; | package org.apache.poi.hslf.blip; | ||||
import java.awt.Dimension; | import java.awt.Dimension; | ||||
import java.io.ByteArrayInputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.util.zip.InflaterInputStream; | import java.util.zip.InflaterInputStream; | ||||
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream; | |||||
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; | import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; | ||||
import org.apache.poi.ddf.EscherBSERecord; | import org.apache.poi.ddf.EscherBSERecord; | ||||
import org.apache.poi.ddf.EscherContainerRecord; | import org.apache.poi.ddf.EscherContainerRecord; | ||||
@Override | @Override | ||||
public byte[] getData(){ | public byte[] getData(){ | ||||
try { | |||||
byte[] rawdata = getRawData(); | |||||
byte[] rawdata = getRawData(); | |||||
try (InputStream is = new UnsynchronizedByteArrayInputStream(rawdata)) { | |||||
InputStream is = new ByteArrayInputStream( rawdata ); | |||||
Header header = new Header(); | Header header = new Header(); | ||||
header.read(rawdata, CHECKSUM_SIZE*getUIDInstanceCount()); | header.read(rawdata, CHECKSUM_SIZE*getUIDInstanceCount()); | ||||
long skipLen = header.getSize() + (long)CHECKSUM_SIZE*getUIDInstanceCount(); | long skipLen = header.getSize() + (long)CHECKSUM_SIZE*getUIDInstanceCount(); |