visual tabulacion studio orden los formularios formulario eventos c# .net excel pdf ms-word

c# - tabulacion - ¿Cómo presento contenido de oficina y/o pdf en un formulario de Windows?



orden de tabulacion visual basic (5)

¿Has mirado la biblioteca de objetos Microsoft Word 9.0? Es posible que no se puedan mostrar los datos tal como se escribieron originalmente, sin embargo, PODRÍA hacer algo aquí, ¿qué tal, imprimir como un PDF temporal en la memoria y mostrar eso?

Así es como se muestra un PDF con C #

Tenemos una aplicación en la que los miembros de administración pueden agregar contenido para que vean sus subordinados. Su requisito es que debería poder mostrar documentos de Word, Excel, PowerPoint y PDF de forma no editable.

La única opción que encontré para hacer esto es cargar el contenido en un componente del navegador web. La desventaja de esto es que solicita al usuario abrir / guardar / cancelar. Nos preocupa que los subordinados, en su mayoría analfabetos informáticos, tengan problemas para abrir los documentos de esta manera.

El uso del método anterior también significa que Microsoft Office y Adobe Acrobat (u otro visor de PDF habilitado para IE) deben instalarse en todas las máquinas que ejecutarán la aplicación, lo que implica costosas tarifas de licencia.

¿Hay alguna forma mejor de mostrar este contenido en mis formularios en C #?


Todo esto es específico de Windows.

Si desea mostrar algo en un equipo cliente sin depender de ninguna instalación local, debe asumir la total responsabilidad del procesamiento ya sea por:

  1. Suministrando algún tipo de bibliotecas no invasivas que se ejecutan en el cliente y saben cómo renderizarlo
  2. Utilice las bibliotecas / herramientas "adecuadas" para convertirlo en una imagen de la memoria en el servidor y enviar esa imagen al cliente. Lento, muy costoso desde el punto de vista computacional en su servidor y no proporcionará una interfaz ''documental'' para sus clientes.

Sumatra es completamente gratuito y de código abierto. No requeriría ninguna forma de instalación, por lo tanto, incluirlo en la instalación de la aplicación como un binario en una subcarpeta y luego desgranarlo directamente para mostrar el pdf funcionará bien (la red de identificadores de archivos PDF es accesible por lo que es tan simple como ejecutar

SumatraPDF.exe {path-to-file}

Si no es accesible en la red, descárguelo en segundo plano a una ubicación temporal y luego ejecútelo como se indica arriba.

Los documentos de Office son un poco más complicados ya que todos requieren una instalación local. Aquí hay una lista (desactualizada) Tenga en cuenta que muchos de los enlaces a descargas le indicarán la última versión recomendada.

Un enfoque alternativo para esto es usar OpenOffice.org en su encarnación ''portátil'' que le permitirá funcionar sin requerir una instalación (para que pueda colocarlo en su lugar al igual que el enfoque de Sumatra), pero tiene muchos defectos en su caso porque todavía requeriría instalar java, los campos resultantes serían editables (a menos que haya realizado cambios en la versión de OpenOffice que pueden ser complejos) y es posible que no obtenga una visualización terriblemente buena.

Si tiene algún tipo de capacidad para ejecutar programas arbitrarios durante la instalación de su aplicación, la instalación de los visores es probablemente lo mejor, son totalmente gratuitos y redistribuibles.

Si tiene acceso a SharePoint, puede probar un enfoque completamente diferente que consiste en hacerlo todo a través de una aplicación web. Los complementos de sharepoint permitirán vistas de alojamiento en los documentos directamente en el navegador. Sin embargo, tenga en cuenta que esto requiere que Internet Explorer sea completamente utilizable.



Descargo de responsabilidad, soy de Atalasoft

Si desea visualizar PDF en cualquier tipo de GUI .NET (Winforms, ASP.NET, Silverlight, WPF), nuestro complemento DotImage with PDF Reader lo admite. No utiliza Adobe y no requiere que se instale nada en el equipo cliente o servidor (solo nuestros ensamblajes).


Posiblemente también interesante:

Guarde los documentos en XPS utilizando Microsoft Office 2007 (o imprímalos en una impresora XPS).

Puede visualizar el documento XPS de solo lectura utilizando el componente XPS Viewer o renderizando página por página en una imagen PNG o JPEG. Este renderizado se puede lograr fácilmente usando .NET 3.5 / WPF.

XpsDocument xpsDoc = new XpsDocument(xpsFileName, System.IO.FileAccess.Read); FixedDocumentSequence docSeq = xpsDoc.GetFixedDocumentSequence(); const double scaleFactor = 0.8; for (int pageNum = 0; pageNum < docSeq.DocumentPaginator.PageCount; pageNum++) { DocumentPage docPage = docSeq.DocumentPaginator.GetPage(pageNum); // FIX: calling GetPage without calling UpdateLayout causes a memory leak ((FixedPage)docPage.Visual).UpdateLayout(); RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)Math.Round(scaleFactor * docPage.Size.Width), (int)Math.Round(scaleFactor * docPage.Size.Height), (int)Math.Round(scaleFactor * 96), (int)Math.Round(scaleFactor * 96), PixelFormats.Default); renderTarget.Render(docPage.Visual); JpegBitmapEncoder encoder = new JpegBitmapEncoder(); encoder.QualityLevel = 75; // Choose type here ie: JpegBitmapEncoder, etc //BitmapEncoder encoder = new PngBitmapEncoder(); // Choose type here ie: JpegBitmapEncoder, etc encoder.Frames.Add(BitmapFrame.Create(renderTarget)); string pageImageFileName = string.Format("{0}-{1}.jpg", Path.Combine(Path.GetDirectoryName(xpsFileName), Path.GetFileNameWithoutExtension(xpsFileName)), pageNum); using (FileStream pageOutStream = new FileStream(pageImageFileName, FileMode.Create, FileAccess.Write)) { encoder.Save(pageOutStream); } }

Este código necesita referencias a los ensamblados PresentationCore, PresentationFramework y ReachFramework.

EDIT: el código anterior contenía una pérdida de memoria (consulte Abrir el documento XPS en .Net provoca una pérdida de memoria ). La solución ha sido insertada en el ejemplo.