Depending upon what version of CF server you're using, it would be like this.
Say your .zip file is located at C:\userguide.zip, and it contains one PDF file, userguide.pdf.
<cfzip file="C:\userguide.zip" action="list" name="filez" /> <cfzip file="C:\userguide.zip" action="readBinary" entrypath="#filez.name#" variable="thisFile" /> <cfheader name="Content-Disposition" value="inline; filename=#filez.name#" /> <cfheader name="Content-Type" value="application/pdf" /> <cfcontent type="application/pdf" variable="#ToBinary(thisFile)#" reset="true" /><cfabort>
UPDATE: Very important that the filename of the PDF not contain any spaces, slashes, backslashes, etc. Replace all of these with underscore, if you must.
UPDATE2: I should also note that the above should be the only code on the page. Anything before the above will break the process, and anything after will be ignored.
The CFABORT is if you are redirecting to this page from another, then this will offer the PDF to stream without actually going to the page in the browser - it will offer the file, but appear as if it's running in the background.
Thank you, that worked perfectly!
Glad you got it working, and thank you for marking my answer correct.