java poi word 解决启用分栏后 页眉 页脚不生效的问题

一 不分栏

创建页眉

    /**
     * 创建默认页眉
     *
     * @param docx XWPFDocument文档对象
     * @param text 页眉文本
     * @return 返回文档帮助类对象,可用于方法链调用
     * @throws IOException IO异常
     * @throws FileNotFoundException 找不到文件异常
     */
    public static void createDefaultHeader(final XWPFDocument docx, final String text){
        CTP ctp = CTP.Factory.newInstance();
        XWPFParagraph paragraph = new XWPFParagraph(ctp, docx);
        ctp.addNewR().addNewT().setStringValue(text);
        ctp.addNewR().addNewT().setSpace(SpaceAttribute.Space.PRESERVE);

        // 分割线
        CTP splitLine = CTP.Factory.newInstance();
        XWPFParagraph paragraph2 = new XWPFParagraph(splitLine, docx);
        CTBorder bottom = splitLine.addNewPPr().addNewPBdr().addNewTop();
        bottom.setVal(STBorder.Enum.forInt(3));

        CTSectPr sectPr = docx.getDocument().getBody().isSetSectPr() ? docx.getDocument().getBody().getSectPr() : docx.getDocument().getBody().addNewSectPr();
        XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(docx, sectPr);
        XWPFHeader header = policy.createHeader(STHdrFtr.DEFAULT, new XWPFParagraph[] { paragraph,paragraph2 });
        header.setXWPFDocument(docx);
    }

创建页脚(页码)

    public static void createDefaultFooter(final XWPFDocument docx) {
        CTP pageNo = CTP.Factory.newInstance();
        XWPFParagraph footer = new XWPFParagraph(pageNo, docx);
        CTPPr begin = pageNo.addNewPPr();
        begin.addNewPStyle().setVal(STYLE_FOOTER);
        begin.addNewJc().setVal(STJc.CENTER);
        pageNo.addNewR().addNewFldChar().setFldCharType(STFldCharType.BEGIN);
        pageNo.addNewR().addNewInstrText().setStringValue("PAGE  \\* MERGEFORMAT");
        pageNo.addNewR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
        org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR end = pageNo.addNewR();
        CTRPr endRPr = end.addNewRPr();
        endRPr.addNewNoProof();
        endRPr.addNewLang().setVal(LANG_ZH_CN);
        end.addNewFldChar().setFldCharType(STFldCharType.END);
        CTSectPr sectPr = docx.getDocument().getBody().isSetSectPr() ? docx.getDocument().getBody().getSectPr() : docx.getDocument().getBody().addNewSectPr();
        XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(docx, sectPr);
        policy.createFooter(STHdrFtr.DEFAULT, new XWPFParagraph[] { footer });
    }

 设置页边距

    /**
     * 设置页边距 (word中1厘米约等于567)
     *
     * @param document
     * @param left
     * @param top
     * @param right
     * @param bottom
     */
    public static void setDocumentMargin(XWPFDocument document, String left, String top, String right, String bottom) {
        CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
        CTPageMar ctpagemar = sectPr.addNewPgMar();
        if (StringUtils.isNotBlank(left)) {
            ctpagemar.setLeft(new BigInteger(left));
        }
        if (StringUtils.isNotBlank(top)) {
            ctpagemar.setTop(new BigInteger(top));
        }
        if (StringUtils.isNotBlank(right)) {
            ctpagemar.setRight(new BigInteger(right));
        }
        if (StringUtils.isNotBlank(bottom)) {
            ctpagemar.setBottom(new BigInteger(bottom));
        }
        ctpagemar.setHeader(new BigInteger("283"));
        ctpagemar.setFooter(new BigInteger("283"));
    }

二 创建双栏的方法

    public static void main(String[] args) throws Exception {

        XWPFDocument document = new XWPFDocument();
//        setDocumentMargin(document, "567", "567", "567", "567");
//        XWPFHeader header = document.createHeader(HeaderFooterType.DEFAULT);
//        createDefaultHeader(document,"页眉");
//        addPictureForParagraph(document,new FileInputStream("D:\\workspace\\demo\\src\\test\\resources\\7.jpg"), Document.PICTURE_TYPE_JPEG, "", Units.pixelToEMU(117), Units.pixelToEMU(36));
        splitColumn(document);
//        outputMathMl(document);
//        addTableDemo(document);
//        createDefaultFooter(document);
        document.write(new FileOutputStream("D:\\workspace\\demo\\src\\test\\resources\\CreateWordFormulaFromLaTeX.docx"));
    }
private static void splitColumn(XWPFDocument document) {
        document.createParagraph().createRun().setText("111111111111111111111111111111111111111111111111111");

        document.createParagraph().setPageBreak(true);
        XWPFParagraph paragraph = document.createParagraph();
        paragraph.createRun().setText("22222222222222222222222222222222222222222222222222");
        XWPFRun run1 = paragraph.createRun();
        run1.addCarriageReturn();
        paragraph.createRun().setText("4444444444444444444444444444444444444444444");
        document.createParagraph().createRun().setText("33333333333333333333333333333333333333333333333333");

        CTP ctp1 = document.createParagraph().getCTP();
        CTBorder bottom = ctp1.addNewPPr().addNewPBdr().addNewTop();
        bottom.setVal(STBorder.Enum.forInt(3));

        // 分栏
        CTBody body =  document.getDocument().getBody();
        CTSectPr ctSectPr1 = body.addNewP().addNewPPr().addNewSectPr();

        ctSectPr1.addNewCols().setNum(BigInteger.valueOf(1));


        XWPFRun run = document.createParagraph().createRun();
        run.setText("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
        run.setTextHighlightColor("lightGray");
//        body.addNewP().addNewR().addNewT().setStringValue("居中sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
        CTSectPr ctSectPr = body.addNewSectPr();

        ctSectPr.addNewType().setVal(STSectionMark.Enum.forString("continuous"));
        CTColumns ctColumns = ctSectPr.addNewCols();
        ctColumns.setNum(BigInteger.valueOf(2));
        ctColumns.setSep(STOnOff.Enum.forInt(1));
    }

三 分栏情况下设置页眉页脚及页边距的方法

/**
     * 分栏
     * @param document
     */
    private static void splitColumn(XWPFDocument document) {
        document.createParagraph().createRun().setText("111111111111111111111111111111111111111111111111111");

        document.createParagraph().setPageBreak(true);
        XWPFParagraph paragraph = document.createParagraph();
        paragraph.createRun().setText("22222222222222222222222222222222222222222222222222");
        XWPFRun run1 = paragraph.createRun();
        run1.addCarriageReturn();
        paragraph.createRun().setText("4444444444444444444444444444444444444444444");
        document.createParagraph().createRun().setText("33333333333333333333333333333333333333333333333333");

        CTP ctp1 = document.createParagraph().getCTP();
        CTBorder bottom = ctp1.addNewPPr().addNewPBdr().addNewTop();
        bottom.setVal(STBorder.Enum.forInt(3));

        // 分栏
        CTBody body =  document.getDocument().getBody();
        CTSectPr ctSectPr1 = body.addNewP().addNewPPr().addNewSectPr();
        // 设置页边距
        setDocumentMarginForSec(ctSectPr1,"567","567","567","567");

        // 创建页眉
        createHeaderForSec(document,ctSectPr1,"页眉",true);
        // 创建页码
        createFooterForSec(document,ctSectPr1);

        ctSectPr1.addNewCols().setNum(BigInteger.valueOf(1));


        XWPFRun run = document.createParagraph().createRun();
        run.setText("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
        run.setTextHighlightColor("lightGray");
//        body.addNewP().addNewR().addNewT().setStringValue("居中sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
        CTSectPr ctSectPr = body.addNewSectPr();

        ctSectPr.addNewType().setVal(STSectionMark.Enum.forString("continuous"));
        CTColumns ctColumns = ctSectPr.addNewCols();
        ctColumns.setNum(BigInteger.valueOf(2));
        ctColumns.setSep(STOnOff.Enum.forInt(1));
    }

 private static void setDocumentMarginForSec(CTSectPr sectPr,String left,String top, String right, String bottom) {
        CTPageMar ctpagemar = sectPr.addNewPgMar();
        if (!org.springframework.util.StringUtils.isEmpty(left)) {
            ctpagemar.setLeft(new BigInteger(left));
        }
        if (!org.springframework.util.StringUtils.isEmpty(top)) {
            ctpagemar.setTop(new BigInteger(top));
        }
        if (!org.springframework.util.StringUtils.isEmpty(right)) {
            ctpagemar.setRight(new BigInteger(right));
        }
        if (!org.springframework.util.StringUtils.isEmpty(bottom)) {
            ctpagemar.setBottom(new BigInteger(bottom));
        }
        ctpagemar.setHeader(new BigInteger(top).divide(new BigInteger("2")));
        ctpagemar.setFooter(new BigInteger(bottom).divide(new BigInteger("2")));
    }

    private static void createFooterForSec(XWPFDocument document, CTSectPr ctSectPr1) {
        CTP pageNo = CTP.Factory.newInstance();
        XWPFParagraph paragraph = new XWPFParagraph(pageNo, document);
        CTPPr begin = pageNo.addNewPPr();
        begin.addNewPStyle().setVal(STYLE_FOOTER);
        begin.addNewJc().setVal(STJc.CENTER);
        pageNo.addNewR().addNewFldChar().setFldCharType(STFldCharType.BEGIN);
        pageNo.addNewR().addNewInstrText().setStringValue("PAGE   \\* MERGEFORMAT");
        pageNo.addNewR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
        org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR end = pageNo.addNewR();
        CTRPr endRPr = end.addNewRPr();
        endRPr.addNewNoProof();
        endRPr.addNewLang().setVal(LANG_ZH_CN);
        end.addNewFldChar().setFldCharType(STFldCharType.END);

        FtrDocument ftrDoc = org.openxmlformats.schemas.wordprocessingml.x2006.main.FtrDocument.Factory.newInstance();
        XWPFFooter footer = (XWPFFooter) document.createRelationship(XWPFRelation.FOOTER, XWPFFactory.getInstance(), 1);
        footer.setXWPFDocument(document);

        CTHdrFtr ftr = footer._getHdrFtr();
        ftr.addNewP();
        ftr.setPArray(0,paragraph.getCTP());

        CTHdrFtrRef ctHdrFtrRef = ctSectPr1.addNewFooterReference();
        ctHdrFtrRef.setType(STHdrFtr.DEFAULT);
        ctHdrFtrRef.setId(document.getRelationId(footer));

        footer.setHeaderFooter(ftr);
        ftrDoc.setFtr(ftr);
        footer.setXWPFDocument(document);
    }

    private static void createHeaderForSec(XWPFDocument document, CTSectPr ctSectPr1, String text,boolean withSplitLine) {
        // 页眉文字
        CTP ctp = CTP.Factory.newInstance();
        XWPFParagraph paragraph = new XWPFParagraph(ctp, document);
        ctp.addNewR().addNewT().setStringValue(text);
        ctp.addNewR().addNewT().setSpace(SpaceAttribute.Space.PRESERVE);

        XWPFParagraph paragraph2 = null;
        if (withSplitLine){
            // 分割线
            CTP splitLine = CTP.Factory.newInstance();
            paragraph2 = new XWPFParagraph(splitLine, document);
            CTBorder bottom = splitLine.addNewPPr().addNewPBdr().addNewTop();
            bottom.setVal(STBorder.Enum.forInt(3));
        }

        HdrDocument hdrDoc = HdrDocument.Factory.newInstance();
        XWPFHeader header = (XWPFHeader) document.createRelationship(XWPFRelation.HEADER, XWPFFactory.getInstance(), 1);

        CTHdrFtr hdr = header._getHdrFtr();
        hdr.addNewP();
        hdr.setPArray(0,paragraph.getCTP());
        if (withSplitLine){
            hdr.addNewP();
            hdr.setPArray(1,paragraph2.getCTP());
        }

        CTHdrFtrRef ctHdrFtrRef = ctSectPr1.addNewHeaderReference();
        ctHdrFtrRef.setType(STHdrFtr.DEFAULT);
        ctHdrFtrRef.setId(document.getRelationId(header));

        header.setHeaderFooter(hdr);
        hdrDoc.setHdr(hdr);
        header.setXWPFDocument(document);

    }



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用[1],Apache POI是一个Java API,可用于读取和编写Microsoft Office二进制文件格式,例如doc、xls和ppt等。但是,它不支持将Word文档直接转换为PDF格式。因此,我们需要使用其他库来实现将Word文档转换为PDF格式。在此过程中,我们可以使用Apache PDFBox库来添加页眉页脚。以下是实现此目的的步骤: 1. 首先,我们需要将Word文档转换为PDF格式。我们可以使用Apache POI库中的XWPFDocument类来读取Word文档,并使用Apache PDFBox库中的PDFMergerUtility类将其转换为PDF格式。以下是示例代码: ```java // 读取Word文档 XWPFDocument document = new XWPFDocument(new FileInputStream("input.docx")); // 将Word文档转换为PDF格式 ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfOptions options = PdfOptions.create(); PdfConverter.getInstance().convert(document, baos, options); baos.flush(); baos.close(); byte[] pdfBytes = baos.toByteArray(); // 将PDF字节数组写入文件 FileOutputStream fos = new FileOutputStream("output.pdf"); fos.write(pdfBytes); fos.close(); ``` 2. 接下来,我们可以使用Apache PDFBox库中的PDFTextStripper类来添加页眉页脚。以下是示例代码: ```java // 读取PDF文档 PDDocument document = PDDocument.load(new File("output.pdf")); // 添加页眉页脚 PDPageTree pages = document.getPages(); for (PDPage page : pages) { PDPageContentStream contentStream = new PDPageContentStream(document, page, AppendMode.APPEND, true, true); contentStream.beginText(); contentStream.setFont(PDType1Font.TIMES_ITALIC, 10); contentStream.newLineAtOffset(50, 750); contentStream.showText("页眉"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(PDType1Font.TIMES_ITALIC, 10); contentStream.newLineAtOffset(50, 50); contentStream.showText("页脚"); contentStream.endText(); contentStream.close(); } // 保存PDF文档 document.save("output_with_header_footer.pdf"); document.close(); ``` 以上代码将在每个页面的顶部添加“页眉”文本,并在每个页面的底部添加“页脚”文本。您可以根据需要更改文本内容和位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值