Question

Can cfpdf read a binary database column directly?

I currently have it where I run a query to get the column.

Use cffile to write the file to a directory

Then read with cfpdf so I can extracttext.

Is it possible to do this without the cffile write and read the binary file directly?

If so, could I get an example.

Was it helpful?

Solution

What version are you using? The following worked for me with CF9 / MS SQL (varbinary column)

<cfquery name="getPdf" ....>
    SELECT Data 
    FROM   someTable
    WHERE  ID = 123
</cfquery>

<cfset pdfBinary = getPdf.data[1]>
<cfpdf action="extractText" source="pdfBinary" name="result">
<cfdump var="#result#">

Edit: To clarify, cfpdf complains when you use queryName.columnName as the "source". I suspect cfpdf sees it as a query column object instead of automatically grabbing the value in the query's first row ie queryName.columnName[ 1 ]. The work-around is to create a reference to it, and use the other variable instead.

OTHER TIPS

I'm not 100% sure, but you should be able to do something like this:

<cfset myPDF = binaryEncode(binaryData,'base64')>

<cfpdf action="read" source="myPDF" name="PDFObj">

I found a simple way to do this:

<cfheader name="Content-Disposition" value="inline; filename=test.pdf">
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#">

This was already in the code I inherited, but it was never working. I found the problem was the datasource and not the code; it was not set to accept BLOBs.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top