biz-Streamマニュアル よくあるご質問(FAQ) ダイレクト印刷・バッチ印刷 「sppファイルエラー。sppファイルをパスワードで解凍できない。」というダイアログが表示されました。

Q「sppファイルエラー。sppファイルをパスワードで解凍できない。」というダイアログが表示されました。

A回答

ダイレクト印刷・バッチ印刷では、biz-Stream サーバ側で spp ファイル形式の印刷用データを作成する際、zip4j という暗号化モジュールでアプリケーションから指定したパスワードによる暗号化を行い、印刷要求を行った端末にファイルを返します。
ダイレクト印刷・バッチ印刷モジュールは、クライアントにダウンロードしたファイルを指定のパスワードにより復号し印刷処理を行います。このとき暗号化パスワードと復号パスワードが一致していない場合は印刷を実行した画面上に以下のエラーダイアログが表示され、印刷が行われません。
sppファイルをパスワードで解凍できない
sppファイルエラーダイアログ

1. パスワード設定の誤り

パスワードが一致していない場合は、印刷実行環境の DirectPrintService.log (または BatchPrintService.log ) に以下のエラーログが出力されます。

ERROR DP035 sppファイルの解凍に失敗しました。Password Error
ERROR DP108 sppファイルエラー。sppファイルをパスワードエラーで解凍できない。

sppパスワードが正しく設定されている場合は、以下のログが出力され印刷処理が正常に行われます。

INFO DP034 sppファイルを解凍しました。PDFファイル名: XXX.pdf、ファイルサイズ: XXXbyte。

暗号化パスワード、および復号パスワードは以下の箇所で設定していますので、それぞれの箇所をご確認いただきパスワードが一致しているかを確認してください。

パスワード パスワードの設定箇所
暗号化パスワード お客様にて開発されたアプリケーションの setPassword または setPasswordWithEncoded メソッドで暗号化パスワードを指定します。
下記ガイドを参照してください。
復号パスワード 印刷実行環境の「C:\ProgramData\brainsellers\DirectPrint\DirectPrintService.xml」の
sppPass 項目で復号パスワードを指定します。下記ガイドを参照してください。

2. zip4j 暗号化モジュールの不具合

sppパスワードが一致していても、本エラーが発生する場合があります。これは、biz-Stream v5.1 以前に同梱している zip4j モジュールの既知の不具合であることが確認されており、 サーバ側で zip4j モジュールによる暗号化を行う際に不正なチェックサムが埋め込まれてしまい、印刷クライアント側で復号エラーが発生し上記のエラーダイアログが表示されます。
ただしこの事象は全ての印刷で発生するわけではなく、PDFファイルのデータ内容によって稀に発生する事象となります。
なお、 zip4j 暗号化モジュールの不具合の場合は、DirectPrintService.log (または BatchPrintService.log ) に以下のログが出力されず、

ERROR DP035 sppファイルの解凍に失敗しました。Password Error

以下だけ出力されます。

DEBUG DP108 sppファイルをパスワードエラーで解凍できない

ログ出力の初期設定では INFO レベル以上のログしか出ないため、DirectPrintService_logConfig.xml (または BatchPrintService_logConfig.xml) をテキストエディタで修正し、<level value="Info"></level>を<level value="Debug"></level>へ変更して保存し、DEBUG レベルのログを出してご確認ください。

本事象の回避策としては以下2つの方法があります。

  1. 【回避策1】
    サーバ側の biz-Stream バージョンを v5.2 以上では zip4j モジュールの不具合が解消されていますので、アップデートをご検討ください。最新版のリリース情報については、サポート情報の「ダウンロード」をご確認ください。
  2. 【回避策2】
    サーバ側の biz-Stream バージョンを v5.1 以前で利用される場合は、本エラーが発生した場合にダイレクト印刷・バッチ印刷の再実行(PDFから再生成、再印刷)をお試しいただくとファイルの中身が変わりチェックサムも変わることで印刷ができるようになる場合があります。
    ただし再生成すれば必ず回避されるとは限らず、複数回の再実行が必要となる可能性があり、再実行を繰り返してもエラーが解消しない可能性もあります。