groovy中的Base64字符串到pdf

groovy中的Base64字符串到pdf,pdf,groovy,base64,Pdf,Groovy,Base64,我是groovy和这个论坛的新手。 我正在使用一个中间件工具(SAP CPI),在这里我得到一个base64字符串格式的pdf。我需要将pdf发送到另一个系统。 这就是我所做的: 将Base64输入存储在字符串中 通过Base64解码器传递(这是一个内置函数) 使用下面的代码并将base64字符串作为输入传递给“body”: 我得到的输出如下所示: %PDF-1.7 %???? 50 obj endobj 140 obj PDF不是字符串。所以,当您尝试将字节转换为字符串outputStre

我是groovy和这个论坛的新手。 我正在使用一个中间件工具(SAP CPI),在这里我得到一个base64字符串格式的pdf。我需要将pdf发送到另一个系统。 这就是我所做的:

  • 将Base64输入存储在字符串中
  • 通过Base64解码器传递(这是一个内置函数)
  • 使用下面的代码并将base64字符串作为输入传递给“body”:
我得到的输出如下所示:

%PDF-1.7
%????
50 obj
endobj
140 obj

PDF不是字符串。所以,当您尝试将字节转换为字符串outputStream.toString()时出现了问题。感谢您的响应。我已尝试删除toString()并使用二进制输出。我将输出复制粘贴到记事本中,并将其保存为pdf文件。但当我打开它时,它仍然会给我同样的错误。还有什么我应该尝试的吗?你不能将粘贴二进制数据复制到记事本中,因为记事本只支持文本编码。做了一些进一步的调整,结果发现将其转换为字符串实际上是个问题。代码如下所示:import com.sap.gateway.ip.core.customdev.util.Message;导入java.util.HashMap;def Message processData(Message Message){def text=Message.getBody(String)byte[]decoded=text.decodeBase64()def out=new String(decoded)Message.setBody(out)return Message}现在我可以以pdf格式打开输出。非常感谢。
import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;

def Message processData(Message message){

  def body = message.getBody(String.class);

  ByteArrayOutputStream outputStream = new ByteArrayOutputStream()

  outputStream.write(body.getBytes())

  message.setBody(outputStream.toString())

  return message;
}