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

JMeter中PDF转换生成空白PDF的问题及解决需求

JMeter中PDF二进制内容的存储与还原解决方案

问题核心

直接存储File对象或把二进制PDF转成普通字符串会导致内容丢失或乱码,必须以字节数组形式存储PDF的完整二进制数据,这是保证还原后内容正常的关键。

步骤1:读取PDF并存储为字节数组变量

使用JSR223 Sampler(推荐)或__groovy函数,将PDF文件的二进制内容读取为字节数组,存入JMeter变量:

// 读取PDF文件为字节数组
byte[] pdfBytes = new File("my_original.pdf").bytes
// 存入JMeter变量(vars.putObject支持存储对象类型)
vars.putObject("pdfContent", pdfBytes)

如果用__groovy函数直接在用户定义变量中设置:

${__groovy(vars.putObject("pdfContent", new File("my_original.pdf").bytes),)}

步骤2:执行其他无关操作

此阶段正常执行测试计划中的其他逻辑,只要不修改pdfContent变量即可。

步骤3:从变量还原PDF文件

再次使用JSR223 Sampler,取出字节数组并写入新PDF文件:

// 从变量中取出字节数组
byte[] storedBytes = vars.getObject("pdfContent")
// 写入新PDF文件
new File("restored.pdf").bytes = storedBytes

为什么之前的方法失败?

  • 存储File对象:仅保存了文件路径引用,而非实际内容,后续操作中如果文件路径变化或被删除,就无法还原。
  • 用props.put存储:props是JMeter属性,只能存储字符串类型,二进制转字符串会导致编码丢失,出现%âãÏÓ这类乱码,本质是二进制数据被错误编码为文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:31:06