Coldfusion CFPDF lendo uma coluna de banco de dados binário
-
12-12-2019 - |
Pergunta
O cfpdf pode ler uma coluna binária do banco de dados diretamente?
Atualmente tenho onde executo uma consulta para obter a coluna.
Use cffile para gravar o arquivo em um diretório
Então leia com cfpdf para que eu possa extrair o texto.
É possível fazer isso sem o cffile gravar e ler o arquivo binário diretamente?
Se sim, poderia dar um exemplo?
Solução
Qual versão você está usando?O seguinte funcionou para mim com CF9/MS SQL (coluna 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 esclarecer, o cfpdf reclama quando você usa queryName.columnName
como a "fonte".Suspeito que o cfpdf o veja como uma coluna de consulta objeto em vez de capturar automaticamente o valor na primeira linha da consulta, ou seja queryName.columnName[ 1 ]
.A solução alternativa é criar uma referência para ela e usar a outra variável.
Outras dicas
Não tenho 100% de certeza, mas você deve conseguir fazer algo assim:
<cfset myPDF = binaryEncode(binaryData,'base64')>
<cfpdf action="read" source="myPDF" name="PDFObj">
Encontrei uma maneira simples de fazer isso:
<cfheader name="Content-Disposition" value="inline; filename=test.pdf">
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#">
Isso já estava no código que herdei, mas nunca funcionou.Descobri que o problema era a fonte de dados e não o código;não foi configurado para aceitar BLOBs.