[ Foro de C# ]

¡AYUDA! C# stream word to stream Pdf.

26-Jun-2014 09:33
Invitado (Nibble)
0 Respuestas

Hola. Estoy intentando leer un documento de base de datos que previamente ha sido serializado. leerlo en un stream de datos y crear un documento con el. Posteriormente convertirlo a pdf y guardarlo también serializado en base de datos.

mis problemas son los siguientes:

- 1. No encuentro ninguna librería que no necesite de una ruta física en disco para la conversión.

- 2. utilizando Microsoft.Office.Interop.Word  no me realiza las conversiones, indicando error "Devuelto error HRESULT E_FAIL de una llamada a un componente COM." en DocumentWord.ExportAsFixedFormat(ruta,WdExportFormat.wdExportFormatPDF); .

El código es el siguiente:

private Boolean convertirWordApdf(cDatosFirmaXDocumentoS DFs) //AMYR
   {
       if (DFs.Count == 1)
       {
           cDatosFirmaXDocumento DF = DFs.GetDatosFirmaXIndice(1);
           byte[] EBuffer = new byte[16 * 1024];
           this.MiCom.BaseDatos.LeerArchivo(DF.NBTabla, DF.NBColumnaFichero, "WHERE " + DF.NBColumnaID + "=" + DF.IDValue, ref EBuffer);
           //Se crea una variable Stream donde se guarda el buffer de datos con el documento word          
           System.IO.Stream wordStream = new System.IO.MemoryStream();
           
           int read;
           int cont = 0;
           while ((read = wordStream.Read(EBuffer, 0, EBuffer.Length)) > 0)
           {
               wordStream.Write(EBuffer, 0, read);
               cont += read;
           }
           wordStream.Flush();
           //wordStream.Seek(0, SeekOrigin.Begin);
           //wordStream.Close();

           
           //Se crea un objeto de aplicacion Word
           Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
           //Se crea un objeto documento y se carga del stream
           Document documentWord = new Document(wordStream);
     
           
             
           
           //object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
           //se crea stream de salida y se guarda en formato pdf.
           MemoryStream pdfStream = new MemoryStream();
           string ruta = @"C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\myfile.pdf";
         
           try
           {
            documentWord.ExportAsFixedFormat(ruta, WdExportFormat.wdExportFormatPDF);
             
            byte[] SBuffer = System.IO.File.ReadAllBytes("myfile.pdf");
           }
           catch (Exception ex)
           {
               this.MiCom.BaseDatos.RollbackTransaction();
               string Mensaje = "Error al intentar guardar el pdf en fichero .  Excepcion: " + ex.Message;
               err(Mensaje + " Trace:" + ex.StackTrace);
               DF.MensajeError = Mensaje;
           }
         
[...]

Gracias.




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)