为什么我的转换脚本不会在第一个文件之外的任何上传文件上运行?
我在Alfresco中设置了一个侦听文件夹的转换规则。当一个新文件放入该文件夹时,该规则触发一个脚本运行,该脚本将获取没有文本层的PDF,将其分解为jpeg,对jpeg进行OCR,然后将jpegs转换为PDF并合并PDF,返回OCRed PDF然后使用文本图层将结果复制到另一个文件夹中,以便我们知道它已完成。
在命令行运行脚本有效。我第一次将文件放入Alfresco文件夹(上传)时,它会运行脚本并复制文件。但是随后我将文件放入文件夹,脚本不会运行,但文件仍然会复制到目标文件夹。所以我知道正在调用规则,但脚本似乎没有在以下文件上运行。我已经登录了脚本,所以我知道脚本甚至没有被调用。该规则适用于没有过滤器的文件夹中的所有新文件和已修改文件。然后,它使用我们的自定义OCR脚本运行转换和复制命令,并将目标文件夹定义为父文件夹。
以下是我的露天转型扩展:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="transformer.worker.PdfOCRTool" class="org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerWorker">
<property name="mimetypeService">
<ref bean="mimetypeService"/>
</property>
<property name="transformCommand">
<bean name="transformer.pdftoocr.Command" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandMap">
<map>
<entry key=".*">
<value>/opt/ocr/ocr.sh ${source} ${target}</value>
</entry>
</map>
</property>
<property name="errorCodes">
<value>1,2</value>
</property>
</bean>
</property>
<property name="explicitTransformations">
<list>
<bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
<property name="sourceMimetype">
<value>application/pdf</value>
</property>
<property name="targetMimetype">
<value>application/pdf</value>
</property>
</bean>
</list>
</property>
</bean>
<bean id="transformer.proxy.PdfOCRTool" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="thirdparty"/>
</property>
<property name="sourceBeanName">
<value>transformer.worker.PdfOCRTool</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.content.transform.ContentTransformerWorker</value>
</list>
</property>
</bean>
<bean id="transformer.PdfOCRTool" class="org.alfresco.repo.content.transform.ProxyContentTransformer" parent="baseContentTransformer">
<property name="worker">
<ref bean="transformer.proxy.PdfOCRTool"/>
</property>
</bean>
</beans>
答案 0 :(得分:0)
转换服务旨在将项目从一种mimetype转换为另一种mimetype。我不确定从PDF转换为第二个PDF是否有效。您最好实现自定义Java存储库操作,然后使用org.alfresco.util.exec.RuntimeExec
bean来触发命令。
由于你的Spring配置已经定义了一个RuntimeExec
bean,你可以重用这个定义,而是将它包装在你自己的扩展org.alfresco.repo.action.executer.ActionExecuterAbstractBase
的自定义类中。事实上,如果您查看org.alfresco.repo.action.executer.TransformActionExecuter
的来源,那么可能会为您提供有关如何实施的一些线索。