Microsoft Power Platform: Converting HTML to PDF in Power Automate using PDFShift API

Entire Flow
Entire Flow

Recently I worked on PDFShift for converting HTML to PDF with header and footer. I checked if we have any article which will explain how to use PDFShift API to convert HTML to CSS, but I do not find any article on this. Hence, I tried myself and made it through.

We have some other service provider for PDF conversion API’s which are already available in form of connection in Microsoft 365, example Muhimbi, Plumsail and others. So, after your evaluation of cost and features, if you have chosen PDFShift then you can use this article.

This article will explain you how we can call PDFShift API to convert the list item data in PDF and send the pdf as email.

PDFShift provides API to convert html to pdf, multiple features are provided with PDFShift. You can check more details and pricing details at https://pdfshift.io/#pricing

Some of the important feature of PDFShift like following –

Parallel conversions – Process multiple documents in parallel to increase conversion speed.

Asynchronous request – Use our powerful webhook system to be notified once a conversion is done.

Advanced Options – Set custom headers and footers with pagination, inject custom CSS and JavaScript, encrypt your documents and many more!

Raw HTML support – No need to make your private page public. Simply send us your raw HTML data instead and we will convert it.

High-Fidelity PDF – Generate a high-fidelity document, close to your original HTML, in a few seconds.

Privacy-focused – That’s why your documents are not stored on our server (except when explicitly requested) and are not kept for more than 2 days.

Asynchronous request feature is most important feature in real life sacnorao.

I tried to search any readily available connector for PDFShift, but do not found one.

I have created a sample SharePoint list with name as “Temp” with following columns –

Temp list columns and data
Temp list columns and data

Created a flow with item created. Selected my SharePoint list and added Get item activity to get the newly created item. You can change it according to your requirement and according to suitable event for your requirement.

Trigger workflow on item created
Trigger workflow on item created

After this getting the list item, we can create a HTML for that item. I used following formula to get the HTML for list item in Value

concat(‘<html><body><table border=”1px”><tr><th>Title</th><th>Name</th><th>Address</th></tr><tr><td>’,outputs(‘Get_item’)?[‘body/Title’],'</td><td>’,outputs(‘Get_item’)?[‘body/Name’],'</td><td>’,outputs(‘Get_item’)?[‘body/Address’],'</td></tr></table></body></html>’)

Initialize variable for HTML string
Initialize variable for HTML string

Once we get the HTML for list item, we used the HTTP action to call the PDFShift convert API. As PDFShift uses basic authentication, we used basic authentication in HTTP action to authenticate.

You need to provide the API key you get in the “Password” field and in “UserName” field pass value api

HTTP trigger action
HTTP trigger action

Now, we need to create a Variable of type “Object” to collect the output of the HTTP action.

In the next step create an “Array” type variable to create the Attachment array to be send with email.  

Initialize variable Object and Array type
Initialize variable Object and Array type

After creating Array variable, we need to assign the value which we get from HTTP call.

For attachment name let’s use the formula as following –

concat(outputs(‘Get_item’)?[‘body/Name’],’.pdf’)

For PDF content let’s get the value from ‘’PDFOutput’ variable, like following –

variables(‘PDFOutput’)[‘$content’]

Append to array variable
Append to array variable

After creating the array variable, we need to pass the array variable for Send email action.

Send an email (V2) action
Send an email (V2) action

Let’s pass the Attachment array variable in the ‘Send an email (V2)’ action like following.

Send an email (V2) with attachment
Send an email (V2) with attachment

The complete flow will look like following –

Entire Flow
Entire Flow

After creating a new item in the list ‘Temp’, our flow will get triggered and you will get the generated PDF attached in your inbox like following –

Email received in Inbox
Email received in Inbox

Converted PDF in email attachment will look like following –

Received pdf in email
Received pdf in email

If we explore the value of HTTP action and check the value of ‘PDFOutput’ variable, you will found the value like following where $content gives you PDF content in Base64 format.

Response From PDFShift with HTTP call
Response From PDFShift with HTTP call

You can use this approach in many application , for example insurance kind of application where details get filled from a Power app and gets stored in the SharePoint list, so as proof of the proposal the selected options get converted into PDF and stored in the SharePoint list as well as sent as an email.

Some more scenarios can be addressed similar ways.

You can add HEADER and FOOTER to PDF as well while calling the convert API, you can explore more options at PDFShift documentation at https://docs.pdfshift.io/

Some important points to consider –

  1. HTTP Request action is a premium action and require premium licensing.
  2. PDFShift service is also paid service, you can visit their site for more details.

I have attached the exported flow Download and rename it to .zip

In upcoming blog, I will explain the real world monitoring sacnorao using the PDFShift and Power Automate to monitor the usage of the API.

Prasad Pathak

Senior Tech lead

You may also like...

1 Response

  1. April 6, 2021

    […] one of my previous blog post I explained how to convert HTML to PDF using PDFShift API. PDFShift is paid product and can be used in specific sacnorao like converting to PDF by passing […]

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: