Java 如何将ByteBuffer转换为pdf

Java 如何将ByteBuffer转换为pdf,java,pdf,automation,pdfbox,bytebuffer,Java,Pdf,Automation,Pdfbox,Bytebuffer,在我的应用程序中,pdf报告仅在打印预览中打开,允许用户直接打印pdf文档。现在,我想自动执行此操作以验证pdf内容 我通过base64中的api获得了pdf内容[did split to get only data],我尝试在解码后转换为字节数组,但它只打印垃圾字符。[字节数组到字符串] 现在,我已经将这些数据转换成ByteBuffer格式,并希望以pdf格式编写 ByteBuffer decodedBytes = new BASE64Decoder().decodeBufferToByteB

在我的应用程序中,pdf报告仅在打印预览中打开,允许用户直接打印pdf文档。现在,我想自动执行此操作以验证pdf内容

我通过base64中的api获得了pdf内容[did split to get only data],我尝试在解码后转换为字节数组,但它只打印垃圾字符。[字节数组到字符串] 现在,我已经将这些数据转换成ByteBuffer格式,并希望以pdf格式编写

ByteBuffer decodedBytes = new BASE64Decoder().decodeBufferToByteBuffer(
    new String(base64split2[1].substring(0, base64split2[1].length() - 1))
);
有人能告诉我如何将字节数的字节数转换成pdf格式吗

谢谢


使用上述代码转换为pdf。

写入该文件buffer@josejuan我可以将一个字节写入文件,但当我尝试写入bytebuffer时,我得到了这样的结果:FileOutputStream类型中的方法write(int)不适用于参数(bytebuffer),然后查找“如何将
bytebuffer
写入文件”(与应用程序、报表和pdf无关)请看,您可以使用
ByteBuffer.array()
将其转换为字节数组,然后写入该数组。但我不确定这是否是您的问题。或者您可以在字符串上使用
Base64.getDecoder().decode()
,它将带来一个字节数组。顺便说一句,“新字符串”字符串上不需要。您可以直接调用
PDDocument.load(decodedBytes)
,这样速度更快,内存占用更小。(因为传递inputStream将强制PDFBox缓存-PDFBox假定inputStream是顺序的,PDF解析需要随机访问)。
  byte[] decodedBytes = new BASE64Decoder().decodeBuffer(str);
        InputStream targetStream = new ByteArrayInputStream(decodedBytes);
        PDDocument document = PDDocument.load(targetStream);
        document.save("C:/test.pdf");
        FileUtils.writeByteArrayToFile(new File("C:/test.pdf"), decodedBytes);