如何手动初始化SOAP服务获取的PDF字节数组以写入文件?
解决SOAP服务返回Base64字符串转PDF字节数组的问题
你从SOAP WebService拿到的长字符串是Base64编码后的PDF字节流,不是直接可用的原始字节数组,所以得先完成Base64解码才能写入PDF文件。下面给你完整的示例代码,包含手动初始化变量和转码的完整流程:
核心步骤说明
- 将服务返回的Base64字符串赋值给String变量
- 用Java自带的Base64工具类解码字符串,得到PDF原始字节数组
- 用你已写好的文件输出流代码写入PDF文件
完整示例代码
import java.io.File; import java.io.FileOutputStream; import java.util.Base64; public class SoapPdfWriter { public static void main(String[] args) { // 1. 手动初始化从SOAP服务接收的Base64字符串 String soapBase64Response = "JVBERi0xLjUKJeLjz9MKMyAwIG9iago8PC9Db2xvc.....KOTMzMzIKJSVFT0YK"; try { // 2. 解码Base64字符串为PDF原始字节数组 byte[] pdfBytes = Base64.getDecoder().decode(soapBase64Response); // 确保目标目录存在(避免文件找不到异常) File outputDir = new File("C:\\temp\\"); if (!outputDir.exists()) { outputDir.mkdirs(); } // 3. 将字节数组写入PDF文件 FileOutputStream outputStream = new FileOutputStream("C:\\temp\\report.pdf"); outputStream.write(pdfBytes); outputStream.close(); System.out.println("PDF文件已成功生成!"); } catch (Exception e) { e.printStackTrace(); } } }
额外注意事项
- 如果你的项目使用Java 7及更低版本,Java标准库没有自带
java.util.Base64,可以改用Apache Commons Codec库的Base64.decodeBase64()方法,需要先引入对应依赖 - 确保
C:\\temp\\目录有读写权限,否则会抛出权限相关异常
内容的提问来源于stack exchange,提问作者Vin99999




