Skip to main content
Nintex Community Menu Bar
Question

Having Trouble Getting PDF attachment to save to disk

  • July 10, 2024
  • 2 replies
  • 0 views
  • Translate

Forum|alt.badge.img+6

I am trying to get a PDF that I have in an attachment object saved out to disk.

I am using something like this:

blobFile = results.models.PackingSlip.data[0].Body;
var bf = new Blob([results.models.PackingSlip.data[“0”].Body.realBlobValue.asByteArray ], {type : “application/pdf”});
saveAs(bf, “packingSlip.pdf”);

this is what the Body of the Attachement looks like from the Model. So skuid is retrieving the Attachment PDF correctly.

The PDF is downloaded correctly, however, when I go and view it. I get this:

So my question is:
How do I properly get the Blob from the object above so that its an actual PDF?

Thanks in advance.

Did this topic help you find an answer to your question?
This topic has been closed for comments

2 replies

Forum|alt.badge.img+6

I was able to figure it out through trial and error and google 🙂


var params = arguments[0],
$ = skuid.$;

var orderId = params.id,
acctName = params.Account__r.Name,
ordDate = params.Order_Date__c,
fileName =null;

fileName = “PackingSlip_” + ordDate + “_” + acctName + “.pdf”;

modelToFilter = skuid.model.getModel(‘PackingSlip’);
multipleCond = modelToFilter.getConditionByName(‘ParentId’);
modelToFilter.setCondition(multipleCond, orderId);
modelToFilter.updateData( function (results) {

    var theBlobData = null,
    theByteArray = null,
    byteCharacters = null,
    byteNumbers = null;
    byteArray = null,
    theBlobFile = null;

    theBlobData = results.models.PackingSlip.data[0];
    theByteArray = theBlobData.Body.realBlobValue.asByteArray;
    byteCharacters = atob(theByteArray);
    byteNumbers = new Array(byteCharacters.length);
    
    for (var i = 0; i < byteCharacters.length; i++) {
        byteNumbers[i] = byteCharacters.charCodeAt(i);
    }
    byteArray = new Uint8Array(byteNumbers);
    theBlobFile = new Blob([byteArray], {type : “application/pdf”});
    saveAs( theBlobFile, fileName);
});


this works.
Note it uses FileSaver.js for the saveAs() method.

Hope it helps someone.


Translate

Forum|alt.badge.img+6

This is a little troubling:

Why is the asByteArray attribute in different locations:
for example for the OrderReceipt (which is an attachement)
the results.models.OrderReceipt.data[0]
looks like this:

But for another attachment file:
results.models.PackingSlip.data[0]
it looks like this:

Both the models are pointing to the Attachment object and are similar:

Why am I getting the Body looking differently?

Translate

Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie Settings