Пример программы ...Преобразование HTML код Слово Использование docx4j изображения не встраивается в документ Word,
import java.io.IOException;
import org.docx4j.Docx4jProperties;
import org.docx4j.jaxb.Context;
import org.docx4j.openpackaging.contenttype.ContentType;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.model.structure.PageSizePaper;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.PartName;
import org.docx4j.openpackaging.parts.WordprocessingML.AlternativeFormatInputPart;
import org.docx4j.relationships.Relationship;
import org.docx4j.wml.CTAltChunk;
public class HtmlToDoc {
public static void main(String[] args) throws Docx4JException {
String html="", s="", filepath="E://HtmlToDoc//";
try {
String html = "<html><head><title>Import me</title></head><body><p>Hello World! Sample Program</p><img src="E:/HtmlToDoc/LOGO.JPEG"/></body></html>";
Docx4jProperties.getProperties().setProperty("docx4j.PageSize", "B4JIS");
String papersize= Docx4jProperties.getProperties().getProperty("docx4j.PageSize", "B4JIS");
String landscapeString = Docx4jProperties.getProperties().getProperty("docx4j.PageOrientationLandscape", "true");
boolean landscape= Boolean.parseBoolean(landscapeString);
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(PageSizePaper.valueOf(papersize), landscape);
AlternativeFormatInputPart afiPart = new AlternativeFormatInputPart(new PartName("/hw.html"));
afiPart.setBinaryData(html.getBytes());
//afiPart.setBinaryData(fileContent);
afiPart.setContentType(new ContentType("text/html"));
Relationship altChunkRel = wordMLPackage.getMainDocumentPart().addTargetPart(afiPart);
// .. the bit in document body
CTAltChunk ac = Context.getWmlObjectFactory().createCTAltChunk();
ac.setId(altChunkRel.getId());
wordMLPackage.getMainDocumentPart().addObject(ac);
// .. content type
wordMLPackage.getContentTypeManager().addDefaultContentType("html", "text/html");
wordMLPackage.save(new java.io.File("E://HtmlToDoc//" + "test.docx"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Это правильно работает в моей локальной машине. но я переместил этот код на сервер в моем документе. Документ не вставлен, но я дал правильный путь к изображению. [То же самое изображение работает нормально, когда я конвертирую HTML в PDF на сервере]. что может быть причиной отсутствия изображения во время работы на сервере [Linux-машина и сервер приложений IBM Websphere и сервер ApacheWeb]. Хотя все мои пути (документ документа, изображения, html-документ) одинаковы.
Я использовал относительное изображение пути, внедренное в слово, но когда я загружаю изображение, отсутствует, но когда я скопировал документ слова с сервера на локальное изображение, он находится в текстовом документе. Я пробовал использовать URI другого метода. Я получаю небольшую кросс-метку вместо изображения. где я делаю неправильный код. –