1

最初のファイル以外にアップロードされたファイルで変換スクリプトが実行されないのはなぜですか?

フォルダーをリッスンする変換ルールを Alfresco に設定しました。新しいファイルがフォルダーに配置されると、ルールは、テキスト レイヤーのない PDF を取得し、それを jpeg に分割し、jpeg を OCR し、次に jpeg を 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>
4

1 に答える 1

0

変換サービスは、アイテムをある MIME タイプから別の MIME タイプに変換することを目的としています。PDF から 2 番目の PDF への変換が有効かどうかはわかりません。org.alfresco.util.exec.RuntimeExecBean を使用してコマンドを起動するカスタム Java リポジトリ アクションを実装することをお勧めします。

Spring 構成では既にRuntimeExecBean が定義されているため、この定義を再利用できますが、代わりに、拡張する独自のカスタム クラスにラップできますorg.alfresco.repo.action.executer.ActionExecuterAbstractBase。実際、then のソースを見てみると、org.alfresco.repo.action.executer.TransformActionExecuter物事を実装する方法についての手がかりが得られるかもしれません。

于 2012-10-25T11:27:35.303 に答える