Java PDF 报表开发:从 SectorData 到 A4 页面的七个中转站

简介: 本文详解jquick-pdf生成信用等级环形图的全流程:从`new SectorData("A", 3180)`开始,经数据挂载、SVG渲染、占位符绑定到285px容器缩放,最终输出PDF。全程聚焦3180户如何转化为126°扇形,涵盖五档配色逻辑、中心总数计算、百分比校验及常见返工点,适配jquick-pdfx 4.7.0+(Apache-2.0)。

jquick-pdf 环形图实战:跟着 3,180 户走完 Java 生成信用等级分布 PDF 的全程

官网示例:

摘要(meta description):一个数字要经过几道工序,才能变成 PDF 上的一块扇形?本文盯住 A 级 3,180 户这条数据,从 new SectorData 那一行开始,经过 JCircleChartData 的字段挂载、JOption 转发、SVG 渲染、占位符绑定、285px 容器缩放,一直到写进文件。每一站说清它进去时是什么、出来时变了什么,顺带把五档户数与模板里的百分比核了一遍(jquick-pdfx 4.7.0+,Apache-2.0)。

标签:jquick-pdf、Java PDF、报表开发、环形图

起点:new SectorData 那一行

先盯住一个数:3,180 户。它在代码里第一次露面是这一行:

sectors.add(new JCircleChartData.SectorData("A", 3180, new Color(120, 152, 187)));

三个参数:等级名、户数、颜色。SectorData 是 JCircleChartData 的静态内部类,构造完就被塞进一个 List。此刻它只是一个 Java 对象,字段是 "A"、3180、一个 RGB(120,152,187) 的颜色值,跟 PDF 没有任何关系。

五个扇形是这么排的:

sectors.add(new JCircleChartData.SectorData("AAA", 1280, new Color(31, 78, 121)));
sectors.add(new JCircleChartData.SectorData("AA", 2460, new Color(62, 107, 157)));
sectors.add(new JCircleChartData.SectorData("A", 3180, new Color(120, 152, 187)));
sectors.add(new JCircleChartData.SectorData("BBB", 1520, new Color(168, 190, 214)));
sectors.add(new JCircleChartData.SectorData("BB及以下", 640, new Color(205, 219, 234)));

颜色是一路变浅的:31/78/121 → 62/107/157 → 120/152/187 → 168/190/214 → 205/219/234。同一个蓝色系,明度逐档抬升,等级越优颜色越深。这不像随机取色,更像刻意排的——AAA 是最高等级,用最深的藏蓝压住,BB 及以下最浅,视觉重量也最轻。五档顺着等级由深到浅排下来,不用对色号,靠深浅就能把扇形和等级连上。

(效果预览图 alt:jquick-pdf 生成的企业信用等级分布 PDF,左上环形图中心显示企业总数、外环五档蓝色梯度,右侧指标说明列表,下方四列明细表)

真实渲染效果预览

以下为上述代码 + 模板真实运行生成的 PDF 首屏预览(由 jquick-pdf 渲染输出,非示意图):

image.png

数据落进 JCircleChartData 的几个字段

五个扇形只是外环。整张图还缺一圈信息,这些挂在 JCircleChartData 上:

JCircleChartData chartData = new JCircleChartData();
chartData.setTitleText("企业信用等级分布");
chartData.setSubtitleText("统计口径:入库企业信用评级(单位:户)");
chartData.setCenterTitle("企业总数");
chartData.setCenterUnit("户");
chartData.setFooterText("数据来源:信用信息平台");

主标、副标、环心标签、环心单位、页脚,五个字段加一个扇形列表,就是这张图的全部输入。这五个字段里,setCenterTitle 和 setCenterUnit 是环形图独有的——环形图中间是空的,空着就是浪费,这块地方放总数最合理:读者看到外环五个百分比,第一反应是"总共多少家",中心直接给答案。"企业总数"四个字配上"户"作单位,中心显示的就是五档之和 9,080。

setSubtitleText 里把单位和口径都写了:"统计口径:入库企业信用评级(单位:户)"。入库企业不等于全省企业,这个限定词必须出现,否则读者会拿它当市场主体总量。

setFooterText 是图内的来源行,和模板页脚的数据来源是两回事:一个跟着图走,图被单独截图引用时来源还在;一个跟着文档走,整份 PDF 的出处。两处都写,重复但不冗余。

交给 JOption 之后,它就不再是自己的了

JOption option = new JOption();
option.setData(chartData);

两行。注意这里用的是 setData,不是柱图折线图那种 option.series(...)——环形图的数据对象是一个整体,标题、中心、外环、页脚打包在一起,一次挂上去就行。setData 收的正是 JCircleChartData 这个类型。

从这行之后,chartData 就不该再改了。渲染是同步的,renderChart 一调用就把当前状态读走,改在后面没有任何效果。这一点我吃过一次亏:把 setSectorDataList 写在了渲染之后,图出来了,外环是空的,只有中间那个 9,080。

渲染器把它变成一段字符串

String svg = JChartRendererFactory.renderChart(JChartType.Circle, option);

枚举名是 Circle,首字母大写,不是全大写 CIRCLE。这套 API 的枚举命名不统一,几个图种各有各的写法,照抄 Demo 是最省事的办法,凭记忆写迟早编不过。

这一步返回的是完整的 <svg> 标签树,五个扇形的路径、中心文字的坐标、外环的分隔线,全在里面,都已经按 500×400 的画布算好了坐标。Java 对象到这一步就没了,剩下的是纯文本。

后面三步和所有图表单据一样:setFlexLayout(true)、bind("svg", svg)、executeResource。这份模板里 flex 用了两层——外层分 285px 的图栏和 265px 的说明栏,图栏内部再套一层做居中,缺了开关两层一起塌。

bind 之后,模板里的 ${svg} 有了内容

<div style="width:285px">
  <div style="display:flex; justifyContent:center">
    <svg style="width:285px">${svg}</svg>
  </div>
</div>

factory.bind("svg", svg) 把那一大段标签树塞进 ${svg} 的位置。模板里这个占位符被包在两层 div 里:外层 285px 定宽,内层 flex 居中。

三层结构各有各的活。外层的 285px 决定了图在版面上的占位;内层的 flex 让 SVG 在这个宽度里水平居中,图本身的画布比 285px 宽,缩放之后如果两边留白不均,左边缘会贴死;<svg> 标签上的 width:285px 才是真正的缩放指令,把 500pt 的画布压到 285px 的宽度上。

只写宽度不写高度,这是这份模板有意为之。圆形图的画布接近正方,宽高一压缩,比例自动保持,圆还是圆。要是把 height 也写死成 285px,而原始比例是 500×400,圆就会被纵向拉成椭圆——环形图拉成椭圆比任何排版失误都难看。

285px 的框和 265px 的说明栏

<div style="display:flex; justifyContent:space-between; marginBottom:10px">
  <div style="width:285px">…图…</div>
  <div style="width:265px">…指标说明…</div>
</div>

两栏 285 + 265 = 550,靠 space-between 拉开,中间的缝由剩余宽度决定。

为什么图只给 285px?因为右边那栏要说五条指标。这五条里有三条是图上读不出来的:入库企业总数 9,080 户覆盖 21 个市州、等级口径分五档按季度统计、AA 级及以上合计 3,740 户占 41.2%。前两条是口径交代,第三条是跨档合并——环形图分的是五档,41.2% 这个数图上根本不存在,得靠文字补。

这就是左右分栏的意义:图负责"看构成",文字负责"给口径和合并值"。如果图占满 600 的版心,五条说明只能掉到图下面,页面高度立刻多出三四厘米。

右侧列表的 <h3> 是 12pt 深蓝加粗,五条 bullet 用 listStyleType:disc、9pt,前缀加粗深蓝、后面跟正文,和整份文档的"判断在前、依据在后"是一个路数。字号比正文小一档,因为它属于图的注解,不该和正文抢。

终点:字节、文件、A4 上的一个扇形

executeResource("report/biz/20_credit_grade_circle.txt") 返回 byte[],写进 D:\test\biz\20_credit_grade_circle.pdf。到这一步,3180 这个数在页面上变成了外环里那块最大的扇形,角度 3,180 ÷ 9,080 × 360 约 126 度,超过三分之一圈。

回头看这趟旅程,3,180 被改了三次形态:Java 的 int → SVG 里的路径坐标 → PDF 里的填充区域。中间没有一次把它当字符串拼过,也就是说这个数字本身从来没被格式化过,"3,180" 带千分位的那种写法在图上并不存在,只在下面的明细表里出现。

明细表的四个列是"标签 / 值 / 标签 / 值"的成对结构:

<tr>
  <td style="width:150px; padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'A 级企业'</td>
  <td style="width:120px; padding:6px; textAlign:right; border:1px solid #D6DEE8">'3,180 户'</td>
  <td style="width:150px; padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'A 占比'</td>
  <td style="width:120px; padding:6px; textAlign:right; border:1px solid #D6DEE8">'35.0%'</td>
</tr>

一行装两组标签值,七行装完十四个字段,比十四行两列的表紧凑一半。标签格统一 #E8F0F7 浅蓝底,值格白底右对齐,全表 1px #D6DEE8 全边框。数值带"户"、占比带"%"、市州数带"个",单位跟着数走,列头就不用再写单位了。

回头数一遍:9,080 户从哪来

五档户数加起来:1280 + 2460 + 3180 + 1520 + 640 = 9,080。中心显示的总数、表里第一行的"入库企业总数"、明细的六个百分比,全部从这个和出发。

A 级 3180 ÷ 9080 = 35.02%,模板写 35.0%;AA 级 2460 ÷ 9080 = 27.09%,27.1%;AAA 级 1280 ÷ 9080 = 14.10%,14.1%;BBB 级 1520 ÷ 9080 = 16.74%,16.7%;BB 及以下 640 ÷ 9080 = 7.05%,7.0%。AA 级及以上 2460 + 1280 = 3,740,3740 ÷ 9080 = 41.19%,41.2%。

五个占比相加 35.0 + 27.1 + 14.1 + 16.7 + 7.0 = 99.9,差 0.1 到 100。模板在第三个区块下面加了一行右对齐的小字:"注:等级数据按季度更新,占比四舍五入保留一位小数,合计可能存在 0.1 个百分点的尾差。"这句话很短,但它把读者可能提出的第一个质疑提前挡掉了。

那句注释的位置也有讲究:右对齐、8pt、灰色,贴在全文档的末尾。它得存在,但不该抢戏——读者核对数字时能看见,正常阅读时会忽略。

哪一站最容易返工

七站里最容易出问题的是"字段挂载"那站。三个坑:setSectorDataList 必须早于渲染,setCenterTitle 和 setCenterUnit 少一个,中心就只剩数字没有单位或者只剩标签没有数;setSubtitleText 里的口径如果写成"全省企业",图上说的和表里写的"入库企业"就打架。

另一处是"容器缩放"那站。285px 这个宽度和右侧 265px 是绑定的,改一个另一个得跟着改,两边加起来超过版心宽度,flex 会把右栏挤到下一行,两栏变上下,页高立刻超。

复现清单

  1. 依赖 io.github.paohaijiao:jquick-pdfx:4.7.0+(Apache-2.0 协议);
  2. new JCircleChartData(),依次 setTitleText / setSubtitleText / setCenterTitle / setCenterUnit / setFooterText;
  3. List<JCircleChartData.SectorData> 按 AAA 到 BB 加五个扇形,颜色沿同一色系由深至浅;
  4. chartData.setSectorDataList(sectors) 必须在渲染前完成;
  5. new JOption() 后 setData(chartData),renderChart(JChartType.Circle, option) 取 SVG;
  6. JPdfConfig 开 setFlexLayout(true),构造工厂后 bind("svg", svg),再 executeResource("report/biz/20_credit_grade_circle.txt");
  7. 写 D:\test\biz\20_credit_grade_circle.pdf,核对五档合计 9,080 与六个百分比。

完整源码附录

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Copyright (c) [2025-2099] Martin (goudingcheng@gmail.com)
 */
package com.github.paohaijiao.biz.chart;

import com.github.paohaijiao.JOption;
import com.github.paohaijiao.combol.JCircleChartData;
import com.github.paohaijiao.config.JPdfConfig;
import com.github.paohaijiao.demo.constant.JQuickConstant;
import com.github.paohaijiao.enums.JChartType;
import com.github.paohaijiao.executor.JQuickPdfFactory;
import com.github.paohaijiao.factory.JChartRendererFactory;
import org.junit.Test;

import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 业务场景 Demo 20:企业信用等级分布(信用平台)
 *
 * <p>业务场景:信用信息平台按季度汇总入库企业的信用等级(AAA / AA / A / BBB / BB 及以下),
 * 用于区域信用状况概览与授信政策制定。</p>
 * <p>实际图表类型:{@link JChartType#Circle} 环形图(中心显示企业总数,外环按等级占比展开)。</p>
 *
 * <p>模板:{@code report/biz/20_credit_grade_circle.txt};图表以 SVG 文本形式绑定到模板的
 * {@code ${svg}} 占位符,输出到 {@code D:\test\biz\20_credit_grade_circle.pdf}。</p>
 *
 * <p>图表尺寸说明:图表按 500pt × 400pt(宽 × 高)的方形比例设计;模板中 {@code <svg>}
 * 只声明宽度、不声明高度,因此宽度被页面自动收窄时高度会按原比例同步缩放,不会纵向拉伸变形。</p>
 *
 * @author Martin
 * @version 1.0.0
 */
public class JQuickBiz20CreditGradeCircleTest {
   

    public static final String path = JQuickConstant.path;

    @Test
    public void biz20CreditGradeCircle() throws IOException {
   
        JCircleChartData chartData = new JCircleChartData();
        chartData.setTitleText("企业信用等级分布");
        chartData.setSubtitleText("统计口径:入库企业信用评级(单位:户)");
        chartData.setCenterTitle("企业总数");
        chartData.setCenterUnit("户");
        chartData.setFooterText("数据来源:信用信息平台");
        // 五个信用等级扇形,颜色沿同一主色由深至浅,保持政务/企业系统低饱和风格
        List<JCircleChartData.SectorData> sectors = new ArrayList<>();
        sectors.add(new JCircleChartData.SectorData("AAA", 1280, new Color(31, 78, 121)));
        sectors.add(new JCircleChartData.SectorData("AA", 2460, new Color(62, 107, 157)));
        sectors.add(new JCircleChartData.SectorData("A", 3180, new Color(120, 152, 187)));
        sectors.add(new JCircleChartData.SectorData("BBB", 1520, new Color(168, 190, 214)));
        sectors.add(new JCircleChartData.SectorData("BB及以下", 640, new Color(205, 219, 234)));
        chartData.setSectorDataList(sectors);

        JOption option = new JOption();
        option.setData(chartData);
        String svg = JChartRendererFactory.renderChart(JChartType.Circle, option);

        File dir = new File(path + "biz");
        if (!dir.exists()) {
   
            dir.mkdirs();
        }
        FileOutputStream fileOutputStream = new FileOutputStream(path + "biz/20_credit_grade_circle.pdf");
        JPdfConfig config = new JPdfConfig();
        // 开启 flex 行布局,使模板中的 display:flex 生效(图表居中)
        config.getLayoutConfig().setFlexLayout(true);
        JQuickPdfFactory factory = new JQuickPdfFactory(config);
        factory.bind("svg", svg);
        byte[] bytes = factory.executeResource("report/biz/20_credit_grade_circle.txt");
        fileOutputStream.write(bytes);
        fileOutputStream.close();
    }
}
<pdf>
<body>
  <div style="marginBottom:10px; borderBottom:1px solid #B9C2CC; paddingBottom:8px; keepTogether:true">
    <h1 style="color:#243B53; fontSize:17pt; bold:true; marginBottom:3px">'企业信用等级分布'</h1>
    <p style="color:#6c757d; fontSize:9pt">'统计周期:2025年三季度 | 数据来源:信用信息平台评级库'</p>
  </div>

  <div style="marginBottom:10px">
    <div style="backgroundColor:#E8F0F7; padding:6px 10px; borderRadius:3px; marginBottom:6px">
      <h2 style="color:#1F4E79; fontSize:13pt; bold:true; marginTop:0px; marginBottom:0px">'一、等级结构概览'</h2>
    </div>
    <div style="display:flex; justifyContent:space-between; marginBottom:10px">
      <div style="width:285px">
        <div style="display:flex; justifyContent:center">
          <svg style="width:285px">${svg}</svg>
        </div>
      </div>
      <div style="width:265px">
        <h3 style="color:#1F4E79; fontSize:12pt; bold:true; marginBottom:6px">'指标说明'</h3>
        <list style="listStyleType:disc; paddingLeft:14px; fontSize:9pt">
          <li style="marginBottom:5px"><span style="bold:true; color:#1F4E79">'入库企业总数:'</span>'9,080 户,覆盖全省 21 个市(州)。'</li>
          <li style="marginBottom:5px"><span style="bold:true; color:#1F4E79">'等级口径:'</span>'AAA / AA / A / BBB / BB 及以下共五档,按季度评级结果统计。'</li>
          <li style="marginBottom:5px"><span style="bold:true; color:#1F4E79">'A 级占比最高:'</span>'A 级 3,180 户、占比 35.0%,是等级分布的主体。'</li>
          <li style="marginBottom:5px"><span style="bold:true; color:#1F4E79">'优质主体储备:'</span>'AA 级及以上合计 3,740 户、占比 41.2%。'</li>
          <li style="marginBottom:5px"><span style="bold:true; color:#1F4E79">'低等级主体:'</span>'BB 及以下 640 户、占比 7.0%,风险敞口整体可控。'</li>
        </list>
      </div>
    </div>
  </div>

  <div style="marginBottom:10px">
    <div style="backgroundColor:#E8F0F7; padding:6px 10px; borderRadius:3px; marginBottom:6px">
      <h2 style="color:#1F4E79; fontSize:13pt; bold:true; marginTop:0px; marginBottom:0px">'二、等级明细数据'</h2>
    </div>
    <table style="width:540px; fontSize:9pt">
      <tr>
        <td style="width:150px; padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'入库企业总数'</td>
        <td style="width:120px; padding:6px; textAlign:right; border:1px solid #D6DEE8">'9,080 户'</td>
        <td style="width:150px; padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'覆盖市(州)数'</td>
        <td style="width:120px; padding:6px; textAlign:right; border:1px solid #D6DEE8">'21 个'</td>
      </tr>
      <tr>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'AAA 级企业'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'1,280 户'</td>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'AAA 占比'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'14.1%'</td>
      </tr>
      <tr>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'AA 级企业'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'2,460 户'</td>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'AA 占比'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'27.1%'</td>
      </tr>
      <tr>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'A 级企业'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'3,180 户'</td>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'A 占比'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'35.0%'</td>
      </tr>
      <tr>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'BBB 级企业'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'1,520 户'</td>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'BBB 占比'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'16.7%'</td>
      </tr>
      <tr>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'BB 及以下企业'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'640 户'</td>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'BB 及以下占比'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'7.0%'</td>
      </tr>
      <tr>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'AA 级及以上合计'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'3,740 户'</td>
        <td style="padding:6px; backgroundColor:#E8F0F7; border:1px solid #D6DEE8">'AA 级及以上占比'</td>
        <td style="padding:6px; textAlign:right; border:1px solid #D6DEE8">'41.2%'</td>
      </tr>
    </table>
  </div>

  <div style="marginBottom:10px">
    <div style="backgroundColor:#E8F0F7; padding:6px 10px; borderRadius:3px; marginBottom:6px">
      <h2 style="color:#1F4E79; fontSize:13pt; bold:true; marginTop:0px; marginBottom:0px">'三、结构特征与建议'</h2>
    </div>
    <list style="listStyleType:none; paddingLeft:0px; fontSize:10pt">
      <li style="borderTop:1px dashed #C7C7C7; paddingTop:6px; marginBottom:4px"><span style="bold:true; color:#1F4E79">'结构呈“中间大、两头小”:'</span>'A 级 35.0%、AA 级 27.1%,两档合计 62.1%,而 AAA 级仅 14.1%,高等级主体占比偏低。'</li>
      <li style="borderTop:1px dashed #C7C7C7; paddingTop:6px; marginBottom:4px"><span style="bold:true; color:#1F4E79">'优质主体储备充足:'</span>'AA 级及以上共 3,740 户、占比 41.2%,为授信投放提供了较厚的客户基础。'</li>
      <li style="borderTop:1px dashed #C7C7C7; paddingTop:6px; marginBottom:4px"><span style="bold:true; color:#1F4E79">'低等级主体可控:'</span>'BB 及以下 640 户、占比 7.0%,建议纳入年度复审名单并提高抽查比例。'</li>
      <li style="borderTop:1px dashed #C7C7C7; paddingTop:6px; marginBottom:4px"><span style="bold:true; color:#1F4E79">'建议:'</span>'对 A 级企业开展“提级辅导”,力争两年内把 AA 级及以上占比提升至 50%。'</li>
    </list>
    <p style="textAlignment:right; color:#8a939b; fontSize:8pt">'注:等级数据按季度更新,占比四舍五入保留一位小数,合计可能存在 0.1 个百分点的尾差。'</p>
  </div>
</body>
</pdf>
相关文章
|
15天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
6407 45
|
3天前
|
云安全 人工智能 安全
|
15天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
5228 62
|
10天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
2578 6
|
2天前
|
JSON 前端开发 API
阿里云最新Qwen4-Max大模型介绍:模型定位、特征、能力、适用场景解析
2026 年 11 月 11 日,阿里发布第四代旗舰模型Qwen4-Max预览版,首发千问 AI 平台 Token Plan,并同步接入千问办公、Qoder 等入口。该版本聚焦知识理解、世界感知、编程与 Agentic 四项升级,主打复杂编程、专业办公、前端设计与专业软件操作。预览期至 11 月 25 日 24:00,到期后模型标识下线;限时 2 折、新用户再享 5 折,最低 1 折可体验。
|
7天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1644 1
|
2天前
|
人工智能 前端开发 API
阿里云Qwen4-Max 大模型详解:定位、特征、能力、适用场景与相对Qwen3-Max差异解析
2026年11月11日,阿里发布第四代旗舰模型Qwen4-Max预览版,首发千问AI平台Token Plan并接入千问办公、Qoder等入口。该版本聚焦知识理解、世界感知、编程与Agentic四项升级,主打复杂编程、专业办公、前端设计与专业软件操作等真实任务。预览期为11月11日10:00至11月25日24:00,仅支持Token Plan调用,到期后模型标识下线;限时2折、新用户再享5折,最低1折可体验。

热门文章

最新文章