Aspose.PDF for .NET a través de COM Interop
La información en este tema se aplica a escenarios donde deseas usar Aspose.PDF for .NET a través de COM Interop en cualquiera de los siguientes lenguajes de programación:
- ASP
- Delphi
- JScript
- Perl
- PHP
- PowerBuilder
- Python
- VBScript
- Visual Basic
- C++
Aspose.PDF for .NET se ejecuta bajo el control del .NET Framework y esto se llama código administrado. El código escrito en todos los lenguajes mencionados anteriormente se ejecuta fuera del .NET Framework y se llama código no administrado. La interacción entre el código no administrado y Aspose.PDF ocurre a través de la instalación de .NET llamada COM Interop.
Los objetos Aspose.PDF son objetos .NET, pero cuando se utilizan a través de COM Interop, aparecen como objetos COM en tu lenguaje de programación. Por lo tanto, es mejor asegurarte de saber cómo crear y usar objetos COM en tu lenguaje de programación, antes de comenzar a usar Aspose.PDF for .NET.
- En el mundo COM distinguimos entre servidor COM y cliente COM. El servidor COM almacena clases COM mientras que el cliente COM solicita instancias de clases al servidor COM, es decir, objetos COM.
- El cliente COM o simplemente la aplicación cliente puede conocer algo sobre el contenido de la clase COM o estar totalmente inconsciente de sus métodos y propiedades. Por lo tanto, la aplicación cliente puede descubrir la estructura de la clase COM al compilar/construir o solo durante la ejecución. El proceso de “descubrimiento” se conoce como enlace y así tenemos enlace temprano y enlace tardío.
- en resumen, la clase COM es como una caja negra y para trabajar con ella se necesita una biblioteca de tipos, este archivo binario tiene la descripción de los métodos, propiedades de la clase COM y cualquier lenguaje de alto nivel que soporte trabajar con objetos COM a menudo tiene una expresión de sintaxis para agregar la biblioteca de tipos, por ejemplo, esto es #import en C++.
- la biblioteca de tipos se utiliza para el enlace temprano.
- un objeto COM puede exponer sus métodos y propiedades de dos maneras: por medio de una interfaz de despacho (dispinterface) y en su vtable (tabla de funciones virtuales).
- dentro de la dispinterface, cada método y propiedad se identifica por un miembro único; este miembro es el identificador de despacho de la función (o DispID).
- vtable es solo un conjunto de punteros a funciones que la interfaz de clase COM soporta.
- un objeto que expone sus métodos a través de ambas interfaces soporta una interfaz dual.
- hay ventajas en ambos tipos de enlace. El enlace temprano te proporciona un mayor rendimiento y verificación de sintaxis en tiempo de compilación. El enlace tardío es más ventajoso cuando estás escribiendo clientes que pretendes que sean compatibles con versiones futuras de tu clase COM. Con el enlace tardío, la información de la biblioteca de tipos no está “fijada” en tu cliente, por lo que puedes tener mayor confianza en que tu cliente puede trabajar con versiones futuras de la clase COM sin cambios en el código.
- el mecanismo de enlace tardío tiene una gran ventaja: si el creador del DLL COM decide lanzar una nueva versión, con un diseño de interfaz de función diferente, cualquier código que llame a esos métodos no fallará a menos que los métodos ya no estén disponibles; incluso si la vtable es diferente, el enlace tardío logra descubrir los nuevos DISPIDs y llamar a los métodos apropiados.
Aquí están los temas que eventualmente necesitarás dominar:
Necesitas instalar Aspose.PDF for .NET y asegurarte de que esté registrado con COM Interop (asegurando que pueda ser llamado desde código no administrado).
Para registrar Aspose.PDF for .NET para COM Interop manualmente:
- Desde el menú Inicio, selecciona Todos los programas, luego Microsoft Visual Studio, Herramientas de Visual Studio y, finalmente, Símbolo del sistema de Visual Studio.
- Ingresa el comando para registrar el ensamblado:
- .NET Framework 4.8.1
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.8.1\Aspose.PDF.dll” /codebase
- .NET 6.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net6.0\Aspose.PDF.dll” /codebase
- .NET 7.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net7.0\Aspose.PDF.dll” /codebase
- .NET 8.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net8.0\Aspose.PDF.dll” /codebase
- .NET Standard 2.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\netstandard2.0\Aspose.PDF.dll” /codebase
Presta atención a que /codebase es necesario solo si Aspose.PDF.dll no está en GAC, usar esta opción hace que regasm coloque la ruta del ensamblado en el registro.
regasm.exe es una herramienta incluida en el SDK de .NET Framework. Todas las herramientas del SDK de .NET Framework se encuentran en el directorio \Microsoft .NET\Framevork<FrameworkVersion>, por ejemplo C:\Windows\Microsoft .NET\Framework\v4.0.30319. Si usas Visual Studio .NET:
Desde el menú Inicio, selecciona Programas, seguido de Visual Studio 2022, finalmente, Símbolo del sistema para desarrolladores de VS 2022.
Esto ejecuta un símbolo del sistema con todas las variables de entorno necesarias configuradas.
ProgIDs
ProgID significa “identificador programático”. Es el nombre de una clase COM que se utiliza para crear un objeto. Los ProgIDs consisten en el nombre de la biblioteca “Aspose.PDF” y el nombre de la clase.
Biblioteca de Tipos
Si tu lenguaje de programación (por ejemplo, Visual Basic o Delphi) te permite hacer referencia a una biblioteca de tipos COM, entonces agrega una referencia a Aspose.PDF.tlb y para ver todas las clases, métodos, propiedades y enumeraciones de Aspose.PDF for .NET en tu Explorador de Objetos.
Para generar un archivo TLB:
- .NET Framework 4.8.1
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.8.1\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.8.1\Aspose.PDF.tlb” /codebase
- .NET 6.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net6.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net6.0\Aspose.PDF.tlb” /codebase
- .NET 7.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net7.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net7.0\Aspose.PDF.tlb” /codebase
- .NET 8.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net8.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net8.0\Aspose.PDF.tlb” /codebase
- .NET Standard 2.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\netstandard2.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\netstandard2.0\Aspose.PDF.tlb” /codebase
Creando Objetos COM
La creación de un objeto COM es similar a la creación de un objeto .NET normal:
'Instantiate Pdf instance by calling its empty constructor
Dim document
Set document = CreateObject("Aspose.Pdf.Document")
Una vez creado, puedes acceder a los métodos y propiedades del objeto, como si fuera un objeto COM:
'Add page to the document
document.Pages.Add()
Algunos métodos tienen sobrecargas y serán expuestos por COM Interop con un sufijo numérico añadido a ellos, excepto por el primer método que permanece sin cambios. Por ejemplo, las sobrecargas del método Document.Save se convierten en Document.Save, Document.Save_2, y así sucesivamente.
Para más información, consulta los artículos específicos del lenguaje más adelante en esta documentación.
Creando un Ensamblado Wrapper
Si necesitas usar muchas de las clases, métodos y propiedades de Aspose.PDF for .NET, considera crear un ensamblado wrapper (usando C# o cualquier otro lenguaje de programación .NET). Los ensamblados wrapper ayudan a evitar usar Aspose.PDF for .NET directamente desde código no administrado.
Un buen enfoque es desarrollar un ensamblado .NET que haga referencia a Aspose.PDF for .NET y realice todo el trabajo con él, y solo exponga un conjunto mínimo de clases y métodos a código no administrado. Tu aplicación debería trabajar solo con tu biblioteca wrapper.
Reducir el número de clases y métodos que necesitas invocar a través de COM Interop simplifica el proyecto. Usar clases .NET a través de COM Interop a menudo requiere habilidades avanzadas.