add(.., InputStream, ..) 추가 메소드 추가

master
mjkhan21 11 months ago
parent 2077a666ab
commit c3b0097015

@ -2,9 +2,11 @@ package cokr.xit.base.docs.hwp;
import java.awt.Rectangle;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.function.BiConsumer;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.Assert;
import kr.dogfoot.hwplib.object.bindata.BinData;
import kr.dogfoot.hwplib.object.bodytext.control.ctrlheader.CtrlHeaderGso;
@ -42,7 +44,7 @@ import kr.dogfoot.hwplib.object.docinfo.borderfill.fillinfo.PictureEffect;
/**
* @author mjkhan
*/
public class Image {
public class Image extends AbstractComponent {
private HWPWriter writer;
private int instanceID = 0x5bb840e1;
@ -62,14 +64,13 @@ public class Image {
dataID = addToDocInfo(index, getExt(path));
ControlRectangle ctrlRect = newRect(paragraph);
setCtrlHeaderGso(ctrlRect, rect);
setShapeComponent(ctrlRect, rect, dataID);
setShapeComponentRectangle(ctrlRect, rect);
return this;
} catch (Exception e) {
throw Assert.runtimeException(e);
throw runtimeException(e);
}
}
@ -82,6 +83,40 @@ public class Image {
return add(path, paragraph, new Rectangle(50, 50, 100, 100));
}
/** InputStream .
* @param name
* @param input InputStream
* @param paragraph
* @param rect
* @return Image
*/
public Image add(String name, InputStream input, Paragraph paragraph, Rectangle rect) {
try {
BinData binData = writer.file.getBinData();
int index = addData(binData, name, input),
dataID = addToDocInfo(index, getExt(name));
ControlRectangle ctrlRect = newRect(paragraph);
setCtrlHeaderGso(ctrlRect, rect);
setShapeComponent(ctrlRect, rect, dataID);
setShapeComponentRectangle(ctrlRect, rect);
return this;
} catch (Exception e) {
throw runtimeException(e);
}
}
/** InputStream .
* @param name
* @param input InputStream
* @param paragraph
* @return Image
*/
public Image add(String name, InputStream input, Paragraph paragraph) {
return add(name, input, paragraph, new Rectangle(50, 50, 100, 100));
}
/** .
* @param path
* @return
@ -91,6 +126,14 @@ public class Image {
}
private int addData(String path) throws Exception {
BinData binData = writer.file.getBinData();
int index = binData.getEmbeddedBinaryDataList().size() + 1;
String ext = getExt(path),
name = String.format("Bin%04X", index) + (!ext.isEmpty() ? "." + ext : ext);
try (FileInputStream input = new FileInputStream(path)) {
return addData(binData, name, input);
}
/*
BinData binData = writer.file.getBinData();
int index = binData.getEmbeddedBinaryDataList().size() + 1;
String ext = getExt(path),
@ -101,6 +144,13 @@ public class Image {
binData.addNewEmbeddedBinaryData(name, bytes, BinDataCompress.ByStorageDefault);
return index;
}
*/
}
private int addData(BinData binData, String name, InputStream inputStream) throws Exception {
byte[] bytes = inputStream.readAllBytes();
binData.addNewEmbeddedBinaryData(name, bytes, BinDataCompress.ByStorageDefault);
return binData.getEmbeddedBinaryDataList().size();
}
private static String getExt(String path) {
@ -117,7 +167,8 @@ public class Image {
property.setState(BinDataState.NotAccess);
binData.setBinDataID(index);
binData.setExtensionForEmbedding(ext);
if (!isEmpty(ext))
binData.setExtensionForEmbedding(ext);
ArrayList<kr.dogfoot.hwplib.object.docinfo.BinData> dataList = writer.file.getDocInfo().getBinDataList();
dataList.add(binData);

Loading…
Cancel
Save