0

我正在使用以下代码将 doc 转换为 html

private static final String docName = "This is a test page.docx";
private static final String outputlFolderPath = "C://";
String htmlNamePath = "docHtml1.html";
String zipName="_tmp.zip";
static File docFile = new File(outputlFolderPath+docName);
File zipFile = new File(zipName);

public void ConvertWordToHtml() {
    try {
        InputStream doc = new FileInputStream(new File(outputlFolderPath+docName));
        System.out.println("InputStream"+doc);
        XWPFDocument document = new XWPFDocument(doc);
        XHTMLOptions options = XHTMLOptions.create(); //.URIResolver(new FileURIResolver(new File("word/media")));;
        String root = "target";
        File imageFolder = new File( root + "/images/" + doc );
        options.setExtractor( new FileImageExtractor( imageFolder ) );
        options.URIResolver( new FileURIResolver( imageFolder ) );
        OutputStream out = new FileOutputStream(new File(htmlPath()));
        XHTMLConverter.getInstance().convert(document, out, options);
    } catch (Exception ex) {

    }
}

public static void main(String[] args) throws IOException, ParserConfigurationException, Exception {
    Convertion cwoWord=new Convertion();
    cwoWord.ConvertWordToHtml();    

}


public String htmlPath(){
    return outputlFolderPath+htmlNamePath;
}

public String zipPath(){
    // d:/_tmp.zip
    return outputlFolderPath+zipName;
}

上面的代码将 doc 转换为 html 很好。当我尝试转换具有圆形图形(如屏幕截图所示)的 doc 文件时出现问题,在这种情况下,图形不会显示为 html 文件。

在此处输入图像描述

请帮助我如何在转换后维护从 doc 到 html 文件的图形。提前致谢

4

1 回答 1

0

您可以使用以下代码将图像嵌入到 html 中:

Base64ImageExtractor imageExtractor = new Base64ImageExtractor();
options.setExtractor(imageExtractor);
options.URIResolver(imageExtractor);

其中 Base64ImageExtractor 看起来像:

public class Base64ImageExtractor implements IImageExtractor, IURIResolver {

    private byte[] picture;

    public void extract(String imagePath, byte[] imageData) throws IOException {
        this.picture = imageData;
    }

    private static final String EMBED_IMG_SRC_PREFIX = "data:;base64,";


    public String resolve(String uri) {
        StringBuilder sb = new StringBuilder(picture.length + EMBED_IMG_SRC_PREFIX.length())
                .append(EMBED_IMG_SRC_PREFIX)
                .append(Base64Utility.encode(picture));
        return sb.toString();
    }
}
于 2018-02-27T10:44:52.047 回答