2012-05-21 23 views
5

cfpdfはバイナリデータベース列を直接読み取ることができますか?バイナリデータベース列を読み込むColdFusion CFPDF

現在、私は列を取得するためにクエリを実行しています。私はextracttextことができるようにするcfpdfで読み取るその後のディレクトリに

をファイルを書き込むための

使用のcffile。

cffileの書き込みを行わずにバイナリファイルを直接読み取ることはできますか?

もしそうなら、私は例を得ることができます。

+0

良い質問...私もそれを知りたいです。 –

答えて

3

あなたはどのバージョンを使用していますか?次

<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#"> 

CF9/MS SQL(varbinary型のカラム)で私のために働いて編集:明確にするために、あなたが "ソース" としてqueryName.columnNameを使用する場合、cfpdfのは文句を言います。私は、cfpdfがクエリの最初の行の値、すなわちqueryName.columnName[ 1 ]を自動的に取得するのではなく、クエリの列オブジェクトと考えています。回避策は、参照を作成し、代わりに他の変数を使用することです。

+0

ありがとうございます。これはうまくいきました。これはまさに私が探していたものです。このスレッドを読む人は誰でも、私はRAMファイルの記憶の議論を読むことを奨励するでしょう –

+0

より大きいpdfs/BLOBについては、VFSが改善を提供するかどうかを両方の方法で実験する価値があります。 – Leigh

+0

CF 8のために何ができるか考えてみませんか? extractTextはそのバージョンで有効なオプションではありません。 – Limey

1

私は100%わからないんだけど、あなたはこのような何かを行うことができるはず:

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

<cfpdf action="read" source="myPDF" name="PDFObj"> 
+2

別の考え方は、cffileを使ってRAMディスクに書き込むことです。これにより、パフォーマンスが向上し、ディスクへの書き込みがなくなります。 http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSe9cbe5cf462523a0-70e2363b121825b20e7-8000.html –

+0

ラムディスクのアイデアが大好きです。 –

+0

Joshが提供するリンクの例を使用してInメモリを動作させることができました。参考までに、cfpdfはサポートされていません。しかし、それはまさに私が使用したものであり、動作しているようです。 ***注意のポイント。 RAMからファイルを削除しないと、割り当てられたスペースをすべて消費してクラッシュする恐れがあります。 –

0

私はこれを行うための簡単な方法を見つけました:

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

これは私が継承されたコードではすでにだったが、それは働いていませんでした。問題はコードではなくデータソースだとわかりました。 BLOBを受け入れるように設定されていませんでした。

関連する問題