Запуск скрипта трансформации в Alfresco

Почему мой сценарий преобразования не работает ни с одним загруженным файлом, кроме первого файла?

Я установил правило преобразования в Alfresco, которое прослушивает папку. Когда новый файл помещается в папку, правило запускает сценарий, который берет PDF-файл без текстового слоя, разбивает его на JPEG-файлы, распознает JPEG-файлы, затем конвертирует JPEG-файлы в PDF-файлы и объединяет PDF-файлы, возвращая 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>

person Thaneofife    schedule 19.10.2012    source источник
comment
Вы уверены, что ваше правило верно?   -  person Gagravarr    schedule 19.10.2012


Ответы (1)


Служба преобразования предназначена для преобразования элементов из одного MIME-типа в другой. Я не уверен, что преобразование из PDF во второй PDF допустимо. Вам было бы лучше реализовать собственное действие репозитория Java, которое затем, в свою очередь, использует bean-компонент org.alfresco.util.exec.RuntimeExec для запуска команды.

Поскольку ваша конфигурация Spring уже определяет bean-компонент RuntimeExec, вы можете повторно использовать это определение, но вместо этого обернуть его в свой собственный класс, который расширяет org.alfresco.repo.action.executer.ActionExecuterAbstractBase. На самом деле, если вы взглянете на исходный код org.alfresco.repo.action.executer.TransformActionExecuter, это может дать вам некоторые подсказки о том, как что-то реализовать.

person Will Abson    schedule 25.10.2012
comment
можете ли вы сказать мне, как я могу использовать класс org.alfresco.util.exec.RuntimeExec для запуска файла bat. Я использую abby ocr, и я нахожусь в том же сценарии. Но я не знаю, как запустить его из javascript. - person Krutik Jayswal; 16.12.2014