Docx'i xhtml'ye dönüştürme

Sep 11 2020

Bir docx dosyasını XHTML'ye dönüştürmek için bir çözüm bulmaya çalışıyorum.

İyi görünen xdocreport'u buldum, ancak bazı sorunlarım var. (ve xdocreport'ta yeniyim)

Github'daki belgelerine göre burada ve burada : Bu kodla dönüştürme yapabilmeliyim:

    String source = args[0];
    String dest = args[1];

    // 1) Create options DOCX to XHTML to select well converter form the registry
    Options options = Options.getFrom(DocumentKind.DOCX).to(ConverterTypeTo.XHTML);

    // 2) Get the converter from the registry
    IConverter converter = ConverterRegistry.getRegistry().getConverter(options);

    // 3) Convert DOCX to (x)html
    try {
        InputStream in = new FileInputStream(new File(source));
        OutputStream out = new FileOutputStream(new File(dest));
        converter.convert(in, out, options);
    } catch (XDocConverterException | FileNotFoundException e) {
        e.printStackTrace();
    }

Bu bağımlılıkları kullanıyorum (2.0.2, 2.0.0, 1.0.6 gibi farklı sürümleri denedim):

    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>fr.opensagres.xdocreport.document.docx</artifactId>
        <version>2.0.2</version>
    </dependency>

    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId>
        <version>2.0.2</version>
    </dependency>

    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>fr.opensagres.xdocreport.converter.docx.xwpf</artifactId>
        <version>2.0.2</version>
    </dependency>

Sorunlarım:

  • Görüntüler eksik
  • Arka plan rengi eksik (tüm sayfaların arka plan rengi beyaz değildir ve bunu da dönüştürmem gerekiyor)

Bu sorunları nasıl çözebilirim? (Veya Docx4j kullanarak formatlar / numaralandırma / resimler kullanarak docx'i xhtml'ye nasıl dönüştürebilirim?)

Yanıtlar

1 AxelRichter Sep 11 2020 at 15:28

Kullanarak dönüştürmek *.docxiçin ve 's kaynak olarak ihtiyacınız olacak . Bu seçenekler, içinden çıkarılan görüntülerin yolunu ayarlamak zorunda kalabilir . Daha sonra dönüştürmek gerekir.XHTMLXDocReportapache poiXWPFDocumentXHTMLOptionsImageManagerXWPFDocumentXHTMLConverter

Tam örnek:

import java.io.*;

//needed jars: xdocreport-2.0.2.jar, 
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;
import fr.opensagres.poi.xwpf.converter.core.ImageManager;

//needed jars: all apache poi dependencies
import org.apache.poi.xwpf.usermodel.*;

public class DOCXToXHTMLXDocReport {

 public static void main(String[] args) throws Exception {

  String docPath = "./WordDocument.docx";

  String root = "./";
  String htmlPath = root + "WordDocument.html";

  XWPFDocument document = new XWPFDocument(new FileInputStream(docPath));

  XHTMLOptions options = XHTMLOptions.create().setImageManager(new ImageManager(new File(root), "images"));

  FileOutputStream out = new FileOutputStream(htmlPath);
  XHTMLConverter.getInstance().convert(document, out, options);

  out.close();      
  document.close();     
 
 }
}

Bu, görüntüleri düzgün şekilde işler.

Ancak XDocReportşu ana XWPFDocumentkadar sayfa arka plan renklerini düzgün şekilde işleyemiyor. Paragraf arka plan renklerini çıkarır ve işler ancak sayfa arka plan renklerini kullanmaz.