0

指定したドメイン宛ての電子メールを受信するたびに、postfix 電子メール サーバーから perl スクリプトをトリガーしています。perl スクリプトは基本的にすべての添付ファイルを抽出し、unoconv を呼び出して添付ファイルを PDF 形式に変換します。

私は現在、同じ添付ファイルを持つ常に同じ電子メールでスクリプトをテストしていますが、ランダムな動作が見られます。次のような unoconv コマンドを呼び出すと、すべての添付ファイルが変換されることがあります。

unoconv -f pdf -o /tmp/2151DC80-A545-11E4-880B-D7DC6512523E/ '/tmp/2151DC80-A545-11E4-880B-D7DC6512523E/attachments/21887524-A545-11E4-880B-D7DC6512523E-test.doc'

いくつかのレース状態の問題または類似のように見えます。何が問題になる可能性がありますか?

更新:問題は、unoconv が浮動小数点例外で終了することがあるようですが、ドキュメントは正常に変換されました (PDF ビューアーで開くことができます)。エラーが表示される関数のコードを次に示します。このような場合、どのように手続きを進めるかが今問題になっています。

################################################################################
#                       Convert attachments to PDF                             #
################################################################################
sub convertAttachments() {
  $logger->info("converting attachments");
  mkdir  $email_converted_attachment_dir;

  opendir(DIR, $email_attachment_dir) or die $!;
    while (my $file = readdir(DIR)) {
        next if ($file =~ m/^\./);
        $logger->info("Converting attachment: ".$email_attachment_dir.$file);
        $conv_result = "unoconv -v -T 10 -f pdf -o ".$email_converted_attachment_dir." '".$email_attachment_dir.$file."'";
        $logger->info("Running Command: ".$conv_result);
        system($conv_result) and die  "Can't launch unoconv: $!";
    }
  closedir(DIR);
}
4

1 に答える 1

0

男 unoconv 言います:

unoconv uses the LibreOffice’s UNO bindings for non-interactive
   conversion of documents and therefore needs an LibreOffice instance to
   communicate with. Therefore if it cannot find one, it will start its
   own instance for temporary usage. If desired, one can start a
   “listener” instance to use for subsequent connections or even for
   remote connections.

...

-T, --timeout
       When unoconv starts its own listener, try to connect to it for an
       amount of seconds before giving up. Increasing this may help when
       you receive random errors caused by the listener not being ready to
       accept conversion jobs.
于 2015-01-26T11:01:22.057 に答える