visualizar visor net c# winforms pdf

c# - visualizar - visor pdf vb net



Mostrar un archivo pdf de Winform (11)

Cómo abrir un archivo PDF con una ruta relativa

En este caso, la aplicación creada debe ejecutarse en varias PC. Para hacer referencia en un archivo que no está en la red, pero en la Carpeta de Programa misma, use el siguiente fragmento de código:

En primer lugar, incluya la siguiente Biblioteca:

using System.IO;

A continuación, utilice un botón , cuadro de imagen o lo que sea para crear un evento ClickEvent y use el siguiente fragmento de código:

private void pictureBox2_Click(object sender, EventArgs e) { //get current folderpath of the .exe string ProgramPath = AppDomain.CurrentDomain.BaseDirectory; //jump back relative to the .exe-Path to the Resources Path string FileName = string.Format("{0}Resources//Master_Thesis_Expose.pdf", Path.GetFullPath(Path.Combine(ProgramPath, @"../../"))); //Open PDF System.Diagnostics.Process.Start(@"" + FileName + ""); }

Pulgar arriba |

Solo estoy creando una calculadora simple en C # (formulario de Windows)

Creé una "Ayuda para el usuario", que es un archivo pdf, lo que quiero es mostrar ese archivo pdf si el usuario hace clic en el botón "Ayuda" en WinForm. Si se supone que Adobe Reader está preinstalado en la máquina del usuario ...

¿Cómo abrir el archivo pdf en el botón clic en winForm?

No planeo proporcionar este archivo pdf en el disco duro del usuario. Lo que significa que tengo que insertar este pdf en la calculadora (winForm) y tengo que mostrarlo en el clic del botón.

Amablemente guíame con la mejor práctica para mostrar un archivo incrustado en WinForm.


Es posible insertar Adobe Reader en su forma como un componente ActiveX. Pero eso significa que tendrá que asegurarse de que Reader esté instalado en la máquina cliente para que funcione.

En caso de que no tenga que estar estrictamente integrado, puede simplemente iniciar el archivo PDF y dejar que el visor que el usuario tenga lo abra.


Existe un proyecto de visor de C # pdf en el código de google. http://code.google.com/p/pdfviewer-win32/ está el visor y está la biblioteca que usa disponible que usa mupdf y xpdf para representar los documentos en formato PDF en su programa de formas de inversión. Actualmente estoy desarrollando una biblioteca de control de usuario para que las personas puedan utilizar y acceder a sus programas para ver las capacidades de visualización en PDF. funciona bastante bien


Obtener el archivo incrustado no debería ser un problema en absoluto. Esto no depende de que sea formato .pdf, y puede buscar allí una solución por separado.

Para su visualización, a menos que sepa que Acrobat o similar está instalado (bueno, incluso Edge puede abrir esos archivos hoy en día), o si desea mostrar el archivo incrustado en una aplicación de WinForms, existe

https://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe

escrito en VB dependiendo de muchas bibliotecas (parcialmente comerciales, si su solución es comercial).

PdfiumViewer

https://github.com/pvginkel/PdfiumViewer

es genial y también está disponible a través de NuGet.

The PdfiumViewer library primarily consists out of three components: •The PdfViewer control. This control provides a host for the PdfRenderer control and has a default toolbar with limited functionality; •The PdfRenderer control. This control implements the raw PDF renderer. This control displays a PDF document, provides zooming and scrolling functionality and exposes methods to perform more advanced actions; •The PdfDocument class provides access to the PDF document and wraps the Pdfium library.

Es una solución todo en uno para mostrar y viene con una licencia Apache 2.0 más amigable.


Puede hacer referencia al control Adobe Reader ActiveX y agruparlo con su aplicación.

Simplemente agregue AcroPDF.PDF.1 a su Toolbox desde la pestaña COM Components (haga clic con el botón derecho en la caja de herramientas y haga clic en Choose Items... ) luego arrastre una instancia en su Winform para que el diseñador cree el código para usted. Alternativamente, después de agregar la referencia necesaria, puede usar el siguiente código:

AxAcroPDFLib.AxAcroPDF pdf = new AxAcroPDFLib.AxAcroPDF(); pdf.Dock = System.Windows.Forms.DockStyle.Fill; pdf.Enabled = true; pdf.Location = new System.Drawing.Point(0, 0); pdf.Name = "pdfReader"; pdf.OcxState = ((System.Windows.Forms.AxHost.State)(new System.ComponentModel.ComponentResourceManager(typeof(ViewerWindow)).GetObject("pdfReader.OcxState"))); pdf.TabIndex = 1; // Add pdf viewer to current form this.Controls.Add(pdf); pdf.LoadFile(@"C:/MyPDF.pdf"); pdf.setView("Fit"); pdf.Visible = true;


Puede usar el control WebBrowser y dejar que IE cargue un lector de PDF si hay uno instalado en la máquina.

Sin embargo, la última vez que probé esto, primero tuve que escribir el archivo PDF en el disco, para poder apuntar el control WebBrowser.


Si desea visualizar un archivo PDF dentro de su aplicación, es probable que el control WebBrowser sea preferible al control Adobe Reader, ya que abrirá el archivo sin problemas en el lector de PDF o en cualquier IE que esté utilizando de manera predeterminada para abrir archivos PDF. Simplemente agregue el control WebBrowser a un formulario existente o nuevo y navegue hasta el archivo pdf.

Nunca asuma que un usuario tiene Adobe o cualquier otro control de terceros o bibliotecas instaladas en sus máquinas, siempre empaquételas con su ejecutable o puede tener problemas.

El control de Adobe Reader obviamente no se integra tan bien con .NET como un componente de Windows intrínseco. Como regla general, siempre estoy a favor del uso de controles .NET integrados sobre proveedores externos. En cuanto a incrustar el archivo en el ejecutable real; no va a suceder hasta que Microsoft decida que cualquier PDF antiguo puede ser trabajado en el CLS y compilado en MSIL. Lo que tienes cuando desarrollas una aplicación en .NET es un código que se puede compilar en MSIL intermedio para ser traducido en tiempo de ejecución por el CLR al código nativo y ejecutado en el sistema operativo.

WebBrowser1.Navigate("SomePDF.pdf");


Si su usuario tiene Adobe Reader (o cualquier otro lector de PDF) instalado en su máquina, puede usar:

System.Diagnostics.Process.Start( "My-PDF-file.pdf");

Espero que esto ayude.

Nota: Obviamente, esto fallará si el usuario no tiene instaladas las aplicaciones de PDF Reader.


Sugeriría convertir tu archivo pdf a un archivo de ayuda de Microsoft, para que no necesites tener Adobe Reader instalado (tiene fallas y demasiados problemas de seguridad). No puede esperar que los usuarios tengan esto.

En respuesta al comentario del principiante:

Sí, necesitaría crear su archivo de ayuda como un documento HTML en lugar de un pdf. No hay una forma fácil de convertir PDF a HTML.


Me gustaría ponerlo en mi carpeta de programa, agregar un enlace dentro de mi carpeta de menú de inicio para permitir un acceso directo (sin iniciar mi herramienta) y solo en algún evento de clic System.Diagnostics.Process.Start(@"./Manual.pdf");

Actualizar

Bien, ahora llegamos a una pregunta completamente nueva: ¿cómo incrustar un archivo en mi aplicación y comenzarlo?

Para esta pregunta, encontrará varias respuestas aquí, pero aquí está la versión corta:

  1. Haga clic con el botón derecho en su proyecto y seleccione Agregar - Elemento existente
  2. Seleccione su archivo ( no haga doble clic en él )
    • Haga clic en la pequeña flecha al lado del botón Agregar y seleccione Agregar como enlace
  3. Haga doble clic en Propiedades - Resources.resx
  4. Haga clic en la pequeña flecha al lado de Agregar recurso y seleccione Agregar archivo existente
  5. Seleccione el mismo archivo nuevamente en el cuadro de diálogo Abrir
  6. Ahora puede acceder al archivo dentro de su código como byte[] desde Properties.Resources.NameOfResource

Con estos pasos, hace referencia a su archivo donde sea que exista dentro de su estructura. Si desea que una copia de su archivo PDF se ponga en una subcarpeta de Recursos dentro de su proyecto, simplemente omita los puntos uno y dos en la lista anterior.

Para obtener su pdf ahora abierto, tendrá que escribir el byte [] en el disco (tal vez con Path.GetTempFileName() ) y comenzarlo con Adobe Reader. (No olvides borrar el archivo después del uso)


AxAcroPDF1.LoadFile("C:ShippingForm.pdf") AxAcroPDF1.src = "C:ShippingForm.pdf" AxAcroPDF1.setShowToolbar(False) AxAcroPDF1.setView("fitH") AxAcroPDF1.setLayoutMode("SinglePage") AxAcroPDF1.setShowScrollbars(False) AxAcroPDF1.Show()