itext生成pdf

itext生成pdf

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <!--xls(03)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <!--xlsx(07)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.7</version>
        </dependency>
package com.example.spring01;

import com.alibaba.fastjson.JSONObject;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.*;

public class Test2 {
    private static final int LENGTH = 20;

    private static Map<Integer,String> questionTypeMap = new HashMap<Integer,String>();
    static {
        questionTypeMap.put(0,"技术");
        questionTypeMap.put(1,"商务");
    }
    public static String  getQuestionType(){
        Random random = new Random();
        return questionTypeMap.get(random.nextInt(2));
    }

    public static void main(String[] args) {
        String[] headers = {"编码", "品类名称", "类别", "问题描述", "答复意见"};

        List<Map<String,Object>> mapList = new ArrayList<>();

        Map<String,Object> param;
     /*   mapList.add(param);
        for (int i = 1; i < LENGTH; i++) {
            param = new LinkedHashMap<>();
            param.put("key1","CHDY2022032"+i);
            param.put("key2", UUIDUtils.random32()+"测试品类000"+i);
            param.put("key3",getQuestionType());
            param.put("key4",i+"有织着麻花辫。她脸上发,像散上了金粉,闪着飘忽的光辉。女儿乖巧地依偎在母亲怀里,不停地说着什么,不时把母亲逗出会心的微笑,甜美的亲情融化了冬的寒冷,使萧索的冬景旋转出春天的美丽。寒冷,使萧索的冬景旋转出春天的美丽寒冷,使萧索的冬景旋转出春天的美丽寒冷,使萧索的冬景旋转出春天的美丽寒冷,使萧索的冬景旋转出春天的美丽寒冷,使萧索的冬景旋转出春天的美丽寒冷,使萧索的冬景旋转出春天的美丽寒冷,使萧索的冬景旋转出春天的美丽");
            param.put("key5",i+"  START*傍晚下起了雪,然后一夜未停。雪花轻柔,落在一只只黑漆斑驳的蜂箱上。蜜蜂正沉睡。在精致的六角的蜂巢内,像被蜡封的秘函。又像提炼完毕的纯金颗粒,被一位丰富的君王所珍藏。其实比金子更贵重,热瓦韦   发      而非服务打发范德萨就开了尽快发链接撒旦立刻就建立开发商的就离开房间啊离开尽快答复时间分厘卡即使了克劳福德骄傲楼上看风景就立刻佛挡杀佛离开家尽快立法当局老咔叽进口发动机撒赖科技2因为蜜蜂是活物,有生命。天底下,它们的梦境最甜美,南方的紫云英、油菜花,北方的槐花、枣花、山荆柯,一层谢了一层又开。却不知今夜繁华的梦乡,是否能出现雪的踪影。如果有一只可爱的蜜蜂在雪的拍打声中悄然醒来,会闻到一缕来自苍穹的清香,圣洁而神奇。可惜没有谁能幸运地复苏,尘世的花朵,已经把它们累坏了。END");
            mapList.add(param);
        }*/

        String str = "[{\"noticeClarifyCode\":\"CHD放大了看是否节点数量看见了江东父老杀了\n\n\n\n\n\n\n\n\ndfjaljfdlaj减肥的拉萨解放了圣诞节Y20220022\",\"materialCategoryName\":\"110kV 交流电力变压器\",\"questionType\":\"商务\",\"questionDespription\":\"测试营业执照问题\",\"answerOpinion\":\"1111111111111111\\n房的垃圾分类的卡六块腹肌卡戴珊老福克斯\\n非登记克拉斯就发了数据了看的附件拉是地脚螺栓,\\n发送点击案例集冯老师的附件撒了减肥了\\n非打死克劳福德拉克丝解放路山东矿机分开了上登记来看登记非拉上激发了\\n22222222222222\"},{\"noticeClarifyCode\":\"CHDY20220188\",\"materialCategoryName\":\"110kV 交流电力变压器\",\"questionType\":\"商务\",\"questionDespription\":\"测试营业执照问题\",\"answerOpinion\":\"1111111111111111\\n房的垃圾分类的卡六块腹肌卡戴珊老福克斯\\n非登记克拉斯就发了数据了看的附件拉是地脚螺栓,\\n发送点击案例集冯老师的附件撒了减肥了\\n非打死克劳福德拉克丝解放路发动机阿斯利康房价历史记录份都是垃圾分类介绍了肯定就是离开家飞机迪斯科垃圾分类电视机分厘卡数据代理·解放东路沙发了的时间里就山东矿机分开了上登记来看登记非拉上激发了\\n22222222222222\"},{\"noticeClarifyCode\":\"CHDY20220022\",\"materialCategoryName\":\"110kV 交流电力变压器\",\"questionType\":\"商务\",\"questionDespription\":\"测试营业执照问题\",\"answerOpinion\":\"1111111111111111\\n房的垃圾分类的卡六块腹肌卡戴珊老福克斯\\n非登记克拉斯就发了数据了看的附件拉是地脚螺栓,\\n发送点击案例集冯老师的附件撒了减肥了\\n非打死克劳福德拉克丝解放路山东矿机分开了上登记来看登记非拉上激发了\\n22222222222222\"},{\"noticeClarifyCode\":\"CHDY20220119\",\"materialCategoryName\":\"工业级以太网交换机\",\"questionType\":\"技术\",\"questionDespription\":\"11111111111\",\"answerOpinion\":\"122222222222222222二我v人·1222222222222\"},{\"noticeClarifyCode\":\"CHDY20220115\",\"materialCategoryName\":\"工业级以太网交换机\",\"questionType\":\"商务\",\"questionDespription\":\"111\",\"answerOpinion\":\"11111111111111111111111111111111111111111\"},{\"noticeClarifyCode\":\"CHDY20220116\",\"materialCategoryName\":\"工业级以太网交换机\",\"questionType\":\"商务\",\"questionDespription\":\"啛啛喳喳\\n\\nfqwfgq/\\n/\\n/\\n/\\n/\\n/\\n\",\"answerOpinion\":\"给发四个的时间考虑就考虑对方金克拉金克拉尽快立法大数据飞机喀什的老玩家·发大水了开发接口连接·1即使对方克拉金克拉\"},{\"noticeClarifyCode\":\"CHDY20220126\",\"materialCategoryName\":\"工业级以太网交换机\",\"questionType\":\"商务\",\"questionDespription\":\"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkks\",\"answerOpinion\":\"打发士大夫克拉金克拉·肌肤的卡拉JFK劳动节快乐·见风使舵卡拉JFK了数据来看·\\n的发散开来\"},{\"noticeClarifyCode\":\"CHDY20220125\",\"materialCategoryName\":\"工业级以太网交换机\",\"questionType\":\"商务\",\"questionDespription\":\"222222\",\"answerOpinion\":\"1111111111111111\"},{\"noticeClarifyCode\":\"CHDY20220127\",\"materialCategoryName\":\"工业级以太网交换机\",\"questionType\":\"商务\",\"questionDespription\":\"13247544444\",\"answerOpinion\":\"1212121212121212121212121212121212121212122222222222222222\"},{\"noticeClarifyCode\":\"CHDY20220242\",\"materialCategoryName\":\"10kV 交流电力电缆(防白蚁型)\",\"questionType\":\"商务\",\"questionDespription\":\"22222222222发什么麻烦大了目录开发商贷款的反馈\",\"answerOpinion\":\"如涛涛涛涛涛涛涛涛涛涛涛涛涛涛涛涛涛涛\"},{\"noticeClarifyCode\":\"CHDY20220243\",\"materialCategoryName\":\"10kV 固定式高压开关柜\",\"questionType\":\"商务\",\"questionDespription\":\" 啊手动阀v五百的风格顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶是\",\"answerOpinion\":\"腹股沟灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌\"},{\"noticeClarifyCode\":\"CHDY20220244\",\"materialCategoryName\":\"110kV 电容式电压互感器\",\"questionType\":\"商务\",\"questionDespription\":\"按时地方烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦\",\"answerOpinion\":\"法国发过法国发过法国发过法国风格非官方分顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶\"},{\"noticeClarifyCode\":\"CHDY20220245\",\"materialCategoryName\":\"10kV 交流电力电缆(防白蚁型)\",\"questionType\":\"商务\",\"questionDespription\":\"让他八八八八八八八八八八\",\"answerOpinion\":\"士大夫的反对大幅度反对法大幅度大幅度发反对撒啊啊啊啊啊啊啊啊啊啊啊啊啊\"},{\"noticeClarifyCode\":\"CHDY20220246\",\"materialCategoryName\":\"110kV 电容式电压互感器\",\"questionType\":\"商务\",\"questionDespription\":\"饿哇日日日日日日日日日日日日日日日日日\",\"answerOpinion\":\"方式大啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊·的呱呱呱呱呱呱呱呱呱呱呱呱呱呱呱呱呱呱\"},{\"noticeClarifyCode\":\"CHDY20220247\",\"materialCategoryName\":\"过程层交换机\",\"questionType\":\"商务\",\"questionDespription\":\"公司的反反复复烦烦烦烦烦烦烦烦烦\",\"answerOpinion\":\"啊手动阀手动阀手动阀手动阀手动阀手动阀\"},{\"noticeClarifyCode\":\"CHDY20220248\",\"materialCategoryName\":\"过程层交换机\",\"questionType\":\"商务\",\"questionDespription\":\"厄特特特特特特特特特特特特特特特特特2\",\"answerOpinion\":\"腹股沟灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌\"},{\"noticeClarifyCode\":\"CHDY20220249\",\"materialCategoryName\":\"110kV 电容式电压互感器\",\"questionType\":\"商务\",\"questionDespription\":\"热嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡嗡\",\"answerOpinion\":\"法国发过法国发过法国发过法国风格非官方1111111111但如果水水水水水水水水水水水水水水水水\"},{\"noticeClarifyCode\":\"CHDY20220250\",\"materialCategoryName\":\"过程层交换机\",\"questionType\":\"商务\",\"questionDespription\":\"饿哇日日日日日日日日日日日日日日日日日\",\"answerOpinion\":\"额我热热热热热热热热热热热热热热热热\"}]";
        List<JSONObject> jsonObjects = JSONObject.parseArray(str, JSONObject.class);
        for (JSONObject jsonObject : jsonObjects) {
            param = new LinkedHashMap<>();
            param.put("key1",jsonObject.getString("noticeClarifyCode"));
            param.put("key2",jsonObject.getString("materialCategoryName"));
            param.put("key3",jsonObject.getString("questionType"));
            param.put("key4",jsonObject.getString("questionDespription"));
            param.put("key5",jsonObject.getString("answerOpinion"));
            mapList.add(param);
        }

        // String list = "[{\"balance\":\"42402\",\"changeDate\":\"20211026111641\",\"dgst\":\"SSTR\",\"outMoney\":\"0\",\"bankSeqNo\":\"0000000relwqjrlewDFJLSFJFJSJdfjslafj飓风等级安抚快乐到家啊斯洛伐克就激发了大家发来的会计师发动机拉萨解放了fdasl0000641199893\",\"inMoney\":\"11539\"},{\"balance\":\"30863\",\"changeDate\":\"20211005133736\",\"dgst\":\"SALE\",\"outMoney\":\"7500\",\"bankSeqNo\":\"00000000000635138192\",\"inMoney\":\"0\"},{\"balance\":\"38363\",\"changeDate\":\"20210926113940\",\"dgst\":\"SSTR\",\"outMoney\":\"0\",\"bankSeqNo\":\"00000000000632420138\",\"inMoney\":\"11539\"},{\"balance\":\"26824\",\"changeDate\":\"20210925111144\",\"dgst\":\"SALE\",\"outMoney\":\"11150\",\"bankSeqNo\":\"00000000000632752221\",\"inMoney\":\"0\"},{\"balance\":\"37974\",\"changeDate\":\"20210922083109\",\"dgst\":\"SALE\",\"outMoney\":\"4860\",\"bankSeqNo\":\"00000000000631851353\",\"inMoney\":\"0\"},{\"balance\":\"42834\",\"changeDate\":\"20210919153251\",\"dgst\":\"SALE\",\"outMoney\":\"7910\",\"bankSeqNo\":\"00000000000631503750\",\"inMoney\":\"0\"},{\"balance\":\"50744\",\"changeDate\":\"20210917080014\",\"dgst\":\"SALE\",\"outMoney\":\"5870\",\"bankSeqNo\":\"00000000000630377865\",\"inMoney\":\"0\"},{\"balance\":\"56614\",\"changeDate\":\"20210915153430\",\"dgst\":\"SALE\",\"outMoney\":\"8560\",\"bankSeqNo\":\"00000000000630120441\",\"inMoney\":\"0\"},{\"balance\":\"65174\",\"changeDate\":\"20210830103432\",\"dgst\":\"SALE\",\"outMoney\":\"6200\",\"bankSeqNo\":\"00000000000625635279\",\"inMoney\":\"0\"},{\"balance\":\"71374\",\"changeDate\":\"20210825124135\",\"dgst\":\"SSTR\",\"outMoney\":\"0\",\"bankSeqNo\":\"0000000da发的撒娇了房间都是垃圾发电离开家离开房间打扫垃圾法拉第开始就flak但是九分零四·肌肤的离开洒家分厘卡大家分厘卡圣诞节了就发来的撒娇法律的就撒了·聚磷酸铵进了房间都是垃圾·搭街坊拉萨解放的逻辑啊弗兰克的·的肌肤垃圾发电两款手机法律框架减肥的拉萨解放拉克丝JFK劳动时间·京东方拉萨解放螺丝钉解放了\n0000624479550\",\"inMoney\":\"11539\"}]";
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        Document document = null;
        PdfWriter writer = null;
        try {
           /* JSONArray objects = JSON.parseArray(list);
            List<Map<String, Object>> mapList = (List) objects;
            mapList.addAll((List) JSON.parseArray(list));*/
//            mapList.addAll((List) JSON.parseArray(list));
//            mapList.addAll((List) JSON.parseArray(list));
//            mapList.addAll((List) JSON.parseArray(list));
            //创建纵向文件
            document = PdfUtils.createTransverseDocument();
            //建立一个书写器(内存流方式)
            writer = PdfWriter.getInstance(document, byteArrayOutputStream);
            //打开文件
            document.open();
            //添加字体样式
            Font bigFont = PdfUtils.createFont(14, Font.NORMAL, BaseColor.BLACK);
            Font blueFont = PdfUtils.createFont(10, Font.NORMAL, BaseColor.BLACK);
            //段落内容
            Paragraph title = PdfUtils.createParagraph("澄清答疑明细", bigFont);
            //文字居中显示
            title.setAlignment(Element.ALIGN_CENTER);
            //添加段落内容
            document.add(title);
            //创建表格列数
            PdfPTable table = PdfUtils.createPdfPTable(headers.length);
            table.setWidths(new int[]{10,15,5,35,35});

            //创建表头
            PdfUtils.createHeader(document, table, headers, bigFont);
            //填充数据
            PdfUtils.dataProcessing(document, table, mapList, blueFont);
        } catch (DocumentException e) {

        } finally {
            if (document != null) {
                //关闭文档
                document.close();
            }
            if (writer != null) {
                //关闭书写器
                writer.close();
            }
        }
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream =  new FileOutputStream("D:\\temp\\test.pdf");
            fileOutputStream.write(byteArrayOutputStream.toByteArray());
            System.out.println("生成成功!");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileOutputStream != null){
                try {
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (byteArrayOutputStream != null){
                try {
                    byteArrayOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


package com.example.spring01;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
 
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
/**
 * @version V1.0
 * @Description:生成PDF文件
 * @Author: Mr.LJie
 * @Date: 2021/11/30 14:17
 */
public class PdfUtils {
    /**
     * 固定高
     */
    public static float fixedHeight = 27f;
    /**
     * 跨行
     */
    public static int rowSpan = 0;
    /**
     * 跨列
     */
    public static int colSpan = 0;
    /**
     * 左边距
     */
    public static float marginLeft = 20;
    /**
     * 右边距
     */
    public static float marginRight = 20;
    /**
     * 上边距
     */
    public static float marginTop = 20;
    /**
     * 下边距
     */
    public static float marginBottom = 20;
 
    /***
     * @Description :创建A4纵向文件
     * @param
     * @return com.itextpdf.text.Document
     * @Author Mr.Jie
     * @Date 2021/11/30 14:25
     */
    public static Document createPortraitDocument() {
        //生成pdf
        Document document = new Document();
        // 页面大小
        Rectangle rectangle = new Rectangle(PageSize.A4);
        // 页面背景颜色
        rectangle.setBackgroundColor(BaseColor.WHITE);
        document.setPageSize(rectangle);
        // 页边距 左,右,上,下
        document.setMargins(marginLeft, marginRight, marginTop, marginBottom);
        return document;
    }
 
    /***
     * @Description :创建A4横向文件
     * @param
     * @return com.itextpdf.text.Document
     * @Author Mr.Jie
     * @Date 2021/11/30 15:42
     */
    public static Document createTransverseDocument() {
        //生成pdf
        Document document = new Document();
        // 页面大小
        Rectangle rectangle = new Rectangle(new RectangleReadOnly(842F, 595F));
        // 页面背景颜色
        rectangle.setBackgroundColor(BaseColor.WHITE);
        document.setPageSize(rectangle);
        // 页边距 左,右,上,下
        document.setMargins(marginLeft, marginRight, marginTop, marginBottom);
 
        return document;
    }
 
    /**
     * @param text 段落内容
     * @param font 字体设置
     * @return com.itextpdf.text.Paragraph
     * @Description :创建段落内容
     * @Author Mr.Jie
     * @Date 2021/11/30 14:59
     */
    public static Paragraph createParagraph(String text, Font font) {
        Paragraph elements = new Paragraph(text, font);
        elements.setSpacingBefore(5);
        elements.setSpacingAfter(5);
        return elements;
    }
 
 
    /***
     * @Description :创建字体样式
     * @param fontNumber    字号
     * @param fontSize      字体大小
     * @param fontColor     字体颜色
     * @return com.itextpdf.text.Font
     * @Author Mr.Jie
     * @Date 2021/11/30 14:57
     */
    public static Font createFont(int fontNumber, int fontSize, BaseColor fontColor) {
        //中文字体 ----不然中文会乱码
        BaseFont bf = null;
        try {
            bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            return new Font(bf, fontNumber, fontSize, fontColor);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new Font(bf, Font.DEFAULTSIZE, Font.NORMAL, BaseColor.BLACK);
    }
 
    /***
     * @Description :隐藏表格边框线
     * @param cell  单元格
     * @return void
     * @Author Mr.Jie
     * @Date 2021/11/30 14:57
     */
    public static void disableBorderSide(PdfPCell cell) {
        if (cell != null) {
            cell.disableBorderSide(1);
            cell.disableBorderSide(2);
            cell.disableBorderSide(4);
            cell.disableBorderSide(8);
        }
    }
 
 
    /***
     * @Description :创建居中得单元格
     * @param
     * @return com.itextpdf.text.pdf.PdfPCell
     * @Author Mr.Jie
     * @Date 2021/11/30 14:57
     */
    public static PdfPCell createCenterPdfPCell() {
        PdfPCell cell = new PdfPCell();
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setFixedHeight(fixedHeight);
        return cell;
    }
 
    /***
     * @Description :创建指定文字得单元格
     * @param text      文字内容
     * @param rowSpan   跨行合并单元格
     * @param colSpan   跨列合并单元格
     * @param font      字体
     * @return com.itextpdf.text.pdf.PdfPCell
     * @Author Mr.Jie
     * @Date 2021/11/30 14:50
     */
    public static PdfPCell createCenterPdfPCell(String text, int rowSpan, int colSpan, Font font) {
        PdfPCell cell = new PdfPCell(new Paragraph(text, font));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setFixedHeight(fixedHeight);
        cell.setRowspan(rowSpan);
        cell.setColspan(colSpan);
        return cell;
    }
 
    /***
     * @Description :表格列数
     * @param len
     * @return com.itextpdf.text.pdf.PdfPTable
     * @Author Mr.Jie
     * @Date 2021/11/30 14:52
     */
    public static PdfPTable createPdfPTable(int len) {
        PdfPTable pdfPTable = new PdfPTable(len);
        //宽度100%填充
        pdfPTable.setWidthPercentage(100);
        return pdfPTable;
    }
 
    /***
     * @Description :创建表头
     * @param document
     * @param headers
     * @param font
     * @return void
     * @Author Mr.Jie
     * @Date 2021/11/30 15:27
     */
    public static void createHeader(Document document, PdfPTable table, String[] headers, Font font) throws DocumentException {
        for (int i = 0; i < headers.length; i++) {
            //默认不跨行、跨列
            PdfPCell cell = PdfUtils.createCenterPdfPCell(headers[i], rowSpan, rowSpan, font);
            //居中显示
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            table.addCell(cell);
        }
        document.add(table);
    }
 
    /***
     * @Description :数据处理
     * @param document
     * @param table
     * @param list
     * @param font
     * @return void
     * @Author Mr.Jie
     * @Date 2021/11/30 15:32
     */
    public static void dataProcessing(Document document, PdfPTable table, List<Map<String, Object>> list, Font font) throws DocumentException {
        Iterator<Map<String, Object>> iterator = list.iterator();
        while (iterator.hasNext()) {
            //获取对象
            Map<String, Object> map = iterator.next();
            //Map 获取key & value
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                Object value = entry.getValue();
                //默认不跨行、跨列
                PdfPCell cell = PdfUtils.createCenterPdfPCell(value.toString(), rowSpan, rowSpan, font);
                table.addCell(cell);
            }
            document.add(table);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值