otra cosa para todos aquellos que no consiguen guardar el archivo, aunque le den privilegios de escritura al directorio destino.
Hay que modificar la función
fopen del archivo
includes/basics.asp de la siguiente forma:
linea 37 (v. 1.01 beta), originalmente pone
Código:
case "w" : v = 2;c=true;p=name;break;
sustituir por
Código:
case "w" : v = 2;c=true;p=Server.MapPath(name);break;
Pero es que además esta librería está pensada para que cuando guardamos lo haga directamente en el servidor sin aparecer el browser, a no ser que cuando llamemos a la función
pdf.Output pongamos dejemos el nombre del fichero en blanco, con lo cual por defecto utiliza el nombre del archivo que llama a la función.
A mí personalmente, no me es útil tener un .pdf en el servidor, sino que deseo que cuando genero un .pdf sea para que el cliente lo guarde y como no me gusta que utilice el nombre de la página, sino es que le especifico, he modificado un poco la función
Output del archivo
fpdf.asp.
La cosa quedaría así, a partir de la línea 869 (v. 1.01 beta):
Código:
//if(xfile==""){
if(xdownload){
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-disposition", "attachment; filename=" + xfile);
}
else
{
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition","inline");
}
if (!this.hasBinary){
Response.Write(this.buffer)}
else{
xfile=Server.MapPath(lib.fso.GetTempName())
xf=lib.fopen(xfile,"wb");
if(xf.number)this.Error("Unable to create output file: " + xfile);
lib.fwrite(xf,this.buffer);
lib.fclose(xf);
outB = Server.CreateObject("ADODB.Stream")
outB.Type = 1
outB.Open()
outB.LoadFromFile (xfile)
Response.BinaryWrite(outB.Read())
outB.Close()
lib.fso.DeleteFile(xfile);
}
//}
//else
//{
//xf=lib.fopen(xfile,"wb");
//if(xf.number)this.Error("Unable to create output file: " + xfile);
//lib.fwrite(xf,this.buffer);
//lib.fclose(xf);
//}
Se podrían dejar la 2 opciones, osea que guarde al servidor o guarde donde queramos, con por ejemplo otro parámetro más donde especifiquemos que opción preferimos, cosa que sería fácilmente implementable, comparando ese nuevo parámetro con
true o
false y la opción que deseemos iría al ultimo
else que acabamos de convertir en comentarios.
Buenos pues esto es todo, saludos.