package cn.flightfeather.supervision.docx4j.demo
|
|
import org.docx4j.dml.wordprocessingDrawing.Inline
|
import org.docx4j.openpackaging.packages.WordprocessingMLPackage
|
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage
|
import org.docx4j.wml.ObjectFactory
|
import org.docx4j.wml.P
|
import java.io.File
|
|
|
class AddImage
|
|
fun main(args: Array<String>) {
|
|
val wordMLPackage = WordprocessingMLPackage.createPackage()
|
|
val file = File(System.getProperty("user.dir") + "/src/main/resources/static/images/greentick.png")
|
val bytes = convertImageToByteArray(file)
|
addImageToPackage(wordMLPackage, bytes)
|
|
wordMLPackage.save(java.io.File("HelloWord7.docx"))
|
}
|
|
|
@Throws(Exception::class)
|
private fun addImageToPackage(wordMLPackage: WordprocessingMLPackage,
|
bytes: ByteArray) {
|
val imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes)
|
|
val docPrId = 1
|
val cNvPrId = 2
|
val inline = imagePart.createImageInline("Filename hint", "Alternative text", docPrId, cNvPrId, false)
|
|
val paragraph = addInlineImageToParagraph(inline)
|
|
wordMLPackage.mainDocumentPart.addObject(paragraph)
|
}
|
|
|
private fun addInlineImageToParagraph(inline: Inline): P {
|
// 添加内联对象到一个段落中
|
val factory = ObjectFactory()
|
val paragraph = factory.createP()
|
val run = factory.createR()
|
paragraph.content.add(run)
|
val drawing = factory.createDrawing()
|
run.content.add(drawing)
|
drawing.anchorOrInline.add(inline)
|
return paragraph
|
}
|