You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何手动初始化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

火山引擎 最新活动