我目前正在以单线程方式使用Adobe的Acrobat Interop库(v1.1)来批量编辑多个卷的多个PDF文档。这是我的程序中的一个主要瓶颈,而且随着项目的成熟,我很想并行化部分内容。
但是,似乎在我可以继续之前,我需要创建多个Acrobat进程,以便不会在应用程序的单个实例上锁定多个线程。我知道可以通过在shell中使用/ n开关调整Adobe的单进程行为,但考虑到它在.NET中实例化的方式:
Type type = Type.GetFromProgID("AcroExch.PDDoc");
CAcroPDDoc app = (CAcroPDDoc)Activator.CreateInstance(type);
我真的找不到强制它进入多个实例的方法。我已经尝试过在阳光下的每个注册表黑客攻击,但这些只会影响Acrobat从shell中启动的方式。据我所知,COM构造函数也没有参数。
我希望有人能指出我正确的方向。谢谢!
答案 0 :(得分:2)
Acrobat作为单线程COM公开,这是限制应用程序生成多个线程的墙。我能想到的唯一工作就是在不同的进程上处理文件。
所以,
a)将您的逻辑放在控制台应用程序中,并将其并行多次生成
b)使用原生PDF处理器,例如ABC Pdf (not free!)或iTextSharp (free)