标签: docx4j

添加后,Docx4j缺少表格的边框

我在创建表时遇到了问题.继承我的代码:

Tbl projectTable = TblFactory.createTable(rows, cols, cellWidthTwips);
Tr tr = (Tr) projectTable.getContent().get(0); 
Tc tc = (Tc) tr.getContent().get(0);
tc.getContent().add( this.mainDocument.createParagraphOfText("Cell 1"));

List<Object> lines = mainDocument.getContent();
lines.add(5, projectTable);
Run Code Online (Sandbox Code Playgroud)

该表添加到所需位置,但没有任何边框.

当我使用该
wordMLPackage.getMainDocumentPart().addObject(projectTable); 方法时,一切正常.带边框的通缉表.

我的错误在哪里:(?

编辑:这里有两个链接到我的XML代码的图像(无法上传,因为我没有足够的声誉)

XML第1部分

XML第2部分

这是复制粘贴的XML代码:

-<w:p w:rsidP="00CD4679" w:rsidRDefault="00F63A9F" w:rsidR="00CD4679" w:rsidRPr="00CD4679">-<w:pPr>-<w:rPr><w:b/></w:rPr></w:pPr>-<w:r>-<w:rPr><w:b/></w:rPr><w:t>test</w:t></w:r></w:p>-<w:tbl>-<w:tblPr><w:tblW w:w="0" w:type="auto"/><w:tblLook w:val="04A0"/></w:tblPr>-<w:tblGrid><w:gridCol w:w="2017"/><w:gridCol w:w="1473"/><w:gridCol w:w="1451"/><w:gridCol w:w="1492"/><w:gridCol w:w="1423"/><w:gridCol w:w="1432"/></w:tblGrid>-<w:tr w:rsidR="00B94E3A" w:rsidTr="00F63A9F">-<w:tc>-<w:tcPr><w:tcW w:w="2017" w:type="dxa"/></w:tcPr><w:p w:rsidRDefault="00B94E3A" w:rsidR="00B94E3A"/>-<w:p w:rsidRDefault="00F63A9F" w:rsidR="00B94E3A">-<w:r><w:t>test</w:t></w:r></w:p></w:tc>-<w:tc>-<w:tcPr><w:tcW w:w="1473" w:type="dxa"/></w:tcPr>-<w:p w:rsidRDefault="00F63A9F" w:rsidR="00B94E3A">-<w:r><w:t>test</w:t></w:r></w:p></w:tc>-<w:tc>-<w:tcPr><w:tcW w:w="1451" w:type="dxa"/></w:tcPr>-<w:p w:rsidRDefault="00F63A9F" w:rsidR="00B94E3A">-<w:r><w:t>test</w:t></w:r></w:p></w:tc>-<w:tc>-<w:tcPr><w:tcW w:w="1492" w:type="dxa"/></w:tcPr>-<w:p w:rsidRDefault="00F63A9F" w:rsidR="00B94E3A">-<w:r><w:t>test</w:t></w:r></w:p></w:tc>-<w:tc>-<w:tcPr><w:tcW w:w="1423" w:type="dxa"/></w:tcPr><w:p w:rsidRDefault="00B94E3A" w:rsidR="00B94E3A"/>-<w:p w:rsidRDefault="00F63A9F" w:rsidR="00B94E3A">-<w:r><w:t>test</w:t></w:r></w:p></w:tc>-<w:tc>-<w:tcPr><w:tcW w:w="1432" w:type="dxa"/></w:tcPr><w:p w:rsidRDefault="00B94E3A" w:rsidR="00B94E3A"/>-<w:p w:rsidRDefault="00F63A9F" …
Run Code Online (Sandbox Code Playgroud)

border docx4j

2
推荐指数
1
解决办法
1898
查看次数

我使用docx4j来读取.docx文件,我需要获取文档的段落并替换字符串

我使用docx4j来读取和解析.docx文件,但是当我遍历段落时,它会在一次传递中读取而不是所有段落.下面是我正在使用的代码示例.

private void replaceAcrAndDef(String acrName, String acrParensName, String oldDef, String newDef){
    String XPATH_TO_SELECT_TEXT_NODES = "//w:t";
    List<Object> paragraphs = template.getMainDocumentPart().getJAXBNodesViaXPath(XPATH_TO_SELECT_TEXT_NODES, true);
    for (Object obj : paragraphs){
        Text text = (Text) ((JAXBElement)obj).getValue();
        String textValue = text.getValue();
        System.out.println(textValue);
 }
Run Code Online (Sandbox Code Playgroud)

在上面的for循环的一次传递期间,这将作为第一段读取 -

"团队通过为任务,测试和管理以及一般服务网络和系统提供直接的MDA经验,对这些要求有深刻的理解.通过对任务,流程和优先级的既定理解,培养低风险,反应灵敏的团队的好处.使用基于综合的"

但它缺少该段的最后部分.这将在连续的传球中出现.我在这做错了什么.

该段的全部内容如下:

团队通过为任务,测试和管理以及一般服务网络和系统提供直接的MDA经验,对需求有深刻的理解.低风险,反应迅速的团队的好处是对任务,流程和优先事项有着深刻的理解.我们使用基于角色的综合信息技术(RBA)方法与合作承包商,现有流程和补充流程的增加协同工作.

我不知道是否有办法获得整个段落,但是如果有的话会很好,因为我需要逐段更换字符串.

xpath ms-word jaxb docx4j

2
推荐指数
1
解决办法
9525
查看次数

docx4j找到并替换

我有一些占位符的docx文档.现在我应该用其他内容替换它们并保存新的docx文档.我从docx4j开始,发现了这个方法:

public static List<Object> getAllElementFromObject(Object obj, Class<?> toSearch) {
    List<Object> result = new ArrayList<Object>();
    if (obj instanceof JAXBElement) obj = ((JAXBElement<?>) obj).getValue();

    if (obj.getClass().equals(toSearch))
        result.add(obj);
    else if (obj instanceof ContentAccessor) {
        List<?> children = ((ContentAccessor) obj).getContent();
        for (Object child : children) {
            result.addAll(getAllElementFromObject(child, toSearch));
        }
    }
    return result;
}

public static void findAndReplace(WordprocessingMLPackage doc, String toFind, String replacer){
    List<Object> paragraphs = getAllElementFromObject(doc.getMainDocumentPart(), P.class);
    for(Object par : paragraphs){
        P p = (P) par;
        List<Object> texts = getAllElementFromObject(p, Text.class);
        for(Object …
Run Code Online (Sandbox Code Playgroud)

java docx docx4j

2
推荐指数
3
解决办法
1万
查看次数

如何插入分页符?

在打印一些段落后,我需要插入一个分页符。我发现了一个用于插入分页符的函数,但它仅插入一个空段而不插入分页符。

这是功能:

private static void addPageBreak() {
    MainDocumentPart documentPart = wp.getMainDocumentPart();

    Br breakObj = new Br();
    breakObj.setType(STBrType.PAGE);

    P paragraph = factory.createP();
    paragraph.getContent().add(breakObj);
    documentPart.getJaxbElement().getBody().getContent().add(paragraph);
}
Run Code Online (Sandbox Code Playgroud)

如何修复此功能以插入整个分页符?

java docx4j

2
推荐指数
1
解决办法
3244
查看次数

Docx4J命令行将doc/docx文件转换为html

我一直在尝试将doc/docx文件转换为html,我发现最好的选择是docx4j.任何人都可以帮我直接命令行来完成这项工作.

我试过了:

java -cp docx4j.jar:log4j-1.2.15.jar org.docx4j.samples.CreateHtml [input.docx]
Run Code Online (Sandbox Code Playgroud)

作为回应,我希望HTML输出(无论是控制台还是文件).

java docx4j

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

将 DOCX 转换为包含图像的 HTML

我正在使用 DOCX4J 将 DOCX 转换为 HTML。我已成功完成转换并获得了 html 格式。我将使用 html 格式将其嵌入为 EMAIL 正文以发送电子邮件。但我有一些问题,如下所示....

  1. 无法在电子邮件正文中显示图像
  2. 失去空间和子弹

请找到我写的代码,

WordprocessingMLPackage wordMLPackage;
wordMLPackage = Docx4J.load(new java.io.File(resourcePath2));
HTMLSettings htmlSettings = Docx4J.createHTMLSettings();
htmlSettings.setImageDirPath(imageFolder + resourcePath2 + "_files"); 
htmlSettings.setImageTargetUri(imageFolder +resourcePath2.substring(resourcePath2.lastIndexOf("/")+1) + "_files");
htmlSettings.setWmlPackage(wordMLPackage);

OutputStream os; 
os = new ByteArrayOutputStream();
Docx4jProperties.setProperty("docx4j.Convert.Out.HTML.OutputMethodXML", true);
Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_SAVE_FLAT_XML);
DOCX = ((ByteArrayOutputStream)os).toString();
Run Code Online (Sandbox Code Playgroud)

html java docx docx4j

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

将docx4j库与jboss 7一起使用

我尝试使用pptx4j库生成pptx.我可以成功生成一个pptx.然后我将代码应用于在jboss 7服务器上运行的巨大项目.项目已成功部署在服务器上.但是当我试图运行应用程序时,它会给出以下异常.

java.lang.NoClassDefFoundError:com/sun/xml/internal/bind/marshaller/NamespacePrefixMapper

代码中的后续行发生了该异常.

PresentationMLPackage presentationMLPackage = PresentationMLPackage
                .createPackage(); 
Run Code Online (Sandbox Code Playgroud)

是否有一种特殊的方式在jboss 7服务器上运行docx4j库.我在互联网上搜索更多,但我找不到解决方案.

java docx4j jboss7.x

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

docx4j 中的斜体(强调)段落

我正在使用 Docx4j 从模板创建文档。

我找不到如何创建斜体段落(HTML 中的 <em> )的方法。

这是一个创建 Paragraph 的方法示例,其中有一个选项可以在Bold 中进行

private static org.docx4j.wml.P createParagraph(String paragraphContent, boolean addNewLine, boolean bold) {
    org.docx4j.wml.ObjectFactory factory = Context.getWmlObjectFactory();
    org.docx4j.wml.P p = factory.createP();

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

    org.docx4j.wml.Text text = factory.createText();
    text.setValue(paragraphContent);
    run.getContent().add(text);

    if(bold){
        org.docx4j.wml.RPr rpr = factory.createRPr();       
        org.docx4j.wml.BooleanDefaultTrue b = new org.docx4j.wml.BooleanDefaultTrue();
        b.setVal(true);     
        rpr.setB(b);
        run.setRPr(rpr);
    }

    if (addNewLine) {
        run.getContent().add(factory.createBr());
    }

    return p;
}
Run Code Online (Sandbox Code Playgroud)

有人知道如何制作斜体段落吗?

java docx docx4j

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

在Docx4j生成的Word文档的标题中显示图像

我正在使用Docx4j在swing应用程序中生成一个word文档.我想在标题中添加一个图片.文档已成功创建,但图片未显示.以下是应用程序的代码片段.我使用的是docx4j-nightly-20141016.jar文件.

  import org.docx4j.wml.ObjectFactory;

  public class WordDoc {

      private WordprocessingMLPackage wordMLPackage;
      private ObjectFactory factory;
      private Hdr header;

       public WordDoc() {
      }

      public void createWordDoc() throws Docx4JException, IOException, Exception {

          wordMLPackage = WordprocessingMLPackage.createPackage();
          factory = Context.getWmlObjectFactory();

          Relationship relationship = createHeaderPart();
          createHeaderReference(relationship);

          wordMLPackage.getMainDocumentPart().addParagraphOfText("Hello Word!");

          File file = new File("src/resources/images/logo.jpg");
          byte[] bytes = convertImageToByteArray(file);
          addImageInline(bytes);

          wordMLPackage.save(new java.io.File("src/files/HelloWord14.docx"));

      }

      private Relationship createHeaderPart() throws InvalidFormatException {
          HeaderPart headerPart = new HeaderPart();
          headerPart.setPackage(wordMLPackage);

          headerPart.setJaxbElement(createHeader("Text"));

          return wordMLPackage.getMainDocumentPart().addTargetPart(headerPart);
      }

      private Hdr createHeader(String content) {
          header = factory.createHdr(); …
Run Code Online (Sandbox Code Playgroud)

java swing openxml docx4j

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

Docx4J (Android):如何读取 Word 文档中页眉和页脚的内容

我正在尝试使用 Docx4J ( https://github.com/plutext/Docx4j4Android4 ) 来读取 Word 文件的内容。但是,使用以下代码,我的程序仅读取 Word 文件(存储在documentLines)的正文内容(不读取页眉或页脚)。如何让我的程序读取文件页眉和页脚的内容?

下面是我的代码:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == READ_IN_FILE) { // When a result has been received, check if it is the result for READ_IN_FILE
        if (resultCode == Activity.RESULT_OK) { // heck if the operation to retrieve the Activity's result is successful
            // Attempt to retrieve the file
            try {
                var uri = data?.data // Retrieve the file's resource locator …
Run Code Online (Sandbox Code Playgroud)

java android docx4j kotlin

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

在java中读取.docx文件

我试图在java中读取一个文件,以下是代码:

public void readFile(String fileName){
        try {
        BufferedReader reader= new BufferedReader(new FileReader(fileName)); 
        String line=null;
        while((line=reader.readLine()) != null ){
            System.out.println(line);
        }
        }catch (Exception ex){}
            }
Run Code Online (Sandbox Code Playgroud)

它在txt文件的情况下工作正常.但是在docx文件的情况下,它是打印奇怪的字符.我怎样才能在Java中读取.docx文件.

java docx apache-poi docx4j

0
推荐指数
3
解决办法
3万
查看次数

在 XPage 应用程序中使用 docx4j

我正在尝试在 XPage 应用程序中安装 docx4j 开源 java 库,但到目前为止尚未成功。我已经下载了 docx4j-3.1.0.jar 并将其添加到 domino 服务器和本地计算机上的 \jvm\lib\ext 文件夹中。我还使用 Package Explorer 视图将 docx4j-3.1.0.jar 添加到 WebContent\WEB-INF\lib 文件夹中,然后右键单击 .jar 并选择“构建路径”->“添加到构建路径”这样 .jar 现在就出现在“引用的库”下。

在我用来测试的 Java 类中,我看到消息“此元素没有附加源,并且在附加 Javadoc 中找不到 Javadoc”。我的代码如下:

package TESTPackage;

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class JavaDoc {

  public void createJavaDoc() {

    try {
      WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
      wordMLPackage.getMainDocumentPart().addParagraphOfText("Hello Word!");
      wordMLPackage.save(new java.io.File("C:\\Temp\\HelloWord1.docx"));

    } catch (Exception e) {
      e.printStackTrace();
    }

  }

}
Run Code Online (Sandbox Code Playgroud)

关于我还必须做什么有什么建议吗?

java ms-word docx4j xpages

0
推荐指数
1
解决办法
479
查看次数

将扩展名为“.dotx”的文件(模板)转换为“docx”(Word 文件)

如何使用 POI API 或 Docx4j 将“.dotx”Word 模板转换为纯“.docx”?

java docx apache-poi docx4j

0
推荐指数
1
解决办法
1396
查看次数

标签 统计

docx4j ×13

java ×11

docx ×5

apache-poi ×2

ms-word ×2

android ×1

border ×1

html ×1

jaxb ×1

jboss7.x ×1

kotlin ×1

openxml ×1

swing ×1

xpages ×1

xpath ×1