Mostrar un PDF con VB.NET

Los archivos PDF tienen un formato de documento interno que requiere un objeto de software que "entienda" el formato. Dado que muchos de ustedes podrían haber utilizado las funciones de Office en su código VB, veamos brevemente Microsoft Word como un ejemplo de procesamiento de un documento formateado para asegurarnos de que entendemos el concepto. Si desea trabajar con un documento de Word, debe agregar una Referencia a la Biblioteca de objetos de Microsoft Word 12.0 (para Word 2007) y luego crear una instancia del objeto Aplicación de Word en su código.

 Dim myWord As Microsoft.Office.Interop.Word.ApplicationClass
'Inicie Word y abra el documento.
myWord = CreateObject ("Word.Application")
myWord.Visible = True
myWord.Documents.Open ("C: \ myWordDocument.docx")

("" debe reemplazarse con la ruta real al documento para que este código funcione en su PC).

Microsoft usa la Biblioteca de objetos de Word para proporcionar otros métodos y propiedades para su uso. Lea el artículo Interoperabilidad COM -.NET en Visual Basic para comprender más sobre la interoperabilidad COM de Office.

Pero los archivos PDF no son una tecnología de Microsoft. PDF - Formato de documento portátil - es un formato de archivo creado por Adobe Systems para el intercambio de documentos. Durante años, fue totalmente propietario y tuvo que obtener un software que pudiera procesar un archivo PDF de Adobe. El 1 de julio de 2008, el PDF se finalizó como un estándar internacional publicado. Ahora, cualquiera puede crear aplicaciones que puedan leer y escribir archivos PDF sin tener que pagar regalías a Adobe Systems. Si planea vender su software, es posible que deba obtener una licencia, pero Adobe los proporciona sin regalías. (Microsoft creó un formato diferente llamado XPS que se basa en XML. El formato PDF de Adobe se basa en Postscript. XPS se convirtió en un estándar internacional publicado el 16 de junio de 2009.)

Los usos de PDF

Dado que el formato PDF es un competidor de la tecnología de Microsoft, no brindan mucho soporte y debe obtener un objeto de software que "entienda" el formato PDF de alguien que no sea Microsoft en este momento. Adobe le devuelve el favor. Tampoco admiten muy bien la tecnología de Microsoft. Citando la última documentación de Adobe Acrobat 9.1 (octubre de 2009), "Actualmente no hay soporte para el desarrollo de complementos que usen lenguajes administrados como C # o VB.NET". (Un "complemento" es un componente de software a pedido. El complemento de Adobe se utiliza para mostrar archivos PDF en un navegador ".)

Como PDF es un estándar, varias compañías han desarrollado software para la venta que puede agregar a su proyecto que hará el trabajo, incluido Adobe. También hay una serie de sistemas de código abierto disponibles. También puede usar las bibliotecas de objetos de Word (o Visio) para leer y escribir archivos PDF, pero el uso de estos grandes sistemas para esto solo requerirá programación adicional, también tiene problemas de licencia y hará que su programa sea más grande de lo que debe ser.

De la misma manera que necesita comprar Office antes de poder aprovechar Word, también debe comprar la versión completa de Acrobat antes de poder aprovechar más que solo el Reader. Usaría el producto Acrobat completo de la misma manera que se usan otras bibliotecas de objetos, como Word 2007 anterior. No tengo instalado el producto completo de Acrobat, así que no pude proporcionar ningún ejemplo probado aquí.

Cómo

Pero si solo necesita mostrar archivos PDF en su programa, Adobe proporciona un control COM ActiveX que puede agregar a VB.NET Toolbox. Hará el trabajo gratis. De todos modos, es el mismo que probablemente use para mostrar archivos PDF: el Adobe Acrobat PDF Reader gratuito.

Para usar el control Reader, primero asegúrese de haber descargado e instalado el Acrobat Reader gratuito de Adobe.

El paso 2 es agregar el control a VB.NET Toolbox. Abra VB.NET e inicie una aplicación estándar de Windows. (La "próxima generación" de presentación de Microsoft, WPF, aún no funciona con este control. ¡Lo sentimos!) Para hacerlo, haga clic derecho en cualquier pestaña (como "Controles comunes") y seleccione "Elegir elementos ..." menú contextual que aparece. Seleccione la pestaña "Componentes COM" y haga clic en la casilla de verificación junto a "Adobe PDF Reader" y haga clic en Aceptar. Debería poder desplazarse hacia abajo a la pestaña "Controles" en la Caja de herramientas y ver el "Adobe PDF Reader" allí.

Ahora simplemente arrastre el control a su formulario de Windows en la ventana de diseño y ajústelo adecuadamente. Para este ejemplo rápido, no voy a agregar ninguna otra lógica, pero el control tiene mucha flexibilidad que le diré cómo averiguar más adelante. Para este ejemplo, solo voy a cargar un PDF simple que creé en Word 2007. Para hacerlo, agregue este código al formulario Procedimiento de evento de carga:

 Console.WriteLine (AxAcroPDF1.LoadFile (_
   "C: \ Users \ Temp \ SamplePDF.pdf"))

Sustituya la ruta y el nombre de archivo de un archivo PDF en su propia computadora para ejecutar este código. Mostré el resultado de la llamada en las ventanas de Salida solo para mostrar cómo funciona. Aquí está el resultado:

--------
Haga clic aquí para mostrar la ilustración.
Haga clic en el botón Atrás en su navegador para volver
--------

Si desea controlar el Lector, también hay métodos y propiedades para eso en el control. Pero la buena gente de Adobe ha hecho un mejor trabajo que yo. Descargue el SDK de Adobe Acrobat desde su centro de desarrolladores (http://www.adobe.com/devnet/acrobat/). El programa AcrobatActiveXVB en el directorio VBSamples del SDK le muestra cómo navegar en un documento, obtener los números de versión del software de Adobe que está utilizando y mucho más. Si no tiene instalado el sistema Acrobat completo, que debe adquirirse en Adobe, no podrá ejecutar otros ejemplos.