为有中文需求的客户提供多渠道中文技术支持.

Thu Jun 08, 2023 1:38 am

请问一下,章节的序号,下面的样式 如何设置:

第一篇
第一章
1.1
1.1.1
1.1.1.1

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Thu Jun 08, 2023 8:48 am

您好,

感谢您的咨询。
请使用附件中的代码来实现您的需求。

如果您还有其他任何问题,请随时联系我们。

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Fri Jun 09, 2023 3:02 am

请问一下 参考文献 例子如下:
[1] aaa
[2] bbb
[3] ccc
像这种参考文献中,单独给序号
[1]
[2]
[3]
如何加域?
(PS: [1] aaa
这一条参考文献内容是由string类型 [ ,数字,],参考文献内容 拼成的)

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Fri Jun 09, 2023 3:07 am

然后还有 如何给下面这种自己拼接的章节序号,和由代码生成的章节序号统一加域?
Code: Select all
第一篇
第一章
1.1
1.1.1
1.1.1.1

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Fri Jun 09, 2023 9:31 am

您好,

感谢您的反馈。
请参考附件中的代码来实现您的需求。另外,您提到的“给章节序号添加域”我不太明白,请提供您想要的结果文件供我们参考。您可以直接附在这里或通过邮箱([email protected])发送给我们。提前感谢。

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Mon Jun 12, 2023 1:47 am

Code: Select all
请问一下 参考文献 例子如下:
[1] aaa
[2] bbb
[3] ccc
像这种参考文献中,单独给序号
[1]
[2]
[3]
如何加域?
(PS: [1] aaa
这一条参考文献内容是由string类型 [ ,数字,],参考文献内容 拼成的)

这个里面的 [ ,数字,],参考文献内容 中的这个数字也是由我自己计算出来的,不是生成的,这种的请问应该怎么弄??

这个参考文献内容所有都是计算,查询到的数据拼接成的string
Code: Select all
String text = "[" + num + "] "+content;

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Mon Jun 12, 2023 3:04 am

您好,

感谢您的进一步反馈。
请使用下面的代码添加域。请确认添加的域类型是否是你想要的。如果不是,请提供您理想的结果文件供我们参考。您可以直接附在这里或通过邮箱([email protected])发送给我们。提前感谢。
Code: Select all
Document document = new Document();
Section section = document.addSection();
String[] contents = new String[]{"aaa","bbb","ccc"};
for (int i = 0; i < contents.length; i++) {
    String content = contents[i];
    Paragraph paragraph = section.addParagraph();
    paragraph.appendText("[");
    //添加数字域,由内部算法计算获得
    paragraph.appendField("field1", FieldType.Field_Auto_Num);
    paragraph.appendText("] "+content);
}
document.saveToFile("output.docx", FileFormat.Docx_2013);

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Tue Jun 13, 2023 1:06 am

请问一下我还需要设置这个序号和内容的文字字体和大小,用下面这种方式应该怎么设置??
Code: Select all
 Paragraph paragraph = section.addParagraph();
    paragraph.appendText("[");
    //添加数字域,由内部算法计算获得
    paragraph.appendField("field1", FieldType.Field_Auto_Num);
    paragraph.appendText("] "+content);

之前我是这么实现的
Code: Select all
Paragraph para1 = sec.addParagraph();
                    TextRange tr1 = para1.appendText("[" + num + "] " + reVO.getContent());
                    tr1.getCharacterFormat().setFontName("宋体");
                    tr1.getCharacterFormat().setFontSize(10.5f);
                    para1.getFormat().setHorizontalAlignment(HorizontalAlignment.Justify);//设置两端对齐

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Tue Jun 13, 2023 1:54 am

您好,

请参考下面的代码设置段落中文本和域的字体大小和字体名。
Code: Select all
Paragraph paragraph = section.addParagraph();
TextRange range = paragraph.appendText("[");
range.getCharacterFormat().setFontName("宋体");
range.getCharacterFormat().setFontSize(10.5f);
//添加数字域
Field field = paragraph.appendField("field1", FieldType.Field_Auto_Num);
field.getCharacterFormat().setFontSize(10.5f);

range =paragraph.appendText("] "+content);
range.getCharacterFormat().setFontName("宋体");
range.getCharacterFormat().setFontSize(10.5f);
paragraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Justify);//设置两端对齐

如有任何其他问题,请随时联系我们。

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Tue Jun 13, 2023 6:46 am

请问一下,我是这么设置的,为什么章节的序号(sectionNum这个字段的数据)设置的字体,文字大小,是否斜体不生效?
Code: Select all
String sectionNum = "第一章";
String title1 = "今天天气真好";
 Paragraph para0 = sec.addParagraph();
                //添加域
                Field field = para0.appendField(sectionNum, FieldType.Field_Title);
                field.getCharacterFormat().setFontSize(26);
                field.getCharacterFormat().setFontName("黑体");
                field.getCharacterFormat().setBold(true);
                field.getCharacterFormat().setItalic(false);

                TextRange tr0 = para0.appendText(" " + title1);
                tr0.getCharacterFormat().setFontSize(26);
                tr0.getCharacterFormat().setFontName("黑体");
                tr0.getCharacterFormat().setBold(true);
                tr0.getCharacterFormat().setItalic(false);
                //间距 段前 段后
                para0.getFormat().setBeforeAutoSpacing(false);
                para0.getFormat().setBeforeSpacing(80);
                para0.getFormat().setAfterAutoSpacing(false);
                para0.getFormat().setAfterSpacing(40);
                //行距 最小值 12磅
                para0.getFormat().setLineSpacingRule(LineSpacingRule.At_Least);
                para0.getFormat().setLineSpacing(12);
                //对齐方式 两端对齐
                para0.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
                para0.applyStyle(BuiltinStyle.Heading_1);

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Tue Jun 13, 2023 7:54 am

您好,

请注意设置了域文本的字体大小等样式之后,需要使用代码"document.isUpdateFields(true);"来使样式生效。但我测试之后发现,使用更新域的代码,结果文件域样式仍然没有生效。我将这个问题提交给我们的开发团队进行调查处理了,问题编号为SPIREDOC-9530。一旦此问题解决,我会及时告知您的。抱歉给您带来不便。

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Tue Jun 13, 2023 8:04 am

好的 谢谢

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Wed Jun 14, 2023 6:21 am

富文本内容如下:
Code: Select all
String content ="<img src=\"https://ewebeditor-prod.obs.cn-south-1.myhuaweicloud.com:443/ewebeditor_image%2F20230613093937354001.png\" border=\"0\" image-md5n723j3a00=\"image-md5n723j3a00\" id=\"image-md5n723j3a00\">\n<p style=\"margin-top: 0px; margin-bottom: 0px; text-indent: 2em; line-height: 1.86;\"><small href-data=\"image-md5n723j3a00\" href-text=\"图 4-1\" href-image=\"image\" id=\"id-ng1hvech6q00\" contenteditable=\"false\" image-md5n723j3a00=\"image-md5n723j3a00\">图 4-1 ~~asdf~~~</small><br>\n</p>" ;

解析富文本,获取节点如下
Code: Select all
Element docE = Jsoup.parseBodyFragment(content).body();
//引用标签
            Elements as = docE.select("a");
            //图片
            Elements imgs = docE.select("img");
            Elements smalls = docE.select("small");
            if (!imgs.isEmpty()) {
                for (Element img : imgs) {
                    if (!img.attributes().toString().contains("wordeq")) {
                        String id = img.attributes().get("id");
                        for (Element small : smalls) {
                            if (small.attributes().toString().contains(id)) {
                                TextNode node = (TextNode) small.childNode(0);
                                node.text("图 " + "1.1 " + getTitleName(node.toString()));
                            }
                        }
                    }
                }

目的是把图片的图题编号(原来是 图 4-1)替换成自己拼接的内容(图 1.1),其中这个图题编号 "1.1" 有什么方法可以在替换内容这里加上域吗?

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Wed Jun 14, 2023 9:32 am

您好,

感谢您的咨询。
我们查看了您的代码,好像没有和我们产品相关的操作,可以麻烦您详细解释一下您的需求吗?感谢您的帮助。

Best regards,
Triste
E-iceblue support team
User avatar

Triste.Dai
 
Posts: 1000
Joined: Tue Nov 15, 2022 3:59 am

Sun Jun 25, 2023 2:06 am

请问一下,设置章节序号如下代码
Code: Select all
public ListStyle numberStyle(Document doc) {
        //create list style
        ListStyle numberList = new ListStyle(doc, ListType.Numbered);
        numberList.setName("numberList");

        numberList.getLevels().get(1).setNumberPrefix("\u0000.");
        numberList.getLevels().get(1).setNumberSufix("");
        numberList.getLevels().get(1).getCharacterFormat().setBold(true);
        numberList.getLevels().get(1).getCharacterFormat().setItalic(false);
        numberList.getLevels().get(1).getCharacterFormat().setFontSize(18);
        numberList.getLevels().get(1).getCharacterFormat().setFontName("黑体");
        numberList.getLevels().get(1).setPatternType(ListPatternType.Arabic);

        numberList.getLevels().get(2).setNumberPrefix("\u0000.\u0001.");
        numberList.getLevels().get(2).setNumberSufix("");
        numberList.getLevels().get(2).setPatternType(ListPatternType.Arabic);
        numberList.getLevels().get(2).getCharacterFormat().setBold(true);
        numberList.getLevels().get(2).getCharacterFormat().setItalic(false);
        numberList.getLevels().get(2).getCharacterFormat().setFontSize(16);
        numberList.getLevels().get(2).getCharacterFormat().setFontName("黑体");

        numberList.getLevels().get(3).setNumberPrefix("\u0000.\u0001.\u0002.");
        numberList.getLevels().get(3).setNumberSufix("");
        numberList.getLevels().get(3).setPatternType(ListPatternType.Arabic);
        numberList.getLevels().get(3).getCharacterFormat().setBold(true);
        numberList.getLevels().get(3).getCharacterFormat().setItalic(false);
        numberList.getLevels().get(3).getCharacterFormat().setFontSize(15);
        numberList.getLevels().get(3).getCharacterFormat().setFontName("黑体");

        doc.getListStyles().add(numberList);
        return numberList;
    }

Paragraph para3 = sec.addParagraph();
                para3.getListFormat().applyStyle(numberList.getName());
                para3.getListFormat().setListLevelNumber(1);
                para3.getListFormat().getCurrentListLevel().setNumberAlignment(ListNumberAlignment.Left);
                para3.getListFormat().getCurrentListLevel().setTextPosition(0);
                para3.getListFormat().getCurrentListLevel().setNumberPosition(0);
                TextRange tr3 = para3.appendText(" " + title1);
                tr3.getCharacterFormat().setFontSize(18);
                tr3.getCharacterFormat().setBold(true);
                tr3.getCharacterFormat().setItalic(false);
                tr3.getCharacterFormat().setFontName("黑体");
                para3.applyStyle(BuiltinStyle.Heading_3);


导出结果如下:
Code: Select all
第1章(该序号为代码拼接,再sec.addParagraph() 插入)
1.1
1.2
1.3

请问,如何设置可以实现:
Code: Select all
第1章
1.1
1.2
第2章
2.1
2.2

PS:其中第1章 和第2章 均为代码拼接,再sec.addParagraph() 插入生成

hannibal22
 
Posts: 52
Joined: Wed Aug 17, 2022 7:01 am

Return to 中文技术支持

cron