Aspose.PDF для .NET через COM Interop
Информация в этой теме относится к сценариям, когда вы хотите использовать Aspose.PDF для .NET через COM Interop в любом из следующих языков программирования:
- ASP
- Delphi
- JScript
- Perl
- PHP
- PowerBuilder
- Python
- VBScript
- Visual Basic
- C++
Работа с COM Interop
Aspose.PDF для .NET выполняется под управлением .NET Framework, это называется управляемым кодом. Код, написанный на всех вышеупомянутых языках, выполняется вне .NET Framework и называется неуправляемым кодом. Взаимодействие между неуправляемым кодом и Aspose.PDF происходит через механизм .NET, называемый COM Interop.
Объекты Aspose.PDF являются объектами .NET, но при использовании через COM Interop они появляются как объекты COM в вашем языке программирования. Aspose.PDF объекты являются объектами .NET, но при использовании через COM Interop они появляются как объекты COM в вашем языке программирования.
- В мире COM мы различаем COM сервер и COM клиент. COM сервер хранит COM классы, в то время как COM клиент запрашивает у COM сервера экземпляры классов, т.е. COM объекты.
- COM клиент или просто клиентское приложение может знать о содержимом COM класса что-то или быть полностью неосведомлённым о его методах и свойствах. Таким образом, клиентское приложение может открывать структуру COM класса на этапе компиляции/сборки или только во время выполнения. Процесс “открытия” известен как связывание, и таким образом мы имеем раннее связывание и позднее связывание.
- вкратце COM класс похож на черный ящик и для работы с ним необходима типовая библиотека, это бинарный файл содержит описание методов, свойств COM класса и любой высокоуровневый язык, который поддерживает работу с COM объектами, часто имеет синтаксическое выражение для добавления типовой библиотеки, например это #import в C++.
- Кратко о COM классах: они подобны черному ящику, и для работы с ними необходима библиотека типов. Этот бинарный файл содержит описание методов, свойств COM класса, и любой высокоуровневый язык, поддерживающий работу с COM объектами, часто имеет синтаксическую конструкцию для добавления библиотеки типов, например, это #import в C++.
- Библиотека типов используется для раннего связывания.
- COM объект может предоставлять свои методы и свойства двумя способами: с помощью интерфейса диспетчеризации (dispinterface) и через виртуальную таблицу функций (vtable).
- В интерфейсе диспетчеризации каждый метод и свойство идентифицируются уникальным элементом; этот элемент является идентификатором диспетчеризации функции (или DispID).
- vtable - это просто набор указателей на функции, которые поддерживает интерфейс COM класса.
- Объект, предоставляющий свои методы через оба интерфейса, поддерживает двойной интерфейс.
- Существуют преимущества как раннего, так и позднего связывания.
- существуют преимущества обоих типов привязки.
- механизм поздней привязки имеет большое преимущество: если создатель COM DLL решает выпустить новую версию с другим интерфейсом функций, любой код, вызывающий эти методы, не выйдет из строя, если методы все еще доступны; даже если vtable отличается, механизм поздней привязки умеет находить новые DISPIDs и вызывать соответствующие методы.
Вот темы, которые вам в конечном итоге потребуется освоить:
-
Использование объектов COM в вашем языке программирования. Смотрите документацию вашего языка программирования и темы, специфичные для языка, далее в этой документации.
-
Работа с объектами COM, предоставляемыми .NET COM Interop. Смотрите Взаимодействие с неменеджируемым кодом и Предоставление компонентов .NET Framework для COM на MSDN.
-
Модель объекта документа Aspose.PDF.
-
Объектная модель документа Aspose.PDF.
Регистрация Aspose.PDF для .NET с COM Interop
Вам необходимо установить Aspose.PDF для .NET и убедиться, что он зарегистрирован с COM Interop (чтобы его можно было вызывать из неуправляемого кода).
Для ручной регистрации Aspose.PDF для .NET для COM Interop:
- Из меню Пуск выберите Все программы, затем Microsoft Visual Studio, Инструменты Visual Studio и, наконец, Командная строка Visual Studio.
- Введите команду для регистрации сборки:
- .NET Framework 2.0 regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net2.0\Aspose.PDF.dll” /codebase
- .NET Framework 3.5 regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net3.5\Aspose.PDF.dll” /codebase
- .NET Framework 4.0 regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.0\Aspose.PDF.dll” /codebase
Обратите внимание, что параметр /codebase необходим только в случае, если Aspose.PDF.dll не находится в GAC, использование этой опции заставляет regasm помещать путь к сборке в реестр. Обратите внимание, что /codebase необходим только в том случае, если Aspose.PDF.dll не находится в GAC, использование этой опции заставляет regasm поместить путь к сборке в реестр.
ProgIDs
ProgID означает «программный идентификатор». Это имя COM-класса, используемого для создания объекта. ProgID состоит из имени библиотеки “Aspose.PDF” и имени класса.
Библиотека типов
Для генерации файла TLB:
- .NET Framework 2.0 regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net2.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net2.0\Aspose.PDF.tlb” /codebase
- .NET Framework 3.5 regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net3.5\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net3.5\Aspose.PDF.tlb” /codebase
- .NET Framework 4.0 regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.0\Aspose.PDF.tlb” /codebase
Создание COM объектов
Создание COM объекта аналогично созданию обычного объекта .NET:
'Создание экземпляра Pdf путем вызова его пустого конструктора
Dim pdf
Set pdf = CreateObject("Aspose.PDF.Generator.Pdf")
Как только объект создан, вы можете получить доступ к его методам и свойствам, как если бы это был объект COM:
'Добавить раздел в объект Pdf
pdf.Sections.Add(pdfsection)
Некоторые методы имеют перегрузки, и они будут представлены через COM Interop с добавлением числового суффикса к ним, за исключением самого первого метода, который остается без изменений. Например, перегрузки метода Pdf.Save становятся Pdf.Save, Pdf.Save_2 и так далее.
Для получения дополнительной информации смотрите статьи на соответствующем языке далее в этой документации.
Создание оберточной сборки
Если вам необходимо использовать множество классов, методов и свойств Aspose.PDF для .NET, рассмотрите возможность создания оберточной сборки (используя C# или любой другой язык программирования .NET). Оберточные сборки помогают избежать непосредственного использования Aspose.PDF для .NET из неуправляемого кода.
Хороший подход - разработать сборку .NET, которая ссылается на Aspose.PDF для .NET и выполняет всю работу с ним, и только предоставляет минимальный набор классов и методов неуправляемому коду. Хороший подход заключается в разработке сборки .NET, которая ссылается на Aspose.PDF для .NET и выполняет всю работу с ним, открывая только минимальный набор классов и методов для неуправляемого кода.
Сокращение количества классов и методов, которые вам нужно вызывать через COM Interop, упрощает проект. Использование классов .NET через COM Interop часто требует продвинутых навыков.