JasperReports 7.0.0实战:从模板编译到PDF导出的完整流程
简介作为一套开源报表工具库JasperReports 7.0.0 完整项目源码包面向 Java 后端开发与报表技术研究者用于解决 Java 应用中复杂报表的生成、样式设计与多格式导出问题特别适合需要在 Spring 等主流框架中集成报表功能的开发场景。包内共 2000 个文件其中 1687 个 Java 源码文件构成核心逻辑121 个 XML 文件包含报表定义与配置73 个 Properties 文件负责国际化与运行参数另有 Markdown 文档、JSON 配置、TXT 清单及展示层所需的 HTML/CSS 模板和 JSP 示例页面整体压缩包约 19.07MB。已有 1986 人学习下载。通过阅读源码与配套模板可以深入掌握 JasperReports 的编译、填充、导出 API 调用方式理解内置样式表与前端展示的衔接熟悉报表定义从构建到输出的完整流程同时得益于源码、配置、模板、文档分层的项目结构读者能按需查阅关键模块结合示例代码快速定位核心类与调用关系为二次开发或定制化报表引擎提供直接参考。1. JasperReports 到底是什么7.0.0 能替你把报表交付这件事拆成三段很多开发者第一次拿到 JasperReports 7.0.0 时以为它是拖拽画报表的设计器真正跑起来才发现这是一条流水线模板先编译、数据再填充、最后按需导出。7.0.0 是 2024 年 6 月发布的库资源拿到后作为普通 jar 依赖进 Java 工程就能开工适合订单、对账、库存这类需要批量打印和定版输出的场景。它的核心价值是把排版和业务数据拆开模板归模板数据归数据同一个底稿能同时给出 PDF、Excel、Word。只要你有 Java 基础按下面的流程走 20 分钟第一个文件就能落盘。2. 从 JRXML 到 PDF三步主流程与第一个可运行例程JasperReports 7.0.0 的核心抽象其实只有三个编译产物 JasperReport、填充产物 JasperPrint、导出器 Exporter。搞懂这三样东西后面所有配置都是在为它们服务。2.1 先理解三步主流程编译、填充、导出设计器导出的.jrxml文件本质是 XML里面描述页面的 band 布局、字段引用和参数占位。模板不能直接渲染需要先交给编译层转成 JasperReport 对象这一步相当于把文本模板“固化”成内存里的可执行结构甚至能序列化到磁盘缓存。用户请求进来时再做填充把参数 Map 和数据源 JRDataSource 喂给编译产物得到 JasperPrint这是已经算好页面模型的中间结果。最后一步导出只是把 JasperPrint 交给不同格式的 exporter 写成一个文件或流不再做任何数据计算。选型上我一般建议把编译和填充拆开是因为企业里模板变动的频率远低于出数频率。一个对账单模板上线后往往要用几个月每天填充几十次编译一次、复用多次能省掉大量重复解析。反过来如果你把编译结果存成.jasper文件每次直接加载二进制对象启动时间还能再压缩几十毫秒。7.0.0 的引擎入口沿用 net.sf.jasperreports 那套 API从 6.x 迁过来的代码主流程基本不用改。2.2 依赖引入与版本组合pom 里最省心的配置Maven 工程引入主包是这个坐标dependency groupIdnet.sf.jasperreports/groupId artifactIdjasperreports/artifactId version7.0.0/version /dependency这个坐标会带上一部分传递依赖但实际项目里你多半还要手动补下面这几个否则会在导出阶段才暴雷用途坐标 / 包名说明核心引擎net.sf.jasperreports:jasperreports:7.0.0必须提供编译、填充、导出PDF 底层com.lowagie:itext:2.1.7一般由主包传递引入别手动升到 5.xXLSX 导出org.apache.poi:poi-ooxml需要导出 Excel 时再手动追加JSON 数据源com.fasterxml.jackson.core:jackson-databind模板走 JSON 数据源时追加字体扩展jasperreports-fonts中文 PDF 导出强烈建议加这里最容易翻车的是 iText 和 POI 的版本。JasperReports 内部对 iText 2.x 有一套老接口依赖你把 iText 升到 5.x 后表面上编译不报错一跑就给你抛 NoClassDefFoundError。POI 同理主包不会替你带 poi-ooxml要导 xlsx 就得显式声明而且版本要跟主包兼容的线走别用太新的 5.x 强配。2.3 第一个可运行例程Java 直接编译 JRXML 导 PDF下面这段代码是最小闭环不依赖任何框架拷到 main 方法里就能跑import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.*; public class FirstReport { public static void main(String[] args) throws Exception { // 1. 编译模板JRXML 变成可执行的报表对象 JasperReport jasperReport JasperCompileManager.compileReport( new FileInputStream(report/order_list.jrxml)); // 2. 准备参数模板里用 $P{...} 引用的值都从这里取 MapString, Object params new HashMap(); params.put(TITLE, 2024年6月订单对账单); params.put(CURRENCY, CNY); // 3. 准备数据源JavaBean 集合字段名和 getter 对应 ListOrderRow rows buildRows(); JRBeanCollectionDataSource dataSource new JRBeanCollectionDataSource(rows); // 4. 填充参数 数据源 合成页面模型 JasperPrint JasperPrint jasperPrint JasperFillManager.fillReport( jasperReport, params, dataSource); // 5. 导出页面模型写进输出流 JasperExportManager.exportReportToPdfStream( jasperPrint, new FileOutputStream(output/order_list.pdf)); } }逻辑说明compileReport 接受 InputStream 或文件路径返回值 JasperReport 一旦生成就不再变动可以放进缓存fillReport 每次调用都会返回一个全新的 JasperPrint不会污染上一个请求的状态exportReportToPdfStream 只负责把页面模型写出去所以同一个 JasperPrint 理论上可以导出多次。参数说明params 里的 key 必须和 JRXML 中$P{参数名}完全一致JRBeanCollectionDataSource 通过反射读取集合元素的 getter模板字段名要跟属性名匹配比如orderNo对应getOrderNo()大小写不一致静默取不到值表现为整列为空。还有一个新手必踩的细节输出文件路径要先new File(output/).mkdirs()否则 FileOutputStream 会直接抛 NoSuchFileException。我把这条写进代码习惯里从那以后基本没再被这个低级问题卡过。3. 接进 Spring Boot 输出报表模板定位、数据源注入与并发边界把报表从“本地跑通”升级成“接口可调用”要处理的就不再是语法问题而是工程问题模板放哪、数据从哪来、怎么响应浏览器下载、高并发下会不会互相踩踏。3.1 模板放哪、怎么读classpath 与缓存策略我习惯把.jrxml放在src/main/resources/reports/下这样打 jar 包时模板会自动进 classpath迁移环境不用改路径。拿到模板流的方式有两种最省事的是用 Spring 的 ResourceLoaderService public class ReportTemplateLoader { private final ResourceLoader resourceLoader; public ReportTemplateLoader(ResourceLoader resourceLoader) { this.resourceLoader resourceLoader; } public JasperReport loadCompiled(String fileName) throws Exception { Resource resource resourceLoader.getResource( classpath:reports/ fileName); try (InputStream in resource.getInputStream()) { return JasperCompileManager.compileReport(in); } } }这里有一个容易忽略的点classpath:reports/order_list.jrxml在 IDE 里跑没问题但打成 fat jar 之后getInputStream()拿到的仍然是一个可读流JasperReports 编译时不需要物理文件路径所以不会像 File 方式那样在 jar 内路径上翻车。每次请求都调 compileReport 会有大约几十毫秒的解析开销生产环境我一般会把 JasperReport 对象用 ConcurrentHashMap 缓存起来只对模板文件的 lastModified 做一次轻量校验。3.2 数据源注入从 List 到 JRBeanCollectionDataSource报表接口的后端逻辑通常是查库得到 List再包装成 JRDataSource 填进去。核心代码很短ListOrderRow rows orderMapper.queryRange(startDate, endDate); JRBeanCollectionDataSource dataSource new JRBeanCollectionDataSource(rows); MapString, Object params new HashMap(); params.put(START_DATE, startDate); params.put(END_DATE, endDate); params.put(SUMMARY, rows.stream() .map(OrderRow::getAmount) .reduce(BigDecimal.ZERO, BigDecimal::add)); JasperPrint print JasperFillManager.fillReport( JasperReportCache.get(order_list), params, dataSource);参数说明JRDataSource 是一个流式接口填充引擎会反复调用next()判断是否还有下一行数据因此传入的集合在填充结束前不能被外部修改模板里想显示汇总金额时不要试图在 JRXML 里写 SUM 表达式直接在 params 里算好传进去最稳妥。空集合的情况下 fillReport 不会报错但模板只会渲染报表头明细区一片空白这个现象下面第 4 章会专门说破解办法。3.3 控制器按需导出PDF、XLSX、RTF 的输出流处理接口层要做的是把 JasperPrint 转成字节数组再通过 ResponseEntity 返回。PDF 走 JasperExportManager 最省事Excel 需要显式使用 XLSX 导出器GetMapping(/reports/order-list) public ResponseEntitybyte[] exportOrderList( RequestParam String format, RequestParam String startDate, RequestParam String endDate) throws Exception { JasperReport report JasperReportCache.get(order_list); ListOrderRow rows orderMapper.queryRange(startDate, endDate); JRBeanCollectionDataSource dataSource new JRBeanCollectionDataSource(rows); MapString, Object params new HashMap(); params.put(START_DATE, startDate); params.put(END_DATE, endDate); JasperPrint print JasperFillManager.fillReport(report, params, dataSource); ByteArrayOutputStream out new ByteArrayOutputStream(); if (pdf.equals(format)) { JasperExportManager.exportReportToPdfStream(print, out); } else if (xlsx.equals(format)) { JRXlsxExporter exporter new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(print)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out)); exporter.exportReport(); } else if (rtf.equals(format)) { JRRtfExporter exporter new JRRtfExporter(); exporter.setExporterInput(new SimpleExporterInput(print)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out)); exporter.exportReport(); } else { throw new IllegalArgumentException(unsupported format: format); } String fileName order_list_ startDate _ endDate . format; return ResponseEntity.ok() .header(Content-Disposition, attachment; filename fileName) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(out.toByteArray()); }逻辑说明XLSX 和 RTF 导出器都需要先 setExporterInput / setExporterOutput再接 exportReport()三段式不能少。PDF 走 JasperExportManager 是因为它对页面模型做了默认的缩放和字体处理内部也是调 exporter只是帮你包了一层。严格说 RTF 和 DOCX 不是同一种格式但大多数打印场景下 RTF 足够要原生 DOCX 得引入官方扩展包里单独的导出器依赖会重不少。3.4 并发边界能缓存的和不能复用的报表服务最容易出并发问题的地方不是数据源而是对象复用。我的习惯是三个原则JasperReport 编译产物可以缓存并线程安全复用JasperPrint 每个请求独立创建绝对不能放进全局缓存给别人读Exporter 实例每个请求 new 一个不要做成 Spring 单例 Bean。Component public class JasperReportCache { private final ConcurrentHashMapString, JasperReport cache new ConcurrentHashMap(); public JasperReport get(String key, SupplierJasperReport loader) { return cache.computeIfAbsent(key, k - loader.get()); } }这段代码回答了一个真实问题fillReport 本身是无状态的每次返回新对象所以即使 100 个线程同时调同一个 JasperReport 各自填充导出也不会互相污染。真正危险的是把 JasperPrint 塞进静态变量——多个导出器同时读同一个页面模型时内部字体映射和样式游标会发生奇怪的错乱表现为有时 PDF 正常有时缺行。我已经把“JasperPrint 不进缓存”写成了团队约定基本根除了这类玄学故障。4. 避坑排查升级 7.0.0 后最容易翻车的五类问题这一章汇总我实际踩过的坑每一条都是“现象 → 原因 → 解决”的完整链。如果你迁移到 7.0.0 后出了问题先按这个顺序排查能省下大半天的检索时间。4.1 中文变成方框字体配置问题现象PDF 里中文标题正常但明细字段里的中文全部显示成方框。原因模板里没有显式声明中文字体JasperReports 导出 PDF 时默认用内置的 Helvetica它没有中文字形。解决在两个位置下手一是 JRXML 的 textElement 里指定字体textField reportElement x0 y0 width200 height30/ textElement font fontNameSimSun pdfFontNameSTSong-Light isPdfEmbeddedfalse/ /textElement textFieldExpression![CDATA[$P{TITLE}]]/textFieldExpression /textField二是引入 jasperreports-fonts 扩展包并在工程里放 fonts.xml 做字体映射。前者适合快速改单个字段后者适合全项目统一字体。注意pdfFontName用的是 PDF 内嵌字体名不是操作系统字体名写错了一样是方框isPdfEmbedded设 false 可以让 PDF 体积小很多但如果对方机器没装对应字库换台设备打开又变方块敏感场景建议设 true。4.2 NoClassDefFoundError底层 jar 版本账现象编译和填充都正常一执行exportReportToPdfStream就抛NoClassDefFoundError: com/lowagie/text/DocumentException。原因工程里引入了 iText 5.x 或更高版本把 JasperReports 传递依赖的 iText 2.1.7 覆盖了老接口不存在。解决在 pom 里排除高版本 iText或者统一由主包传递依赖来定版本dependency groupIdnet.sf.jasperreports/groupId artifactIdjasperreports/artifactId version7.0.0/version /dependency我见过最严重的案例是某项目为了生成二维码引了 iText 5.x报表一上线就挂最后花了两小时定位。排查这类问题不要看编译期直接看运行时的异常栈第一行凡是 com/lowagie 开头的基本就是把老 iText 覆盖了。4.3 模板改了不生效编译缓存问题现象在 resources 里改了 JRXML重新启动后输出还是旧样式。原因一是 IDE 没有把新文件复制到 target/classes二是代码里缓存了 JasperReport 对象编译只发生了一次。解决先mvn clean再启动别用增量编译缓存场景里给缓存 key 加上文件哈希或 lastModifiedString key fileName : resource.getFile().lastModified();开发环境图省事可以直接不缓存每次编译一旦上了生产还是要用带时间戳的缓存方案既保证模板能热更新又不至于每请求都编译一遍。4.4 日期与千分位不对locale 和 pattern 的斗争现象模板里写了new SimpleDateFormat(yyyy-MM-dd)但 PDF 导出后日期显示成2024-06-17 00:00:00数字的千分位在英文环境下变成了1,234.56而不是中文习惯的1,234.56。原因JRXML 的 pattern 优先于 Java 的 SimpleDateFormat字段类型不匹配时填充引擎会用默认格式兜底。解决在 JRXML 里显式写 patterntextField patternyyyy-MM-dd reportElement x0 y0 width120 height25/ textFieldExpression![CDATA[$F{orderDate}]]/textFieldExpression /textField同时把 locale 作为参数传进去params.put(JRParameter.REPORT_LOCALE, Locale.CHINA)数字格式和日期格式就都跟着中文习惯走了。这个坑很容易被误判成数据问题实际是格式化层在作祟。4.5 数据源为空只渲头不渲明细现象查询条件没匹配到任何记录导出的 PDF 只有表头和一个空白数据区用户认为功能坏了。原因JRBeanCollectionDataSource 集合为空时fillReport 正常执行但 detail band 没有行可渲染。解决填充前做一次空判断给参数里塞一个空数据标记if (rows null || rows.isEmpty()) { params.put(EMPTY_TIP, 当前条件下没有符合条件的记录); dataSource new JREmptyDataSource(1); }模板里用一个独立的文本字段绑定$P{EMPTY_TIP}空数据时就显示一行提示而不是交一张残缺的报表。这个设计在业务侧的反馈里价值很高用户不会再拿着空白 PDF 来问“是不是系统坏了”。5. 把模板玩出花参数表达式、子报表与上线前自检5.1 参数表达式模板里的三元逻辑JRXML 的 expression 支持写 Java 语法可以在模板里做简单的动态展示。比如金额超过一万显示“大额”否则显示“普通”textFieldExpression ![CDATA[$F{amount} ! null $F{amount} 10000 ? 大额 : 普通]] /textFieldExpression注意这里的比较发生在模板渲染阶段大数据量下每个单元格都做一次判断是有性能代价的。我的建议是只用于少量文本字段的展示分支复杂的业务判断留在 Java 层算好再传参。5.2 子报表拆分把明细块做成可复用件遇到一单多明细、明细里又分小计的场景我会把重复的明细块拆成独立子报表主报表用 subreport 标签引用subreport reportElement x0 y0 width515 height30/ subreportParameter namePARENT_ID subreportParameterExpression ![CDATA[$P{ORDER_ID}]] /subreportParameterExpression /subreportParameter subreportExpression ![CDATA[order_items.jasper]] /subreportExpression /subreport子报表的好处是单独调整列宽、行高不会影响主模板不同业务模块可以复用同一份明细样式。代价是子报表越多编译时间越长超过三层嵌套时调试非常痛苦能拆两层就到头了。5.3 模板上线前的自检清单我给自己定了一套固定动作每次发模板前 10 分钟跑一遍第一步中文 PDF 打开检查是否有方框第二步查一次空数据源确认提示文案显示正常第三步连续导出 50 次 PDF 和 XLSX确认没有随机丢内容第四步检查模板缓存 key 是否含时间戳防止改了不生效第五步确认导出文件名里没有斜杠和空格否则下载时会被浏览器截断。这五步做完基本不会在用户那边翻车。JasperReports 7.0.0 这套库资源拿回来以后先别急着改模板把第 2 章的最小例程跑通再进 Spring Boot 接入最后遇到问题回来翻第 4 章的排查顺序。从那以后我每次发模板都强制走一遍自检清单五步十秒省掉的是用户那边“怎么不对”的一整轮沟通。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Matlab阶跃响应指标精准提取:上升时间、超调量手动计算方法

Matlab阶跃响应指标精准提取:上升时间、超调量手动计算方法

简介:本资源是一套面向控制工程学习者与MATLAB/Simulink实践者的阶跃响应性能指标自动化计算工具包,专为控制系统分析与控制器设计场景打造,适用于本科课程设计、毕业设计及工程调试等中初级应用需求。压缩包共3个文件(2个.m函数脚…

2026/10/16 23:35:00 阅读更多 →
从Excel到Pandas:百万级数据分析的实战入门与性能优化

从Excel到Pandas:百万级数据分析的实战入门与性能优化

上周帮一个零售团队处理他们的销售流水,一份两百多兆的Excel文件,打开就卡,等了三分钟才看到那一百多万行数据。列一多、表一宽,Excel直接进入半瘫痪状态。我当时的处理方案很简单:把数据丢给Pandas,用Pyth…

2026/10/16 23:32:57 阅读更多 →
最短时间搞定论文参考文献加注:工具实操指南

最短时间搞定论文参考文献加注:工具实操指南

写论文这件事,大家普遍卡在最后一步:参考文献。内容写得差不多了,导师看完正文说“引用格式不对”“缺了几篇文献”“这个期刊要求作者名全拼”,你才意识到光是参考文献就能改一个通宵。我见过不少朋友因为参考文献排版把自己熬到…

2026/10/16 23:32:57 阅读更多 →

最新新闻

Pandas取单个值的性能陷阱与at/iat/get_loc高效选型指南

Pandas取单个值的性能陷阱与at/iat/get_loc高效选型指南

1. 项目概述:为什么在Pandas里“取一个值”还要专门研究?在某次处理千万级用户行为日志时,我遇到一个看似荒谬的问题:一段只取单个单元格值的代码,耗时竟占整个数据清洗流程的42%。当时用的是df.iloc[1000, 5]&#xf…

2026/10/17 0:25:55 阅读更多 →
英鹏飞TST42-48R电机驱动板UART通讯协议与寄存器实战解析

英鹏飞TST42-48R电机驱动板UART通讯协议与寄存器实战解析

简介:本资源是面向工业自动化开发者与嵌入式工程师的英鹏飞TST42-48R集成式闭环电机实操套件,聚焦ModbusRTU协议下的C#上位机控制开发,解决该型号电机资料稀缺、调试门槛高、缺乏可运行示例等实际痛点。压缩包共72个文件,含7个核心…

2026/10/17 0:25:55 阅读更多 →
SpringBoot 3.x中SpringDoc-OpenAPI最佳实践与安全加固

SpringBoot 3.x中SpringDoc-OpenAPI最佳实践与安全加固

1. 为什么Swagger在SpringBoot项目里总被“半放弃”?你肯定见过这样的场景:团队刚启动一个新SpringBoot后端项目,开发组长拍板“必须集成Swagger”,大家齐声应和。三天后,Swagger UI页面跑起来了,接口列表也…

2026/10/17 0:25:55 阅读更多 →
stc32g12单片机Modbus-RTU主机例程实战:RS485通信与CRC校验避坑指南

stc32g12单片机Modbus-RTU主机例程实战:RS485通信与CRC校验避坑指南

简介:基于STC32G12单片机的Modbus-RTU主机例程资源包,面向嵌入式开发者和工业自动化爱好者,解决在8051内核单片机上实现Modbus主机通信的问题。压缩包共140个文件,类型以72个C源文件与62个头文件为主,另有工程配置、HE…

2026/10/17 0:24:54 阅读更多 →
Proteus仿真STM32 PWM:从零搭建可测可控的数字孪生调试环境

Proteus仿真STM32 PWM:从零搭建可测可控的数字孪生调试环境

简介:本资源是面向嵌入式初学者与STM32课程实训学生的ProteusKeil联合仿真教学包,聚焦PWM原理理解与工程实现,解决学生在定时器配置、PWM输出调试及软硬件协同验证中的常见痛点。压缩包共132个文件,含34个头文件(h&…

2026/10/17 0:24:54 阅读更多 →
D-PDU API详解:汽车诊断的标准化接口规范

D-PDU API详解:汽车诊断的标准化接口规范

简介:本资源为ISO 22900-2:2017标准第二部分(D-PDU API)的完整中英文对照文档,面向汽车电子诊断系统开发工程师、车载通信协议研究人员及OBD/UDS工具开发者。该标准定义了模块化车辆通信接口(MVCI)中诊断协…

2026/10/17 0:24:54 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →