Foros del Web » Programación para mayores de 30 ;) » .NET »

WebService que retorene PDF

Estas en el tema de WebService que retorene PDF en el foro de .NET en Foros del Web. Hola amigos del Foro: Tengo un problema que no se como resolverlo. He creado un WebService, este contiene un Metodo(public void retornarPDF) que me retorna ...
  #1 (permalink)  
Antiguo 12/03/2009, 17:53
 
Fecha de Ingreso: septiembre-2006
Mensajes: 55
Antigüedad: 17 años, 7 meses
Puntos: 0
WebService que retorene PDF

Hola amigos del Foro:

Tengo un problema que no se como resolverlo.

He creado un WebService, este contiene un Metodo(public void retornarPDF) que me retorna un reporte en formato PDF, es decir que en teoria, al ejecuar el metodo me debe aparecer un cuadro de dialigo done dice: desea Abrir, Guardar o Cancelar el archivo.

Esto lo he probado en paginas aspx normales y si funciona, pero al consumir el servicio me retorna el siguiente error:

El cliente encontró el tipo de contenido de respuesta 'application/pdf', pero se esperaba 'text/xml'

¿Como puedo hacer para que no me genere este error?

Nota:
Estoy trabajando con .NET 2005
El reporte tiene que ser atravez de un WebService.
el metodo que uso para exportar a pdf es:
private void ExportaReporte(string nomrep)
{
System.IO.MemoryStream rptStream = new System.IO.MemoryStream();
if (tipimp == "pdf")
rptStream = ((System.IO.MemoryStream)(rpt.ReportDocument.Expor tToStream(ExportFormatType.PortableDocFormat)));
else if (tipimp == "excel")
rptStream = ((System.IO.MemoryStream)(rpt.ReportDocument.Expor tToStream(ExportFormatType.Excel)));
else if (tipimp == "doc")
rptStream = ((System.IO.MemoryStream)(rpt.ReportDocument.Expor tToStream(ExportFormatType.WordForWindows)));

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=reportexxxx.pdf");
HttpContext.Current.Response.BinaryWrite(rptStream .ToArray());
HttpContext.Current.Response.End();
}

Gracias por su respuesta. Espero que puedan ayudarme
  #2 (permalink)  
Antiguo 12/03/2009, 18:11
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: WebService que retorene PDF

Hola brother!!

Checate este link:

http://www.capitalfederal.com/foros/...b4cae61c0031c1

Saludines..
__________________
El conocimiento se alimenta de la repeticion y la consistencia!!! (Miguel--in-- 1983---....)
  #3 (permalink)  
Antiguo 13/03/2009, 17:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 55
Antigüedad: 17 años, 7 meses
Puntos: 0
Mensaje Respuesta: WebService que retorene PDF

Hola miguelillo2:

Gracias por la respuesta me sirvio de mucho, ya solucione el problema, el metodo que se usa para convertir el reporte pdf a string es

public void EncodeWithString()
{
System.IO.FileStream inFile;
byte[] binaryData;

try {
inFile = new System.IO.FileStream(inputFileName,
System.IO.FileMode.Open,
System.IO.FileAccess.Read);
binaryData = new Byte[inFile.Length];
long bytesRead = inFile.Read(binaryData, 0,
(int)inFile.Length);
inFile.Close();
}
catch (System.Exception exp) {
// Error creating stream or reading from it.
System.Console.WriteLine("{0}", exp.Message);
return;
}

// Convert the binary input into Base64 UUEncoded output.
string base64String;
try {
base64String =
System.Convert.ToBase64String(binaryData,
0,
binaryData.Length);
}
catch (System.ArgumentNullException) {
System.Console.WriteLine("Binary data array is null.");
return;
}

// Write the UUEncoded version to the output file.
//System.IO.StreamWriter outFile;
//try {
// outFile = new System.IO.StreamWriter(outputFileName,
// false,
// System.Text.Encoding.ASCII);
// outFile.Write(base64String);
// outFile.Close();
//}
//catch (System.Exception exp) {
// Error creating stream or writing to it.
// System.Console.WriteLine("{0}", exp.Message);
//}
}

esto es sacado de la ayuda de visual: http://msdn.microsoft.com/en-us/library/dhx0d524.aspx

Luego ya el cliente que consume el Servicio Web va utilizar algo asi:

string stringbytes = servicio.RetornarPDFString(parametro);

byte[] a = Convert.FromBase64String(stringbytes);
System.IO.MemoryStream rptStream = new System.IO.MemoryStream(a);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=reporte.pdf");
Response.BinaryWrite(rptStream.ToArray());
Response.End();
  #4 (permalink)  
Antiguo 14/07/2011, 09:30
 
Fecha de Ingreso: julio-2011
Mensajes: 1
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: WebService que retorene PDF

Hola

Alguien sabe como hacer esto para Java.

Gracias
  #5 (permalink)  
Antiguo 14/07/2011, 09:35
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: WebService que retorene PDF

Hola galcorp el sitio adecuado para tu pregunta es el Foro de Java, alli crea un nuevo hilo y has referencia a este tema para que te comprendan mejor los javeros . Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:52.