Coldfusion CFPDF读取二进制数据库列

Coldfusion CFPDF读取二进制数据库列,pdf,coldfusion,binary,cfpdf,Pdf,Coldfusion,Binary,Cfpdf,cfpdf能否直接读取二进制数据库列 我目前有它,我运行一个查询来获取列 使用cffile将文件写入目录 然后用cfpdf阅读,这样我可以提取文本 是否可以在不使用cffile的情况下直接写入和读取二进制文件 如果是这样的话,我可以举个例子。我不是100%确定,但你应该可以这样做: <cfset myPDF = binaryEncode(binaryData,'base64')> <cfpdf action="read" source="myPDF" name="PDFObj

cfpdf能否直接读取二进制数据库列

我目前有它,我运行一个查询来获取列

使用cffile将文件写入目录

然后用cfpdf阅读,这样我可以提取文本

是否可以在不使用cffile的情况下直接写入和读取二进制文件


如果是这样的话,我可以举个例子。

我不是100%确定,但你应该可以这样做:

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

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

您使用的是什么版本?以下内容适用于CF9/MS SQL(varbinary列)


选择数据
从某处
其中ID=123

编辑:为了澄清,当您使用
queryName.columnName
作为“源”时,cfpdf会投诉。我怀疑cfpdf将其视为查询列对象,而不是自动获取查询第一行的值,即
queryName.columnName[1]
。解决方法是创建对它的引用,并使用另一个变量。

我找到了一种简单的方法:

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


这已经存在于我继承的代码中,但它从未起作用。我发现问题在于数据源而不是代码;它没有设置为接受斑点。

好问题。。。我也想知道。另一个想法是使用cffile将其写入RAM磁盘。这将提供更好的性能并消除对磁盘的写入。我能够使用Josh提供的链接中的示例使内存中的工作正常。仅供参考,文件称不支持cfpdf。尽管如此,这正是我所使用的,而且似乎很有效。***注意事项。如果你不从RAM中删除你的文件,你最终可能会消耗掉你所有分配的空间,并强制崩溃,这确实有效,正是我想要的。尽管我鼓励阅读本文的读者阅读下面关于更大PDF/BLOB的RAM文件存储讨论,但这两种方法都值得尝试,看看VFS是否有任何改进。您对CF 8可以做些什么有什么想法吗?extractText在该版本中不是有效选项。您可以使用
processddx
提取文本。。但它需要一个物理文件路径。这是我知道的CF8唯一的简单选项。@Leigh我找到了一个CF8友好的版本,并将其作为答案发布。
<cfheader name="Content-Disposition" value="inline; filename=test.pdf">
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#">