You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中如何使用JSR223 PostProcessor保存变量值到PDF文件

JMeter通过JSR223 PostProcessor将变量值写入PDF实现方案

前置准备

  • 准备PDF生成依赖包(以常用的iText 5.x系列为例),将对应的核心jar包放入JMeter安装路径下的/lib目录,完成后重启JMeter让依赖生效
  • 提前通过正则提取、JSON提取、XPath提取等方式完成data变量的提取,可先添加Debug Sampler验证变量能正常取值,不存在空值、取值错误问题

组件配置步骤

  • 在需要提取data变量的采样器(如HTTP请求)上右键,依次选择「后置处理器」→「JSR223 PostProcessor」添加组件
  • 在组件配置页的Language下拉菜单中选择Groovy,该语言为JMeter官方推荐脚本选项,编译缓存机制下性能远高于Beanshell、JavaScript等其他脚本语言
  • 将下方提供的Groovy代码粘贴到脚本输入框中,按需调整PDF存储路径、写入模式等参数即可运行

可直接运行的脚本代码

// 导入PDF操作所需核心类
import com.itextpdf.text.Document
import com.itextpdf.text.Paragraph
import com.itextpdf.text.pdf.PdfWriter
import java.io.FileOutputStream

// 通过JMeter内置vars对象获取待写入的变量值,不要直接在脚本中硬编码${data}占位符,避免影响Groovy编译缓存性能
String saveContent = vars.get("data")
// 空值校验,避免空指针异常
if (saveContent == null || saveContent.trim().isEmpty()) {
    log.warn("待写入PDF的data变量为空,跳过本次写入操作")
    return
}

// 定义PDF输出路径,默认存储在JMeter启动目录(bin文件夹)下,可替换为自定义绝对路径
String pdfSavePath = "jmeter_extract_result.pdf"
// 加类锁避免并发场景下多线程同时写入文件,导致文件损坏、内容乱序
synchronized (this.class) {
    Document pdfDoc = new Document()
    try {
        // FileOutputStream第二个参数为true代表追加写入,false代表每次运行覆盖原有文件,可按需调整
        PdfWriter.getInstance(pdfDoc, new FileOutputStream(pdfSavePath, true))
        pdfDoc.open()
        // 将内容写入PDF段落,可自行扩展设置字体、字号、页边距等格式
        pdfDoc.add(new Paragraph(saveContent))
    } catch (Exception e) {
        log.error("写入PDF文件发生异常", e)
    } finally {
        // 必须关闭文档释放文件资源
        if (pdfDoc.isOpen()) {
            pdfDoc.close()
        }
    }
}

注意事项

  • 依赖适配:如果使用iText 7及以上版本,包名、类名会有调整,对应修改import导入路径即可
  • 中文乱码处理:如果data变量包含中文内容,需要额外引入支持中文的字体文件,在创建段落时指定对应字体,否则PDF中会显示乱码方块
  • 路径规则:配置自定义存储路径时,Windows系统需要对路径分隔符做转义,例如D:\\test_result\\output.pdf;Linux、Mac系统直接使用正常路径即可,例如/Users/xxx/jmeter/result.pdf
  • 性能优化:脚本中统一使用vars.get("变量名")的方式获取JMeter变量,不要直接在Groovy代码中写${变量名}占位符,否则会破坏Groovy的编译缓存机制,大幅降低高并发场景下的脚本执行效率

内容的提问来源于stack exchange,提问作者Pratik Dey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:36:22