Ghost4J本机库将pdf转换为图像

时间:2013-07-16 10:28:48

标签: java image pdf ghostscript native-code

我正在使用Ghost4J Native库32位和64位dll文件将我的PDF转换为图像。我需要将它与ThreadPoolExecutor一起使用,即多线程,但由于它的原生,它经常崩溃我的JBoss。

在我同步使用此库之后,线程执行得不好。即4个线程,8个线程,性能无差异。

有没有安全的方法呢?

1 个答案:

答案 0 :(得分:1)

你有没有尝试过ghost4j人推荐用于多线程的内容:

  

<强>多线程

     

确保Ghostscript是线程安全的第一步。但是如果要在多线程/多用户环境中使用Ghost4J(例如在webapp中)会怎样?

     

如果使用Ghost4J编写文档转换webapp,如果用户必须等待以前的用户请求完成,则使用单个Ghostscript解释器可能是一个真正的问题。

     

为了克服这个限制,Ghost4J在其高级API组件上提供了多线程支持(从版本0.4.0开始)。

     

怎么可能? :组件处理在不同的JVM中进行。

     

主JVM中的组件能够启动其他JVM(在其他系统进程中运行)并使用cajo库(嵌入在ghost4j JAR文件中)控制它们。

     

要确保可以从主JVM创建从属JVM,请检查是否可以使用java命令从命令行启动Java。

     

可以通过在组件上设置maxProcessCount属性(如果可用)来控制多线程行为:

     
      
  • 当= 0时:禁用多线程。组件必须等待Ghostscript解释器在开始处理之前获得空闲。

  •   
  • 当&gt; 0:启用多线程。组件处理不会在主JVM中进行,而是在从属JVM中进行。 maxProcessCount的值表示可以为组件并发运行多少个从属JVM。当达到最大从属JVM数量时,新的处理请求将等待另一个处理完成。

  •   
     

以下是如何设置PDFConverter组件以允许使用2个从属JVM进行多线程处理:

//create converter
PDFConverter converter = new PDFConverter();

//set multi-threading
converter.setMaxProcessCount(2);
  

ghost4j - Thread safety and multi-threading