Coldfusion CFPDF leyendo una columna de base de datos binaria
-
12-12-2019 - |
Pregunta
¿Puede cfpdf leer una columna de base de datos binaria directamente?
Actualmente lo tengo donde ejecuto una consulta para obtener la columna.
Utilice cffile para escribir el archivo en un directorio
Luego lea con cfpdf para poder extraer el texto.
¿Es posible hacer esto sin que el cffile escriba y lea el archivo binario directamente?
Si es así, ¿podría darme un ejemplo?
Solución
Qué versión estás usando?Lo siguiente funcionó para mí con CF9/MS SQL (columna varbinary)
<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#">
Editar: Para aclarar, cfpdf se queja cuando usas queryName.columnName
como "fuente".Sospecho que cfpdf lo ve como una columna de consulta. objeto en lugar de tomar automáticamente el valor en la primera fila de la consulta, es decir queryName.columnName[ 1 ]
.La solución es crear una referencia a él y utilizar la otra variable en su lugar.
Otros consejos
No estoy seguro, pero debería poder hacer algo como esto:
<cfset myPDF = binaryEncode(binaryData,'base64')>
<cfpdf action="read" source="myPDF" name="PDFObj">
Encontré una forma sencilla de hacer esto:
<cfheader name="Content-Disposition" value="inline; filename=test.pdf">
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#">
Esto ya estaba en el código hereditado, pero nunca estaba funcionando.Encontré que el problema era el DataSource y no el código;No estaba configurado para aceptar blobs.