使用docx4j将图像插入到word文档中的特定位置

时间:2014-07-02 08:47:53

标签: java docx4j

我想使用docx4j将图像添加到word文档中的特定位置。我不想要内联插入。下面的代码执行将图像与文本内联添加。但我想浮动插入,我可以明确地给出图像应放在页面中的位置。请帮帮我。

    public R addUserPic(P parag, WordprocessingMLPackage wordMLPackage)
                throws Exception {

            File file = new File("src/main/resources/PictureNew.png");
            byte[] bytes = convertImageToByteArray(file);   
            BinaryPartAbstractImage imagePart = BinaryPartAbstractImage
                    .createImagePart(wordMLPackage, bytes);
            int docPrId = 1;
            int cNvPrId = 2;

            Inline inline = imagePart.createImageInline("Filename hint",
                    "Alternative text", docPrId, cNvPrId, false);   

            ObjectFactory factory = new ObjectFactory();
            R run = factory.createR();
            org.docx4j.wml.Drawing drawing = factory.createDrawing();
            run.getContent().add(drawing);
            drawing.getAnchorOrInline().add(inline);

            return run;

        }

        private static byte[] convertImageToByteArray(File file)
                throws FileNotFoundException, IOException {
            InputStream is = new FileInputStream(file);
            long length = file.length();

            if (length > Integer.MAX_VALUE) {
                System.out.println("File too large!!");
            }
            byte[] bytes = new byte[(int) length];
            int offset = 0;
            int numRead = 0;
            while (offset < bytes.length
                    && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
                offset += numRead;
            }

            if (offset < bytes.length) {
                System.out.println("Could not completely read file "
                        + file.getName());
            }
            is.close();
            return bytes;


}

1 个答案:

答案 0 :(得分:1)