cfpdf はバイナリデータベース列を直接読み取ることができますか?
現在、クエリを実行して列を取得する場所にあります。
cffile を使用して、ファイルをディレクトリに書き込みます
次に、テキストを抽出できるように cfpdf で読み取ります。
バイナリファイルを直接読み書きするcffileなしでこれを行うことは可能ですか?
もしそうなら、私は例を得ることができますか?
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#">
編集:queryName.columnName
明確にするために、「ソース」として使用するとcfpdfが文句を言います。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#">
これは、継承したコードに既に含まれていましたが、機能しませんでした。問題はコードではなくデータソースにあることがわかりました。BLOB を受け入れるように設定されていませんでした。