Coldfusion CFPDF lecture binaire de la base de données de la colonne
-
12-12-2019 - |
Question
Peut cfpdf lire un fichier binaire colonne de base de données directement?
J'ai actuellement où j'exécute une requête pour obtenir la colonne.
Utilisation cffile à écrire le fichier dans un répertoire
Puis lire avec cfpdf donc je peux extracttext.
Est-il possible de le faire sans l'cffile d'écriture et de lecture, le fichier binaire directement?
Si oui, pourrais-je avoir un exemple.
La solution
Quelle version utilisez-vous?Le suivant a fonctionné pour moi avec CF9 / MS SQL (colonne 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: Pour clarifier, cfpdf se plaint lorsque vous utilisez queryName.columnName
comme la "source".Je soupçonne cfpdf voit comme une colonne de requête objet au lieu de automatiquement en saisissant la valeur dans la requête de la première rangée ie queryName.columnName[ 1 ]
.La solution de contournement consiste à créer une référence à elle, et d'utiliser l'autre variable à la place.
Autres conseils
Je ne suis pas sûr à 100%, mais vous devriez être capable de faire quelque chose comme ceci:
<cfset myPDF = binaryEncode(binaryData,'base64')>
<cfpdf action="read" source="myPDF" name="PDFObj">
J'ai trouvé un moyen simple de faire ceci:
<cfheader name="Content-Disposition" value="inline; filename=test.pdf">
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#">
C'était déjà dans le code que j'ai hérité, mais cela ne fonctionnait jamais.J'ai trouvé que le problème était la source de données et non le code;Il n'a pas été mis à accepter des blobs.