user3509208
user3509208

Reputation: 557

Amazon Merchant Fulfilment Create Shipment Label

I am trying to get the shipment label from amazon merchant fulfillment as per the instructions mentioned on the Amazon pages.

"To obtain the actual PDF document, you must decode the Base64-encoded string, save it as a binary file with a “.zip” extension, and then extract the PDF file from the ZIP file." Has any one got it to work. I have tried couple of things but every time i get blank pdf.

Here is my code. Can please some body guide me if I am doing it correctly

byte[] decodedBytes = Base64.decodeBase64(contents);
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("c:\\output\\asdwd.zip")));
                    //now create the entry in zip file

ZipEntry entry = new ZipEntry("asd.pdf");
zos.putNextEntry(entry);
zos.write(decodedBytes);
zos.close();  

Upvotes: 0

Views: 202

Answers (2)

user3509208
user3509208

Reputation: 557

Here is the code to generate a shipping label in case somebody needs it.

byte[] decoded = Base64.decodeBase64(contents);
                try (FileOutputStream fos = new FileOutputStream(zipFilePath + amazonOrderId + zipFileName)) {
                    fos.write(decoded);
                    fos.close();
                }

                file = new File(destDirectory + amazonOrderId + pngFile);
                if (file.exists()) {
                    file.delete();
                }
                try (OutputStream out = new FileOutputStream(destDirectory + amazonOrderId + pngFile)) {
                    try (InputStream in = new GZIPInputStream(
                            new FileInputStream(zipFilePath + amazonOrderId + zipFileName))) {
                        byte[] buffer = new byte[65536];
                        int noRead;
                        while ((noRead = in.read(buffer)) != -1) {
                            out.write(buffer, 0, noRead);
                        }
                    }
                }

Upvotes: 0

Stephen C
Stephen C

Reputation: 718798

The instructions say to save the bytes as a binary file with the extension .zip.

What you are actually doing is creating a ZIP file with the contents of the byte array as an entry.

According to my reading of the instructions, your code should do this:

byte[] decodedBytes = Base64.decodeBase64(contents);
FileOutputStream fos = new FileOutputStream("c:\\output\\asdwd.zip");
fos.write(decodedBytes);
fos.close();

Or better still:

byte[] decodedBytes = Base64.decodeBase64(contents);
try (FileOutputStream fos = new FileOutputStream("c:\\output\\asdwd.zip")) {
    fos.write(decodedBytes);
}

Then using a ZIP tool or a web browser, open asdwd.zip, find the entry containing the PDF, and extract it or print it.

Upvotes: 2

Related Questions