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
相关产品推荐
相关产品推荐

