Gibt es eine Java-Bibliothek (vielleicht poi?), Die Dateien zusammenführen docx erlaubt? [geschlossen]

StackOverflow https://stackoverflow.com/questions/2494549

  •  21-09-2019
  •  | 
  •  

Frage

Ich brauche eine Java-Anwendung zu schreiben, die Dateien zusammenführen docx kann. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Der folgende Java-APIs zur Verfügung OpenXML MS Word-Dokumente mit Java behandeln:

Es war ein mehr, aber ich erinnere mich nicht an den Namen nicht mehr.

In Bezug auf Ihre funktionale Anforderung: zwei Dokumente Verschmelzung ist technisch heikel das Ergebnis zu erzielen, wie die Enduser erwarten. Die meisten API wird das nicht zulassen. Sie werden die gewünschten Informationen aus zwei Dokumenten extrahieren müssen und dann ein neues Dokument erstellen auf der Grundlage dieser Informationen selbst.

Andere Tipps

Mit POI meine Lösung ist:

public static void merge(InputStream src1, InputStream src2, OutputStream dest) throws Exception {
    OPCPackage src1Package = OPCPackage.open(src1);
    OPCPackage src2Package = OPCPackage.open(src2);
    XWPFDocument src1Document = new XWPFDocument(src1Package);        
    CTBody src1Body = src1Document.getDocument().getBody();
    XWPFDocument src2Document = new XWPFDocument(src2Package);
    CTBody src2Body = src2Document.getDocument().getBody();        
    appendBody(src1Body, src2Body);
    src1Document.write(dest);
}

private static void appendBody(CTBody src, CTBody append) throws Exception {
    XmlOptions optionsOuter = new XmlOptions();
    optionsOuter.setSaveOuter();
    String appendString = append.xmlText(optionsOuter);
    String srcString = src.xmlText();
    String prefix = srcString.substring(0,srcString.indexOf(">")+1);
    String mainPart = srcString.substring(srcString.indexOf(">")+1,srcString.lastIndexOf("<"));
    String sufix = srcString.substring( srcString.lastIndexOf("<") );
    String addPart = appendString.substring(appendString.indexOf(">") + 1, appendString.lastIndexOf("<"));
    CTBody makeBody = CTBody.Factory.parse(prefix+mainPart+addPart+sufix);
    src.set(makeBody);
}

Mit docx4j meine Lösung ist:

public class MergeDocx {
    private static long chunk = 0;
    private static final String CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";

    public void mergeDocx(InputStream s1, InputStream s2, OutputStream os) throws Exception {
        WordprocessingMLPackage target = WordprocessingMLPackage.load(s1);
        insertDocx(target.getMainDocumentPart(), IOUtils.toByteArray(s2));
        SaveToZipFile saver = new SaveToZipFile(target);
        saver.save(os);
    }

    private static void insertDocx(MainDocumentPart main, byte[] bytes) throws Exception {
            AlternativeFormatInputPart afiPart = new AlternativeFormatInputPart(new PartName("/part" + (chunk++) + ".docx"));
            afiPart.setContentType(new ContentType(CONTENT_TYPE));
            afiPart.setBinaryData(bytes);
            Relationship altChunkRel = main.addTargetPart(afiPart);

            CTAltChunk chunk = Context.getWmlObjectFactory().createCTAltChunk();
            chunk.setId(altChunkRel.getId());

            main.addObject(chunk);
    }
}

Es ist sicher sieht aus wie POI können mit docx Dateien arbeiten. Versuchen Sie, um herauszufinden, wie sie fusionieren?

Wie Klartext aus einer DOCX-Datei mit der neuen OOXML-Unterstützung in Apache POI 3.5?

Aspose API ist die bisher beste für das Zusammenführen Wort doc oder docx-Dateien so weit, aber das ist nicht frei oder Open Source, wenn Sie eine freie und Open-Source-Tools benötigen gibt es einige API Sie wählen können, können Sie feststellen, eine Überprüfung auf sich hier,

http://www.esupu.com/open -source-office-Dokument-java-api-review /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top