【问题标题】:Java - Image into Word DocJava - 将图像转换为 Word Doc
【发布时间】:2017-11-06 14:31:32
【问题描述】:

正在创建屏幕截图,word doc 也有一些大小,但是当我打开它时它是空的...谁能建议,附上代码

我需要将我所有的屏幕截图放在 word 文档中。

在打开 word 文档时遇到一些“启用内容”错误,我已经信任发布者...现在该错误(当然不是错误)不会出现,但 WORD 文档是空的,大小合理。

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;

import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.Document;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

public class TakeScreenshots {

    public static void main(String[] args) {
        try {

            // for (int counter = 0; counter <= 5; counter++) {
            captureScreenShot();
            // captureScreenShot(out, docx);
            // }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void captureScreenShot() throws Exception {

        XWPFDocument docx = new XWPFDocument();
        String screenshot_name = System.currentTimeMillis() + ".png";

        BufferedImage image = new Robot()
                .createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        ImageIO.write(image, "png", new File("d:/xyz/" + screenshot_name));

        InputStream pic = new FileInputStream("d:/xyz/" + screenshot_name);
        docx.addPictureData(pic, Document.PICTURE_TYPE_PNG);
        FileOutputStream out = new FileOutputStream("d:/xyz/doc1.docx");
        docx.write(out);
        pic.close();
        out.flush();
        out.close();

        TimeUnit.SECONDS.sleep(1);
    }

}

【问题讨论】:

    标签: java ms-word screenshot


    【解决方案1】:

    修改您的 captureScreenShot 方法,如下所示,它将起作用。

    public static void captureScreenShot() throws Exception {
        XWPFDocument docx = new XWPFDocument();
        XWPFParagraph paragraph = docx.createParagraph();    
        XWPFRun run = paragraph.createRun();
        String screenshot_name = System.currentTimeMillis() + ".png";
        BufferedImage image = new Robot()
                .createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        ImageIO.write(image, "png", new File("d:/xyz/" + screenshot_name));
        InputStream pic = new FileInputStream("d:/xyz/" + screenshot_name);
        //docx.addPictureData(pic, Document.PICTURE_TYPE_PNG);
        run.addBreak();
        run.addPicture(pic, XWPFDocument.PICTURE_TYPE_JPEG, screenshot_name, Units.toEMU(350), Units.toEMU(350));
        pic.close();
        FileOutputStream out = new FileOutputStream("d:/xyz/doc1.docx");
        docx.write(out);
        out.flush();
        out.close();
    
        TimeUnit.SECONDS.sleep(1);
    }
    

    【讨论】:

    • 谢谢 Vidura,我也试过这样。但它给出了以下错误。线程“主”java.lang.NoSuchMethodError 中的异常:org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR.getDrawingList()Ljava/util/List;我试过谷歌搜索,我有所需的 JAR (ooxml-schemas-1.1-sources.jar) 你能帮忙解决这个错误吗?
    • 你的类路径中应该有下面的 jar 文件..你可以谷歌下载.. poi-3.17.jar , poi-excelant-3.17.jar , poi-ooxml-3.17.jar , poi-ooxml-schemas-3.17.jar , poi-scratchpad-3.17.jar , xmlbeans-xpath-2.6.0 2.jar , xmlbeans.jar 如果不行,也下载ooxml-schemas-1.1.jar。希望这次能成功
    • 我附上了以下 JAR,仍然报错...对于某些我只能找到 beta 版本,这有关系吗?
    • poi-ooxml-3.8.jar, org.apache.commons.io.jar, dom4j.jar, xmlbeans-2.3.0.jar, poi-3.9.jar, poi-ooxml-schemas- 3.7-beta1.jar、ooxml-schemas-1.1-sources.jar、org.json-20120521.jar、poi-ooxml-schemas-3.7.jar、xmlbeans.jar、xmlbeans-xpath-2.6.0.jar、dom4j- 1.6.1.jar、log4j-1.2.8.jar、ooxml-schemas-1.0.jar、ooxml-schemas-1.1-sources (1).jar、openxml4j-1.0-beta.jar、xml-apis-1.0.b2 .jar, poi-3.17.jar, ooxml-schemas-1.1.jar, poi-excelant-3.17-beta1.jar, poi-ooxml-3.17-beta1.jar, poi-ooxml-schemas-3.17-beta1.jar, poi -scratchpad-3.17.jar、xmlbeans-2.6.0.jar、xmlbeans-xpath-2.6.0 (1).jar
    • 线程“主”java.lang.NoSuchMethodError 中的异常:org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR.getDrawingList()Ljava/util/List;
    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多