Adobe LiveCycle ConvertPDF サービスを使用して大きな PDF ファイルを変換しています。
これは小さな PDF ファイルでは問題なく機能しますが、大きな PDF ファイル (約 150 MB - 質問しないでください) を変換しようとすると失敗します。
アドビは、トランザクションのタイムアウトを約 14 分 (?) に設定しているようです。巨大な PDF の処理時間がこの時間を超えるため、操作が中断されます。複数の PDF を試したので、これは入力ファイルの破損が原因であるとは考えられません。
例外が生成する出力は次のとおりです。
com.adobe.livecycle.convertpdfservice.exception.ConvertPdfException: ALC-DSC-000-000: com.adobe.idp.dsc.DSCException: Internal error.
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl.toPS2WithSMT(ConvertPdfServiceImpl.java:117)
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl.toPS2(ConvertPdfServiceImpl.java:93)
[...]
Caused by: ALC-DSC-000-000: com.adobe.idp.dsc.DSCException: Internal error.
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl$1.doInTransaction(ConvertPdfServiceImpl.java:110)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionBMTAdapterBean.doRequiresNew(EjbTransactionBMTAdapterBean.java:218)
[...]
Caused by: com.adobe.livecycle.convertpdfservice.exception.ConvertPdfException: Cannot convert PDF file to PostScript.
Exception: "Transaction timed out: Couldn't connect to Datamanager Service"
at com.adobe.convertpdf.ConvertPdfBmcWrapper.convertPdftoPs(ConvertPdfBmcWrapper.java:207)
at com.adobe.convertpdf.ConvertPdfServer.convertPdftoPs(ConvertPdfServer.java:121)
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl.toPS2InTxn(ConvertPdfServiceImpl.java:129)
[...]
これまでのところ - 論理的に思えます。
ただし、トランザクションの長さが設定されている場所が見つかりません。タイムアウトを 30 分程度に延ばせば、問題は解決すると思います。(また、トランザクションなしでこの操作を呼び出す方法があれば、問題は解決します...)
単純に次のように実行しているとしましょう:
ServiceClientFactory factory = com.adobe.idp.dsc.clientsdk.ServiceClientFactory.createInstance(connectionProps);
ConvertPdfServiceClient convertPDFClient = new com.adobe.livecycle.convertpdfservice.client.ConvertPdfServiceClient(factory);
// ... set-up details skipped ...
com.adobe.idp.Document result_postscript = convertPDFClient.toPS2(inPdf,options);
result_postscript.copyToFile(new File("c:/Adobe/output.ps"))
ただし、ServiceClientFactory を正しく設定していないか、JBoss 構成を正しく読み取っていない可能性があるため、トランザクションをより長く存続させる方法が見つかりません。(トランザクションの生存時間は本当に問題ですか?)