如何使用Docx4j将字体更改为新段落?

时间:2018-09-26 15:51:30

标签: java fonts docx docx4j

我有一个DocxDocument类,该类具有一个静态的 ObjectFactory 对象,静态的 WordprocessingMLPackage 对象和一个 MainDocumentPart 对象。理想情况下,您将使用 addTextWithFont(“ Arial”,“ Hello”)

我正在尝试创建一种方法,该方法添加带有您将其作为参数传递的字体的段落。我相信我需要在Rpr中添加带有PhysicalFont的RFonts对象,但是它不起作用。

    public void addTextWithFont(String fontName, String text) {
        PhysicalFont font = PhysicalFonts.get(fontName);
        RFonts fonts = factory.createRFonts();
        fonts.setAscii(fontName);

        // This is the object we will add
        P p = factory.createP();

        // Create object for first run and add it to the P object
        R run = factory.createR();
        p.getContent().add(run);

        // Create rpr object
        RPr rpr = factory.createRPr();
        rpr.setRFonts(fonts);
        run.setRPr(rpr);

        // Create text object
        Text t = factory.createText();
        t.setValue(text);
        run.getContent().add(t);

        this.mainDocumentPart.addObject(p);

谢谢

1 个答案:

答案 0 :(得分:0)

您不需要PhysicalFont。你的东西看起来不错。

您还可以添加:

fonts.setCs(fontName);
fonts.setHAnsi(fontName);

您可以使用以下方法检查结果:

   System.out.println(XmlUtils.marshaltoString(p));

请记住,您可以使用docx4j Helper Word AddIn或docx4j webapp从合适的示例中生成类似的代码。