Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Adobe Summit 2023 [19th to 23rd March, Las Vegas and Virtual] | Complete AEM Session & Lab list
SOLVED

Transferring Attachments

Avatar

Level 2

I have a database connected XFA form that opens and fills out a separate 'report' form before sending it to the client via email. The issue i'm having is trying to transfer over all PDF attachments to the report form so that they get sent along with the report form.

var doc = event.target;

var reportDoc = null;

var attachment = null;

var formData = dataBridge.getData();

//Open the report file

reportDoc = app.openDoc({

     cPath: "Design Request Report.pdf",

     oDoc: doc,

     bHidden: true

});

//Attach documents

if (doc.dataObjects) {

     doc.dataObjects.forEach(function(obj, i, a) {

          //Only pdf files will be supported

          if (obj.MIMEType == "application/pdf") {

               try {                   

                    attachment = doc.openDataObject(obj.name);

                    reportDoc.embedDocAsDataObject(obj.name, attachment);

                    attachment.closeDoc(true);

               }

               catch(err) {

                    if(attachment)

                         attachment.closeDoc(true);

     

                    errorUtil.throwError(err);

               }

          }

          else {

               xfa.host.messageBox("Warning: Only pdf attachments are currently supported.\n" + obj.name + " is about to be removed.");

          }

          doc.removeDataObject(obj.name);

     });

}

However regardless of the pdf attachment I use, I always get the following error when it tries to embed the attachment in the report:

InvalidArgsError: Invalid arguments.

Doc.embedDocAsDataObject:35:XFA:topmostSubform[0]:Page1[0]:button[0]:click

===> Expected 585365752 parameters.

Why won't Doc objects obtained from DataObjects embed themselves into another report?

Note that embedding event.target works as intended, but not an embedded version of the same file.

1 Accepted Solution

Avatar

Correct answer by
Level 2

In case anyone has the same problem here is the solution. Used the content stream versus the Doc object.

//Attach documents

if (doc.dataObjects) {

     doc.dataObjects.forEach(function(attachment, i, a) {

          var contentStream = doc.getDataObjectContents(attachment.name);

          reportDoc.createDataObject(attachment.name, "Temp Data.");

          reportDoc.setDataObjectContents(attachment.name, contentStream);

          doc.removeDataObject(attachment.name);

     });

}

1 Reply

Avatar

Correct answer by
Level 2

In case anyone has the same problem here is the solution. Used the content stream versus the Doc object.

//Attach documents

if (doc.dataObjects) {

     doc.dataObjects.forEach(function(attachment, i, a) {

          var contentStream = doc.getDataObjectContents(attachment.name);

          reportDoc.createDataObject(attachment.name, "Temp Data.");

          reportDoc.setDataObjectContents(attachment.name, contentStream);

          doc.removeDataObject(attachment.name);

     });

}