我整天都在撞墙。我有一个生成的PDF文件。 PDF文件在Acrobat中看起来不错。

我需要在base64中编码文件。使用Apache编解码器库,我这样做:

String base64buf = Base64.encodeBase64String( m_reportText.getBytes( "UTF-8" ) );


作为测试,我将base64buf写入文件:

Files.write( new File( "report.b64" ).toPath(), base64buf.getBytes( "UTF-8") );


然后我将其转换回去,以查看其是否正常工作:

String encodedName = "report.b64";
String decodedName = "report.pdf";

// Read original file.
byte[] encodedBuffer = Files.readAllBytes( new File( encodedName ).toPath() );

// Decode
byte[] decodedBuffer = Base64.decodeBase64( encodedBuffer );

// Write out decodedBuffer.
FileOutputStream outputStream = new FileOutputStream( decodedName );
outputStream.write( decodedBuffer );
outputStream.close();


我在Acrobat中打开report.pdf,它是空白文档。页数正确(全部为空白)。

我在这里想念什么?

最佳答案

m_reportText是一个字符串,因此包含Unicode文本。但是,PDF通常是二进制数据。确实应该避免这种情况,因为双向的多余转换是有损耗的,并且容易出错。对于黑客,您可以尝试按照ISO-8859-1的格式存储和检索PDF字节。

使用byte[] m_reportText

10-05 20:50
查看更多