Программное создание нескольких экземпляров Acrobat - PullRequest
2 голосов
/ 12 ноября 2010

В настоящее время я использую библиотеку Adobe Acrobat Interop (v1.1) в однопотоковом режиме для пакетного редактирования нескольких документов PDF в нескольких томах. Это серьезное узкое место в моей программе, и, когда проект созрел, у меня возник соблазн распараллелить части этого.

Однако, похоже, что прежде чем я смогу продолжить, мне нужно создать несколько процессов Acrobat, чтобы не блокировать несколько потоков на одном экземпляре приложения. Я знаю, что можно настроить однопроцессное поведение Adobe, используя ключ / n в оболочке, но учитывая способ его создания в .NET:

Type type = Type.GetFromProgID("AcroExch.PDDoc");
CAcroPDDoc app = (CAcroPDDoc)Activator.CreateInstance(type);

Я не могу найти способ заставить его использовать несколько экземпляров. Я пробовал каждый взлом реестра под солнцем, но это, похоже, влияет только на способ запуска Acrobat из оболочки. Насколько я могу судить, для конструктора COM также нет параметров.

Я надеялся, что кто-нибудь сможет направить меня в правильном направлении. Спасибо!

1 Ответ

2 голосов
/ 12 ноября 2010

Acrobat представляет собой однопоточный COM, и это стена, которая ограничивает ваше приложение для создания нескольких потоков.Единственный обходной путь, о котором я могу подумать, - это обработка файлов в отдельных процессах.

Итак,

a) Поместите свою логику в консольное приложение и запускайте ее несколько раз параллельно

b) Используйте собственный процессор PDF, например ABC Pdf (не бесплатно!) или iTextSharp (бесплатно)

...