【问题标题】:How do you change the font to a new paragraph using Docx4j?如何使用 Docx4j 将字体更改为新段落?
【发布时间】:2019-03-02 11:17:20
【问题描述】:

我有一个 DocxDocument 类,它有一个静态 ObjectFactory 对象、静态 WordprocessingMLPackage 对象和一个 MainDocumentPart 对象。理想情况下,您会使用这种方法,例如 addTextWithFont("Arial", "Hello")

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

    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);

谢谢

【问题讨论】:

    标签: java fonts docx docx4j


    【解决方案1】:

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

    您还可以添加:

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

    您可以通过以下方式检查您的结果:

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

    请记住,您可以使用 docx4j Helper Word AddIn 或 docx4j webapp 从一个合适的示例生成这样的代码。

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多