I was trying to generate PDf from byte array in Java which was returned through webservice, But the PDF cannot be opened. It shows its corrupted, I have attached my code. Anyone pls help about where i got wrong?
JSONObject o = new JSONObject(outjson); JSONObject jsonob = o.optJSONObject("PDF details"); byte[] pdfbyte=jsonob.optString("pdf bytearray").toString().getBytes(); String str1 = new String(pdfbyte); File someFile = new File("C:/Users/acer/Desktop/test1.pdf"); FileOutputStream fos = new FileOutputStream(someFile); byte[] byteData = str1.getBytes(); byte[] byteData1 = test.getBytes(); fos.write(pdfbyte); fos.flush(); fos.close(); Following is my JSON from webservice:
{"PDF details": { "id":"121", "pdf bytearray":"[B@62a58cd" } } Following is my webservice code which outputs bytearray in json:
public Response getPdf( ) { String flag=null; File file = new File("C:/Users/acer/Desktop/Report.pdf"); FileInputStream fileInputStream; byte[] data = null; byte[] finalData = null; ByteArrayOutputStream byteArrayOutputStream = null; fileInputStream = new FileInputStream(file); data = new byte[(int)file.length()]; finalData = new byte[(int)file.length()]; byteArrayOutputStream = new ByteArrayOutputStream(); fileInputStream.read(data); byteArrayOutputStream.write(data); finalData = byteArrayOutputStream.toByteArray(); fileInputStream.close(); System.out.println(finalData); JSONObject jsonObject = new JSONObject(); JSONObject mainjsonObject = new JSONObject(); jsonObject.put("id","121"); jsonObject.put("pdf bytearray",finalData); mainjsonObject.put("PDF details",jsonObject); flag = "" + mainjsonObject; return Response.status(200).entity(flag).build(); }
pdf bytearrayfrom your webservice is not valid. You need to fix the webservice.[B), followed by@followed by a hashCode (62a58cd). You should be able to realize by yourself that a whole PDF document can't possibly fit into 10 characters. Use base-64 to transform the pdf bytes into a printable string, and vice-versa.