Merge document array to PDF

Overview

The 'Merge document array to PDF' flow merges up to 12 documents provided in an JSON array to a single PDF document. 

Please refer to the Supported Document Types articles for a complete list of the different file formats / document types which are supported for conversion.

Default Parameters

The default 'Merge document array to PDF' flow action parameters are detailed below:

  • PDF Filename: The filename to assign to the resulting PDF document (including file extension).
  • Documents: A JSON array containing a filename and a Base64 encoded string for each document which should be merged.

1.jpg

Documents - JSON Schema 

The JSON provided within the documents parameter should conform to the following schema:

{
      "fileName": "filename including extension",
      "fileContent": "File contents (Base 64 string)"}
},

Creating the JSON Array

Flow provides the actions required to build the JSON array which is required by the 'Documents' parameter. The following example shows how to retrieve documents from a SharePoint folder and dynamically build the array.

1. Utilise the 'Get Files (properties only)' action to retrieve a list of target files

3.jpg

2. (Optionally) Filter the list of target files returned by the action 'Get Files (properties only)' action. The example below filters the data to only items which originate from the 'Merge Array' folder... of course you could perform the same action using a OData filter query in the original query!

4.jpg

3. Create a new variable which will be utilised to store the JSON we will provide to the 'Documents' parameter.

5.jpg

4. To build the array we will create a loop using the 'Apply to Each' action which will process each item from the filtered array created in step #2. The 'Body' variable is passed from the 'Filter Array' result. 

6.jpg

5. Add a 'Get file content using path' action to retrieve the file. The path to the file can be built using the string concat function as follows:

concat(item()['{Path}'],item()['{FilenameWithExtension}'])

7.jpg

6. Add an 'Append to array variable' action to add the JSON for the current document to the variable created in step #3. The 'FilenameWithExtension' value can be obtained from the current item utilising the following expression: 

items('Build_the_Document_Array_(JSON)')['{FilenameWithExtension}']

The file content (Base 64 string) can be obtained from the 'Get file content using path' actions return value as follows:

body('Get_file_content_using_path')['$content']

8.jpg

 A complete example is detailed below:

{
"fileName": @{items('Build_the_Document_Array_(JSON)')['{FilenameWithExtension}']},
"fileContent": @{body('Get_file_content_using_path')['$content']}
}

7. Add the 'Merge document array to PDF' action.

update3.png

8. Provide a 'PDF Filename' value, click the 'Switch to input entire array' icon

update1.png

9. Pass the 'FilesForMerge' variable created in step #3

update2.png

10. Add a SharePoint 'Create file' action passing the returned filename and 'File Content' return values from the 'Merge document array to PDF' action.

11.jpg

Operation Count

The final merge operation count is determined using the following calculation:

Merge Action (1) + No. of Documents Converted to PDF (n) =  Total Operation Count (1+n)

Advanced Parameters

The advanced 'Merge document array to PDF' flow action parameters are detailed below:

  • Remove Markup: Sets whether comments and tracked changes should be removed from the document(s) upon conversion. This option is only executed for Microsoft Office documents.
  • PDF/A Compliant: Sets whether the resulting document should conform to PDF/A format.
  • PDF/A Compliance Level: Sets the required level of PDF/A compliance.
  • Final Operation: (Advanced) Sets whether the this is last Encodian flow action, please refer to: Flow Action Return Options: File Content vs. Operation ID

2.jpg

Have more questions? Submit a request

2 Comments

  • 0
    Avatar
    Landon Patterson
    I was trying to follow this tutorial and I get the invaid expression error when I try to use:
    @{items('Build_the_Document_Array_(JSON)')['{FilenameWithExtension}']}

    Seems like the @{} is causing the issue. Do you have any guidance on how to fix this error?
  • 0
    Avatar
    Jay Goodison

    Hi Landon,

    We've modified the article, the @{} is added by Flow when you enter an expression, the simple fix is to remove them. You'll see after adding the expression that the actual string added to the JSON is wrapped by @{}

    Thanks for spotting and feeding back.

     

     

Please sign in to leave a comment.
Powered by Zendesk