【问题标题】:Programmatically Creating Multiple Instances of Acrobat以编程方式创建多个 Acrobat 实例
【发布时间】:2010-11-12 12:46:40
【问题描述】:

我目前正在以单线程方式使用 Adob​​e 的 Acrobat Interop 库 (v1.1) 来批量编辑多个卷中的多个 PDF 文档。这是我的程序中的一个主要瓶颈,随着项目的成熟,我很想并行化其中的一部分。

但是,在我可以继续之前,我似乎需要创建多个 Acrobat 进程,以免多个线程锁定在应用程序的单个实例上。我知道可以通过使用 shell 中的 /n 开关来调整 Adob​​e 的单进程行为,但考虑到它在 .NET 中的实例化方式:

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

我真的找不到一种方法来强制它进入多个实例。我已经在阳光下尝试了所有注册表黑客,但这些似乎只会影响 Acrobat 从 shell 中启动的方式。据我所知,COM 构造函数也没有参数。

我希望有人能指出我正确的方向。谢谢!

【问题讨论】:

  • 这可能是一个进程外 COM 服务器,请检查您在创建应用程序对象时是否看到 .exe 启动。不,您不能在客户端应用程序中覆盖其行为。

标签: c# .net com interop acrobat


【解决方案1】:

Acrobat 公开为单线程 COM,这就是限制您的应用程序生成多个线程的墙。我能想到的唯一解决方法是在单独的进程上处理文件。

所以,

a) 将您的逻辑放在控制台应用程序中,并并行生成多次

b) 使用原生 PDF 处理器,例如 ABC Pdf (not free!)iTextSharp (free)

【讨论】:

  • 出于许可原因,我可能会转向 ABC PDF。感谢您的回复!
猜你喜欢
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2018-04-29
相关资源
最近更新 更多