Hi, let me see if I can break it down a bit more here. The flow does alot of other things than just get the images into the final PDF-convertion, there is some Logo going in there and an HTML-table as well.
- First of, the images are stored in a Sharepoint library (not a list).
- They are in .jpg form (Not sure if that is relevant or not)
- The Sharepoint library has additional columns added to it, one of those being an ID that matches a corresponding ID (MainID) in a Sharepoint list. (So you can link the image to a specific list item in PowerApps)
- Sharepointlists are set up like this. There is one lists for surveys. There is another list for survey answers. The list for surveyanswers has a column with the ID for the Main Survey so you can link the answers to the Main survey. (Like a relational database, i know its not a real database but the approach is similar)
- The MainID column in imagelibrary is the ID of the Main Survey. So one survey can have many images related to it.
The flow is triggered when an item is added to a Sharepoint list, ReportRequest, (User presses a button in powerapps and an item is added that adds all info like the MainID for the survey they are viewing in powerapps.) When they do this it triggers the flow that when finished sends out the email with the pdf to them.
So with that as a background
When an Item is created in the Sharepoint ReportRequest list you first need to get that Item
When you have that item, you can use the MainID that was added to the list to filter the Imagelibrary to get the images you need.
Add an action to get the images from the library with a filter
So Get files, in the filter query you set the MainID to equal the Corresponding ID field in the ReportRequest list
Next, initialize a string variable (PicTest)
Next
Now, you also need to get the full path to each Image
So whitin an apply to each (the value is body/value - item from the previous Get files action)
File Path = Full Path
Infer Content Type = Yes
To finish this of you now need to run an append to string variable
So select the PicTest variable you initialized earlier
As for the value
I have added some HTML in there that will become HTML in a later step.
Aside from the image it also adds text info from the survey like Category and question and witdh and height for the image. The key takeaway here is the src=dataUri
The expression is where you need to specify the path for the images that you got in the previous step
So set the expression to
dataUri(body('Get_file_content_using_path_2'))
And now for the actual creation of the HTML-file
First you need the action, Create File in One Drive
In the File content is where all the fun stuff happens
The concat:
concat('<!DOCTYPE html><html><img src="',Variables('LogoVariable') ,'"/><p><h1>', Variables('varvarTyp'),'</h1><h1>', Variables('varvarAdress'),'</h1><p><img src="',Variables('SpeedoChart') ,'"/><p></body><h2>
', triggerBody()['htmldata'] ,'<hr>',variables('PicTest') ,'</html>')
This creates an HTML file that contains the logo, a chart, Adress and an HTML-table, however the images are all in there as well. The final piece to add in there is all the "fake" html created earlier in the StringVariable.
So in the concat the images are all whitin the , '<hr>' ,variables('PicTest') ,'</html>'
And after this you can run all the stuff you need to convert it to a PDF.
Also recommend running a get File metadata and then check the filze size for the created HTML-file since it can't be converted to a PDF if it's bigger than 2 MB.
So if it's bigger than 2 MB I just send out the HTML-file and users can store it as a PDF on their own if they need to.