标签: docx4j

如何使用Java将.docx的段落复制到另一个.docx并保留样式

我试图将内容从.docx中的特定段落复制到另一个空的.docx.我遇到的问题是来自source.docx的样式,项目符号,编号等未保留在目标.docx中.这是我的代码

任何人都可以告诉我上面的代码中添加了哪些更改?提前致谢!!

public class WordFinal {

        public static void main(String[] args) throws IOException, XmlException {

        XWPFDocument doc = new XWPFDocument(new FileInputStream("source.docx"));

        XWPFDocument destDoc =new XWPFDocument(); 

        OutputStream out = new FileOutputStream("Destination.docx"); 

        XWPFParagraph pr =doc.getParagraphs()[1];

        String copy=pr.getText();

        XWPFParagraph paragraphOne = destDoc.createParagraph(); 

        XWPFRun paragraphOneRunOne = paragraphOne.createRun();

        paragraphOneRunOne.setText(copy);

        destDoc.write(out);

         }
             }
Run Code Online (Sandbox Code Playgroud)

java ms-word apache-poi docx4j

5
推荐指数
1
解决办法
7014
查看次数

将WordprocessingMLPackage保存到ByteArrayInputStream

如何将org.docx4j.openpackaging.packages.WordprocessingMLPackage实例保存到ByteArrayInputStream中,然后可以从服务器下载.

谢谢.

java docx openxml docx4j

5
推荐指数
1
解决办法
5445
查看次数

无法在 JBoss 7 中使用 docx4j

我能够使用 docx4j ( http://www.docx4java.org )成功创建一个简单的项目。这个简单的项目成功地创建并写入了 .docx 文档。现在我试图在一个更大的项目中完成同样的事情。这个更大的项目是一个在 JBoss AS 7.1 中运行的 web 应用程序。但是,在我的第一个与 docx4j 相关的代码行中:

WordprocessingMLPackage wmlp = WordprocessingMLPackage.createPackage();
Run Code Online (Sandbox Code Playgroud)

它遇到了一个错误:

java.lang.NoClassDefFoundError: Could not initialize class org.docx4j.jaxb.Context
    at org.docx4j.openpackaging.parts.JaxbXmlPart.<init>(JaxbXmlPart.java:79) [docx4j-2.8.1.jar:]
    at org.docx4j.openpackaging.parts.JaxbXmlPartXPathAware.<init>(JaxbXmlPartXPathAware.java:64) [docx4j-2.8.1.jar:]
    at org.docx4j.openpackaging.parts.WordprocessingML.DocumentPart.<init>(DocumentPart.java:157) [docx4j-2.8.1.jar:]
    at org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.<init>(MainDocumentPart.java:76) [docx4j-2.8.1.jar:]
    at org.docx4j.openpackaging.packages.WordprocessingMLPackage.createPackage(WordprocessingMLPackage.java:432) [docx4j-2.8.1.jar:]
    at org.docx4j.openpackaging.packages.WordprocessingMLPackage.createPackage(WordprocessingMLPackage.java:421) [docx4j-2.8.1.jar:]
    at foo.servlets.bar.DocxServlet.doGet(DocxServlet.java:101) [classes:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at foo.includes.other.ServletNameSetFilter.doFilter(ServletNameSetFilter.java:83) [fooClasses.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at foo.includes.other.HtmlEscapeFilter.doFilter(HtmlEscapeFilter.java:67) [fooClasses.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at foo.includes.other.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:64) [fooClasses.jar:] …
Run Code Online (Sandbox Code Playgroud)

docx4j jboss7.x

5
推荐指数
1
解决办法
5529
查看次数

docx4j 创建未编号/项目符号列表

我想在我的 Word 文档中使用 docx4j 创建一个带有项目符号的未编号列表。我发现下面的代码应该可以完成这项工作。但无论我尝试什么,生成的列表都是一个编号列表!我使用Word 2010,德语版和docx4j-2.8.1。

    wordMLPackage = WordprocessingMLPackage.createPackage();

    ObjectFactory factory = new org.docx4j.wml.ObjectFactory();
    P p = factory.createP();

    org.docx4j.wml.Text t = factory.createText();
    t.setValue(text);

    org.docx4j.wml.R run = factory.createR();
    run.getContent().add(t);

    p.getContent().add(run);

    org.docx4j.wml.PPr ppr = factory.createPPr();

    p.setPPr(ppr);

    // Create and add <w:numPr>
    NumPr numPr = factory.createPPrBaseNumPr();
    ppr.setNumPr(numPr);

    // The <w:ilvl> element
    Ilvl ilvlElement = factory.createPPrBaseNumPrIlvl();
    numPr.setIlvl(ilvlElement);
    ilvlElement.setVal(BigInteger.valueOf(0));

    // The <w:numId> element
    NumId numIdElement = factory.createPPrBaseNumPrNumId();
    numPr.setNumId(numIdElement);
    numIdElement.setVal(BigInteger.valueOf(1));

    wordMLPackage.getMainDocumentPart().addObject(p);
Run Code Online (Sandbox Code Playgroud)

有人可以帮我生成一个真正的无序、项目符号列表吗?!

list docx4j

5
推荐指数
1
解决办法
5291
查看次数

如何使用docx4j在word中添加合并字段?

我能够将文本和段落添加到单词中,并用文本替换任何合并字段,但我需要使用docx4j添加新的合并字段来创建单词模板.我怎样才能做到这一点?

我是否wordMLPackage.getMainDocumentPart().addTargetPart(targetpart);用于添加合并字段.如果是这样的话?

编辑:

将示例单词上传到http://webapp.docx4java.org/OnlineDemo/PartsList.html和对象表示部分后,我可能需要添加org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart对象?

但我仍然不明白如何添加Mergefield.我还生成了以下xml来找到我能得到的任何线索:

<w:document xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:ns21="urn:schemas-microsoft-com:office:powerpoint" xmlns:ns23="http://schemas.microsoft.com/office/2006/coverPageProps" xmlns:dsp="http://schemas.microsoft.com/office/drawing/2008/diagram" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:odx="http://opendope.org/xpaths" xmlns:odgm="http://opendope.org/SmartArt/DataHierarchy" xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram" xmlns:ns17="urn:schemas-microsoft-com:office:excel" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:odi="http://opendope.org/components" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:ns32="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:ns30="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" xmlns:ns12="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" xmlns:ns31="http://schemas.openxmlformats.org/drawingml/2006/compatibility" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:odq="http://opendope.org/questions" xmlns:ns8="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:odc="http://opendope.org/conditions" xmlns:oda="http://opendope.org/answers">
    <w:body>
        <w:p w:rsidR="00F66879" w:rsidP="00E80FA3" w:rsidRDefault="003B0B3A">
            <w:r>
                <w:t>Dear</w:t>
            </w:r>
            <w:r w:rsidR="00E80FA3">
                <w:t xml:space="preserve"> </w:t>
            </w:r>
            <w:fldSimple w:instr=" MERGEFIELD  lastName  \* MERGEFORMAT ">
                <w:r w:rsidR="005C0283">
                    <w:rPr>
                        <w:noProof/>
                    </w:rPr>
                    <w:t>«lastName»</w:t>
                </w:r>
            </w:fldSimple>
            <w:r w:rsidR="00E80FA3">
                <w:t>,</w:t>
            </w:r>
        </w:p>
        <w:p w:rsidR="00532EBF" w:rsidP="00E80FA3" w:rsidRDefault="00532EBF">
            <w:r> …
Run Code Online (Sandbox Code Playgroud)

java docx4j

5
推荐指数
1
解决办法
2404
查看次数

Apache FOP返回"行中的列号或单元格数溢出了为表指定的fo:table-columns的数量"

我正在通过FOP运行FO文件,并在下面收到错误消息:

WARNING: The following feature isn't implemented by Apache FOP, yet: table-layou
t="auto" (on fo:table) (See position 2:753)
May 22, 2014 11:50:00 AM org.apache.fop.cli.Main startFOP
SEVERE: Exception
org.apache.fop.apps.FOPException: org.apache.fop.fo.ValidationException: The col
umn-number or number of cells in the row overflows the number of fo:table-column
s specified for the table. (See position 2:914)
javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException:
 The column-number or number of cells in the row overflows the number of fo:tabl
e-columns specified for the table. (See position 2:914)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:303)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:130) …
Run Code Online (Sandbox Code Playgroud)

apache pdf xsl-fo apache-fop docx4j

5
推荐指数
1
解决办法
3544
查看次数

ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException

所以我们又来了。我的头在我的电脑上敲打了大约几个小时,我不知道该怎么做。在我的本地 PC 上,我运行来自Intellij Idea的 java 代码。有用。现在我必须创建jar文件以使其能够在某些远程服务器上使用。我在项目设置中添加了我的程序需要的所有库和 jar(在工件部分添加了库)。但它在远程服务器上运行不起作用。我的程序需要什么导入:

import org.docx4j.dml.CTBlip;
import org.docx4j.jaxb.XPathBinderAssociationIsPartialException;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.PartName;
import org.docx4j.openpackaging.parts.relationships.RelationshipsPart;
import org.docx4j.relationships.Relationship;

import javax.xml.bind.JAXBException;
import java.io.File;
import java.util.List;
Run Code Online (Sandbox Code Playgroud)

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException
Caused by: java.lang.ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: Main. Program will exit.
Run Code Online (Sandbox Code Playgroud)

那么是创建jar的问题吗?我错过了什么?

java intellij-idea docx4j

5
推荐指数
1
解决办法
2988
查看次数

docx4j XHTMLImporter忽略了(不间断空格)

从docx4j所述XHTMLImporter未进行转换NBSP&到MS Word非中断空格.

使用以下代码:

public void convert() throws Exception {



    String stringFromFile = FileUtils.readFileToString(new File("tmp.xhtml"), "UTF-8");

    String unescaped = stringFromFile;
    System.out.println("Unescaped: " + unescaped);


    // Setup font mapping
    RFonts rfonts = Context.getWmlObjectFactory().createRFonts();
    rfonts.setAscii("Century Gothic");
    XHTMLImporterImpl.addFontMapping("Century Gothic", rfonts);

    // Create an empty docx package
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();

    NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
    wordMLPackage.getMainDocumentPart().addTargetPart(ndp);
    ndp.unmarshalDefaultNumbering();

    // Convert the XHTML, and add it into the empty docx we made
    XHTMLImporter XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
    XHTMLImporter.setHyperlinkStyle("Hyperlink");

    wordMLPackage.getMainDocumentPart().getContent().addAll(
            XHTMLImporter.convert(unescaped, null) );

    System.out.println(
            XmlUtils.marshaltoString(wordMLPackage.getMainDocumentPart().getJaxbElement(), …
Run Code Online (Sandbox Code Playgroud)

xhtml docx docx4j

5
推荐指数
1
解决办法
661
查看次数

在java中将html + css(印刷媒体)转换为msword

这是我的情况。我有一个HTML / CSS(CSS装有打印介质的性能如@page@bottom-center等)的资源,其通过转换为PDFflying-saucer就好了。

现在,我还需要将相同的资源转换为 msword(doc 或 docx)格式。

我曾尝试使用docx4j-ImportXHTMLdocuments4j库,但不幸的是我无法获得所需的结果,尤其是使用样式表的打印媒体属性时。是否有任何需要进行的特殊设置或库不支持它?理想情况下,我希望 pdf 和 docx 输出看起来几乎相同。

非常感谢

示例资源:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.pleft</groupId>
    <artifactId>html2word</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j-ImportXHTML</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.7</version>
        </dependency>

        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>flying-saucer-pdf</artifactId>
            <version>9.0.6</version>
        </dependency>
    </dependencies>

</project>
Run Code Online (Sandbox Code Playgroud)

html2word.java

import com.lowagie.text.DocumentException;
import org.docx4j.convert.in.xhtml.XHTMLImporterImpl;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Html2Word …
Run Code Online (Sandbox Code Playgroud)

java ms-word docx4j documents4j

5
推荐指数
1
解决办法
256
查看次数

使用Java将docx文件转换为PDF

我正在寻找一些"稳定"方法将DOCX文件从MS WORD转换为PDF.从现在开始,我已经将OpenOffice作为监听器使用,但它经常挂起.问题是我们遇到许多用户想要同时将SXW,DOCX文件转换为PDF的情况.还有其他可能吗?我尝试了这个网站的例子:https://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-java/但输出结果不好(转换后的文件)有错误和布局相当修改).

这是"源"docx文档: 在此输入图像描述

这里是用docx4j转换的文档,文档中有一些异常文本.此外,右上角的文字也丢失了.

在此输入图像描述

这个是使用OpenOffice创建的PDF,从docx转换为pdf.有些文字缺少"右上角"

在此输入图像描述

是否有其他选项将docx转换为PDF格式的pdf?

java pdf docx4j

5
推荐指数
1
解决办法
9870
查看次数