De pagina die ingeladen moest worden bevatte echter ook een aantal CFCharts, die wel op de webpagina gegenereerd werden, maar niet zondermeer naar Word overgezet konden worden.
Hoe dit op te lossen?
Immers CFChart genereert, terwijl de cfm pagina geladen wordt, code die uiteindelijk een grafiek op het scherm representeerd. Exporteren met de <CFCONTENT> tag naar MS Word levert in Word dan ofwel helemaal niks ofwel alleen maar bagger op - een hoop onbegrijpelijke
(ÿØÿà JFIF ÿþ GreenPoint, Inc.ÿÛ „
#%$""!&+7/&)4)!"0A149;>>>%.DIC; ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ
- îÿÄ ¢}!1A Qa"q 2�‘¡ #B±Á RÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´
µ·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúw!1AQaq"2�B‘¡±Á #3Rð brÑ $4á%ñ
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´
µ·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ? è¡ðøJš“x{Kšát!9wµ\»y
å‡Íøç4 “à=?ÂÚ·4ÚúGˆ6Û û7ü#QÚíù—çÝ)
code -.
Googlen op internet naar een oplossing...
Zinloos. Niks, njente, nada. Alleen maar programmeurs die met dezelfde vragen en problemen zitten, wat gevolgd wordt door een diep stilzwijgen als antwoord.
Dan maar zelf aan de slag.
Gegeven vooraf: Plaatjes inladen via <CFCONTENT> in Word gaat alleen als aan het plaatje een hard URL-adres meegegeven wordt.
Wanneer ColdFusion een grafiek genereert via de CFChart tag, dan wordt het eigenlijke plaatje opgebouwd in de cache van de server (of dat nou een swf, png of jpg bestand is). Amper een ideale kandidaat om die eens lekker met een hard URL-adres te gaan benaderen...
CFCharts kunnen echter met het NAME attribuut opgeslagen worden als variabele, in de vorm van een ISO-8895-1 gecodeerd binair bestand.
En dat biedt perspectief! Want daarmee kunnen de gegevens opslagen worden als bestand, verwerkt worden in een database of beschikbaar gemaakt worden voor gebruikers van Flash Remoting.
En als je het op kunt slaan als bestand in de webdirectory..., dan kun je het - daarna - ook weer benaderen met een hard URL-adres.
Voila:
1. Generer de grafiek gewoon met CFChart
2. Zet de grafiek om naar variabele en sla dit op als bestand
3. Lees het (zojuist) opgeslagen bestand in
en klaar ben je.
Als proef op de som laat ik hier >> een CFChart genereren, die je op deze manier kunt exporteren naar Word. De grafiek is er één die een overzicht geeft van de verschillende artikelen, tutorials en CodeToGo´s die op cfwebforge staan.
(De volledige CFM-code vindt je hieronder).
Het belangrijkste stukje daarin is natuurlijk de <CFCONTENT> tag:
<!---Als wel op de knop 'Exporteer' geklikt is...EXPORTEER dan maar naar Word a.u.b.!!!--->
<CFIF URL.Action EQ "Exp">
<CFCONTENT TYPE = "application/msword">
<CFHEADER NAME = "Content-Disposition" VALUE ="attachment; filename=cfwebforge_item_overzicht">
</CFIF>
Om de CFChart op te slaan als variabele heb ik in de 2e CFChart de regel:
name="Grafiek1"
opgenomen. Dit zet de CFChart in een variabele.
Vervolgens wordt die variabele op het web opgeslagen als binair bestand in de directory \fs met de code:
<cffile action="Write"
charset="ISO-8859-1"
file="X:\WWWdotspot\cfwebforge.com\www\fs\grafiek1.jpg"
output="#grafiek1#">
...om daarna weer in een <img> tag met een harde URL in de code opgeroepen te worden:
<img src="http://www.cfwebforge.com/fs/grafiek1.jpg">
Een testrun van deze code vindt je hier >>
En de volledige code van deze pagina vind je hier >>
Have fun!
PS: Natuurlijk kun je hetzelfde doen met een export naar OpenOffice.Org, Excel en meer (zie artikel ' Van DatabaseTabel naar MSWord/Excel').
<!---Volledige code--->
<!---cfchart_voorbeeld.cfm
Export van een CFChart grafiek naar Word--->
<cfquery name="RSView" datasource="cfwebforge">
SELECT Categorie, COUNT(Categorie) AS CategorieTotaal
FROM TblTip
GROUP BY Categorie
</cfquery>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<!---Als wel op de knop 'Exporteer' geklikt is...EXPORTEER dan maar naar Word a.u.b.!!!--->
<CFIF URL.Action EQ "Exp">
<CFCONTENT TYPE = "application/msword">
<CFHEADER NAME = "Content-Disposition" VALUE ="attachment; filename=cfwebforge_item_overzicht">
</CFIF>
<table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#797E8C"><font color="#FFFFFF" size="4" face="Papyrus">H</font><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">
oeveel artikelen, tutorials, codeToGo's etc. staan er op cfwebforge.com?</font></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>
<!---Als nog niet op de knop 'Exporteer' geklikt is...--->
<CFIF URL.Action NEQ "Exp">
<CFCHART
format="jpg"
chartheight="200"
chartwidth="600"
gridlines="6"
rotated="YES"
show3d="Yes"
showborder="Yes"
showlegend="Yes"
showygridlines="YES"
xaxistitle="Rubriek"
yaxistitle="Aantal items"
xoffset="0.01"
yoffset="0.01"
>
<CFCHARTSERIES
type="cylinder"
query="RSView"
itemcolumn="Categorie"
valuecolumn="CategorieTotaal"
serieslabel=""
seriescolor="##DBE3EA"
paintstyle="shade">
</CFCHARTSERIES>
</CFCHART>
<!---Als wel op de knop 'Exporteer' geklikt is...EXPORTEER dan maar naar Word a.u.b.!!!--->
<CFELSE>
<CFCHART
format="jpg"
chartheight="200"
chartwidth="600"
gridlines="6"
name="Grafiek1"
rotated="YES"
show3d="Yes"
showborder="Yes"
showlegend="Yes"
showygridlines="YES"
xaxistitle="Rubriek"
yaxistitle="Aantal items"
xoffset="0.01"
yoffset="0.01"
>
<CFCHARTSERIES
type="cylinder"
query="RSView"
itemcolumn="Categorie"
valuecolumn="CategorieTotaal"
serieslabel=""
seriescolor="##DBE3EA"
paintstyle="shade">
</CFCHARTSERIES>
</CFCHART>
<!---Om plaatjes in Word te kunnen laden, moeten deze een HARD URL adres hebben (anders zie je niks)
Hieronder wordt bovenstaande cfchart bij 1. verwerkt en op het web opgeslagen als .jpg bestand
en bij 2. weer opgeroepen met het harde url-adres.
Daarmee wordt het plaatje netjes in Word ingeladen--->
<!---1. Sla grafiek op als .jpg in de webdirectory--->
<cffile action="Write"
charset="ISO-8859-1"
file="X:\WWWdotspot\cfwebforge.com\www\fs\grafiek1.jpg"
output="#grafiek1#">
<!--- 2. Toon grafiek in html, zodat deze doorgestuurd kan worden naar Word--->
<img src="http://www.cfwebforge.com/fs/grafiek1.jpg">
</CFIF>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>
<font size="2" face="Arial, Helvetica, sans-serif">Zoveel dus</font><br />
<!---Alleen als we 't spulletje nog niet doorgestuurd hebben naar Word, dan is dit nodig--->
<CFIF URL.Action NEQ "Exp">
<form id="form1" name="form1" method="post" action="cfchart_voorbeeld.cfm?Action=Exp">
<label>
<input type="submit" value="Exporteer nou maar naar Word" />
</label>
</form>
</CFIF>
</td>
</tr>
</table>
<p> </p>
<p> </p>
<p></p>
</body>
</html> |