[ Foro de C# ]
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.)