Вопрос по pdf – Coldfusion CFPDF читает двоичный столбец базы данных

5

Может ли cfpdf читать столбец двоичной базы данных напрямую?

В настоящее время у меня есть, где я запускаю запрос, чтобы получить столбец.

Используйте cffile, чтобы записать файл в каталог

Затем прочитайте cfpdf, чтобы я мог извлечь текст.

Можно ли сделать это без записи и чтения двоичного файла напрямую?

Если так, могу ли я получить пример.

Хороший вопрос ... Мне бы тоже хотелось это знать. Mark A Kruger

Ваш Ответ

3   ответа
3

L (столбец 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#">

Edit: Чтобы уточнить, cfpdf жалуется, когда вы используетеqueryName.columnName в качестве «источника». Я подозреваю, что cfpdf видит это как столбец запросаobject вместо автоматического захвата значения в первой строке запроса, т.е.queryName.columnName[ 1 ], Обходной путь - создать ссылку на нее и использовать вместо нее другую переменную.

Есть идеи о том, что можно сделать для CF 8? extractText не является допустимым параметром в этой версии.
Для больших pdf / блобов, возможно, стоит поэкспериментировать с обоими методами, чтобы увидеть, предлагает ли VFS какое-либо улучшение.
@Leigh Я нашел дружественную для CF8 версию и разместил ее как ответ.
Спасибо, Ли, это сработало, и это именно то, что я искал. Хотя любой, кто читает эту ветку, хотел бы прочитать обсуждение хранения файлов в ОЗУ ниже E Paiz
Вы можете извлечь текст сprocessddx... но это требует физического пути к файлу. Это единственный простой вариант, который мне известен для CF8.
0

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

Это уже было в коде, который я унаследовал, но он никогда не работал. Я обнаружил, что проблема в источнике данных, а не в коде; не было принято принимать BLOB.

1

но вы должны быть в состоянии сделать что-то вроде этого:

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

<cfpdf action="read" source="myPDF" name="PDFObj">
Мне удалось заставить работать память, используя примеры, приведенные в ссылке, предоставленной Джошем. К вашему сведению, в документации сказано, что cfpdf не поддерживается. Хотя, это именно то, что я использовал, и, похоже, работает. *** Осторожно. Если вы не удаляете свои файлы из оперативной памяти, вы можете в конечном итоге съесть все выделенное место и вызвать сбой E Paiz
Люблю идею диска Ram.
Другая идея - записать его на RAM-диск с помощью cffile. Это обеспечит лучшую производительность и исключит запись на диск.help.adobe.com/en_US/ColdFusion/9.0/Developing/…

Похожие вопросы