use of org.docx4j.dml.wordprocessingDrawing.Inline in project docx4j-template by vindell.
the class AddingAnInlineImage method addImageToPackage.
/**
* Docx4j拥有一个由字节数组创建图片部件的工具方法, 随后将其添加到给定的包中. 为了能将图片添加
* 到一个段落中, 我们需要将图片转换成内联对象. 这也有一个方法, 方法需要文件名提示, 替换文本,
* 两个id标识符和一个是嵌入还是链接到的指示作为参数.
* 一个id用于文档中绘图对象不可见的属性, 另一个id用于图片本身不可见的绘制属性. 最后我们将内联
* 对象添加到段落中并将段落添加到包的主文档部件.
*
* @param wordMLPackage 要添加图片的包
* @param bytes 图片对应的字节数组
* @throws Exception 不幸的createImageInline方法抛出一个异常(没有更多具体的异常类型)
*/
private static void addImageToPackage(WordprocessingMLPackage wordMLPackage, byte[] bytes) throws Exception {
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
int docPrId = 1;
int cNvPrId = 2;
Inline inline = imagePart.createImageInline("Filename hint", "Alternative text", docPrId, cNvPrId, false);
P paragraph = addInlineImageToParagraph(inline);
wordMLPackage.getMainDocumentPart().addObject(paragraph);
}
use of org.docx4j.dml.wordprocessingDrawing.Inline in project flexmark-java by vsch.
the class CoreNodeDocxRenderer method newImage.
public R newImage(final DocxRendererContext docx, byte[] bytes, String filenameHint, Attributes attributes, int id1, int id2) {
try {
BinaryPartAbstractImage imagePart = null;
imagePart = BinaryPartAbstractImage.createImagePart(docx.getPackage(), docx.getContainerPart(), bytes);
Inline inline = null;
String altText = attributes.contains("alt") ? attributes.getValue("alt") : "";
List<SectionWrapper> sections = docx.getPackage().getDocumentModel().getSections();
PageDimensions page = sections.get(sections.size() - 1).getPageDimensions();
double writableWidthTwips = page.getWritableWidthTwips();
long cx = getSizeInfo(attributes, "width", page.getWritableWidthTwips());
long cy = cx > 0 ? getSizeInfo(attributes, "height", page.getWritableHeightTwips()) : -1;
// kludge: normally there is no max-width attribute but we can fake it
long longMaxWidth = getSizeInfo(attributes, "max-width", page.getWritableWidthTwips());
int maxWidth = longMaxWidth > 0 && longMaxWidth <= Integer.MAX_VALUE ? (int) longMaxWidth : -1;
if (cx > 0 && cy > 0) {
// here we need cx & cy in emu which needs conversion from twips
cx = UnitsOfMeasurement.twipToEMU(cx);
cy = UnitsOfMeasurement.twipToEMU(cy);
inline = imagePart.createImageInline(filenameHint, altText, id1, id2, cx, cy, false);
} else {
if (cx > 0) {
inline = imagePart.createImageInline(filenameHint, altText, id1, id2, cx, false);
} else {
if (maxWidth > 0) {
inline = imagePart.createImageInline(filenameHint, altText, id1, id2, false, maxWidth);
} else {
inline = imagePart.createImageInline(filenameHint, altText, id1, id2, false);
}
}
}
// Now add the inline in w:p/w:r/w:drawing
org.docx4j.wml.R run = docx.createR();
org.docx4j.wml.Drawing drawing = docx.getFactory().createDrawing();
run.getContent().add(drawing);
drawing.getAnchorOrInline().add(inline);
return run;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
use of org.docx4j.dml.wordprocessingDrawing.Inline in project mdw-designer by CenturyLinkCloud.
the class DocxBuilder method addImage.
public void addImage(byte[] imageBytes) throws Exception {
BinaryPartAbstractImage.setDensity(600);
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, imageBytes);
Inline inline = imagePart.createImageInline(null, null, 0, 1, false);
ObjectFactory factory = Context.getWmlObjectFactory();
P imgP = factory.createP();
R imgRun = factory.createR();
imgP.getContent().add(imgRun);
Drawing drawing = factory.createDrawing();
imgRun.getContent().add(drawing);
drawing.getAnchorOrInline().add(inline);
getMdp().addObject(imgP);
}
use of org.docx4j.dml.wordprocessingDrawing.Inline in project Java-Tutorial by gpcodervn.
the class ImageAddTest method testSize20pt.
@Test
public void testSize20pt() throws Exception {
Inline inline1 = getInline("<div><img src='" + PNG_IMAGE_DATA + "' width='20pt' height='20pt' /></div>");
Assert.assertTrue(inline1.getExtent().getCx() == 451273);
}
use of org.docx4j.dml.wordprocessingDrawing.Inline in project Java-Tutorial by gpcodervn.
the class ImageAddTest method testSizeSpecifiedPxPlusCSS.
@Test
public void testSizeSpecifiedPxPlusCSS() throws Exception {
// box.getHeight() and box.getWidth() include padding
Inline inline2 = getInline("<div><img style='padding-top:10px;padding-left:10px;' src='" + PNG_IMAGE_DATA + "' width='20px' height='10px' /></div>");
Assert.assertTrue(inline2.getExtent().getCx() == 338667);
// Assert.assertTrue(inline2.getExtent().getCx() / inline2.getExtent().getCy() == 2);
}
Aggregations