Coldfusion CFPDF считывает двоичный столбец базы данных
-
12-12-2019 - |
Вопрос
Может ли cfpdf напрямую считывать столбец двоичной базы данных?
В настоящее время у меня есть это, где я запускаю запрос, чтобы получить столбец.
Используйте cffile для записи файла в каталог
Затем прочитайте с помощью cfpdf, чтобы я мог извлечь текст.
Возможно ли это сделать без записи в cffile и чтения двоичного файла напрямую?
Если да, то не мог бы я привести пример.
Решение
Какую версию вы используете?Следующее сработало для меня с CF9 / MS SQL (столбец 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#">
Редактировать: Чтобы уточнить, cfpdf жалуется, когда вы используете queryName.columnName
как "источник".Я подозреваю, что cfpdf рассматривает это как столбец запроса объект вместо автоматического захвата значения в первой строке запроса, т.е. queryName.columnName[ 1 ]
.Обходной путь состоит в том, чтобы создать ссылку на него и вместо этого использовать другую переменную.
Другие советы
Я не на 100% уверен, но вы сможете сделать что-то подобное:
<cfset myPDF = binaryEncode(binaryData,'base64')>
<cfpdf action="read" source="myPDF" name="PDFObj">
. Я нашел простой способ сделать это:
<cfheader name="Content-Disposition" value="inline; filename=test.pdf">
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#">
.
Это уже было в коде, которое я унаследовал, но он никогда не работал.Я обнаружил, что проблема была источниками данных, а не код;Не было установлено, чтобы принимать капли.