Copy link to clipboard
Copied
I have code to create a pdf like this. It works great
<cfdocument format="pdf" localUrl="yes" orientation="landscape" marginleft="0.10" marginright=".10" margintop="0.15" >
<cfdocumentitem type="footer"> <cfoutput>Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount#</cfoutput> </cfdocumentitem>
<cfquery name="Loads" datasource="dsn">
SELECT [company_id]
FROM datatable
WHERE ID =16598
</cfquery>
Rest of code based on ID
</cfdocument>
Now I want to loop through a list of ID's and create a combined pdf of all of the ID's in the list
like this
<cfloop list="16958,17019,17020" index="idx">
<cfdocument format="pdf" localUrl="yes" orientation="landscape" marginleft="0.10" marginright=".10" margintop="0.15" >
<cfdocumentitem type="footer"> <cfoutput>Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount#</cfoutput> </cfdocumentitem>
<cfquery name="Loads" datasource="dsn">
SELECT [company_id]
FROM datatable
WHERE ID =#idx#
</cfquery>
Rest of code based on ID
</cfdocument>
</cfloop>
But when I do this only the first pdf prints.
So in my example, the pdf for 16958 is generated but not 17019 or 17020
What am I doing wrong?
If you want a single document, move the loop inside of the cfdocument tag.
Copy link to clipboard
Copied
It's going to be one PDF at a time. If you want to generate more, then do something like
<cfloop list="16958,17019,17020" index="idx">
<cfquery name="Loads" datasource="dsn">
SELECT [company_id]
FROM datatable
WHERE ID =#idx#
</cfquery>
<cfdocument format="pdf" localUrl="yes" orientation="landscape" marginleft="0.10" marginright=".10" margintop="0.15" filename="#expandPath('doc#idx#.pdf')#" overwrite="yes">
<cfdocumentitem type="footer"> <cfoutput>Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount# </cfoutput> </cfdocumentitem>
Rest of code based on ID
</cfdocument>
</cfloop>
That will save each PDF as a separate file within the current directory.
Copy link to clipboard
Copied
This is exactly what I have now and it only generates 1 pdf form the list
Copy link to clipboard
Copied
weezerboy wrote
This is exactly what I have now and it only generates 1 pdf form the list
Not according to the code your provided. You have the cfdocument tag inside the cfloop tag. You need it to be the other way around.
Copy link to clipboard
Copied
sorry, Eddie. I thought I was replying to BKBK.
On your suggestion. I tried this too but I've got some cached content that is causing issues when I try it the way you suggested.
Anyway I'll try it again
Copy link to clipboard
Copied
Ah. Then, as EddieLotter​ suggests,
<cfdocument format="pdf" localUrl="yes" orientation="landscape" marginleft="0.10" marginright=".10" margintop="0.15">
<cfloop list="16958,17019,17020" index="idx">
<cfquery name="Loads" datasource="dsn">
SELECT [company_id]
FROM datatable
WHERE ID =#idx#
</cfquery>
<!--- Remember to use fully qualified, that is, scoped names. For example, Loads.ID --->
Rest of code based on ID
<cfdocumentitem type="footer"> <cfoutput>Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount# </cfoutput> </cfdocumentitem>
</cfloop>
</cfdocument>
Copy link to clipboard
Copied
Sorry I've got some issue with my document body code that's not allowing me to do what you suggested.
So I was thinking now to somehow loop through and create and save individual pdf for each idx and then once I have all of the pdfs from the list created then create a new pdf and combine all of the pdfs together to create 1 document.
Any suggestions on how to create and save the pdfs to a directory? Once they are there I can do the pdf merge to put them into 1 document.
Copy link to clipboard
Copied
weezerboy wrote
Sorry I've got some issue with my document body code that's not allowing me to do what you suggested.
That doesn't make sense to me. Whether you write to a single file or multiple files doesn't change the document body, only where the loop goes.
weezerboy wrote
So I was thinking now to somehow loop through and create and save individual pdf for each idx and then once I have all of the pdfs from the list created then create a new pdf and combine all of the pdfs together to create 1 document.
Any suggestions on how to create and save the pdfs to a directory? Once they are there I can do the pdf merge to put them into 1 document.
Use the filename attribute of the cfdocument tag to write to a file.
Copy link to clipboard
Copied
If you want a single document, move the loop inside of the cfdocument tag.