我们将Base 64编码的图形图像作为webservice响应,我们必须将其转换为PDF文件。我们使用下面的代码片段从base 64编码的图形图像转换为pdf doc。
// First decode the Base 64 encoded graphic image
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(s);
// Create the pdf file
File file = new File("output.png");
FileOutputStream fop = new FileOutputStream(file);
fop.write(decodedBytes);
fop.flush();
fop.close();
但是当我们打开pdf文件时,我们会收到以下错误。
Adobe Reader无法打开“output.pdf”,因为它不是受支持的文件类型,或者因为文件已损坏。
我们尝试了下面的PDF框,
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(s);
ImageToPDF imageToPdf = new ImageToPDF();
imageToPdf.createPDFFromImage("output.pdf", decodedBytes.toString());
这对我们也没有帮助。请建议我从Base 64编码图形图像创建pdf文件的方法。
答案 0 :(得分:0)
我觉得你在这里错过了一步。请尝试以下
String base64String = “BORw0KGgoAAAANSUhEUgAAAUAAAAHgCAYAAADUjLREAAAgAElEQVR4AexdB4BU1dX + ZmZ7ZWGX3pHeu6goitgQDCZGjdHYu4nGqL81mmaJvdd”;
BASE64Decoder decoder = new BASE64Decoder(); byte[] decodedBytes = decoder.decodeBuffer(base64String); log.debug("Decoded upload data : " + decodedBytes.length); String uploadFile = "/tmp/test.png"; log.debug("File save path : " + uploadFile); BufferedImage image = ImageIO.read(new ByteArrayInputStream(decodedBytes)); if (image == null) { log.error("Buffered Image is null"); } File f = new File(uploadFile); // write the image ImageIO.write(image, "png", f);
请注意,此示例使用sun.misc.BASE64Decoder
,但我建议不要使用它,但使用其他一些开源解码器(例如apache commend-codec库是好的并且被广泛使用。)。
ImageToPDF
将其转换为PDF文件。