プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド
12c (12.2.1.2)
E82763-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

10.9 よくある質問

この項では、UNIXでの印刷時に発生する一般的な問題について説明します。


注意:

Reports Serverでは、印刷ジョブの送信にrwlprが使用されます。Windowsのrwlprロギングでは、traceModule=allまたはtraceModule=serverを使用してReports Serverのトレースを有効にすると、destype=printerに対する印刷診断ログ(server_name-rwlpr-jobid.log)がログ・ディレクトリ($DOMAIN_HOME/servers/<reports_server_name>/logs/)に作成されます。このログ・ファイルには、スプーラの問題などの、印刷時の問題の診断に役立つメッセージに関する情報が記録されます。

10.9.1 一般的な印刷エラー・メッセージ

REP-00177 - リモート・サーバーで実行中にエラーが発生しました

REP-01800 - フォーマット・エラーが発生しました

REP-03300 - 回復不能エラー

UI-9 - このファンクション呼出しはコンテキストに合いません。

REP-3002: プリンタの初期化中に内部エラーが発生しました

原因:

これらのエラーは一般に、プリンタ構成の問題を示しています。

処置:

設定のオペレーティング・システム・レベルで定義されているプリンタ・キューを調べてください。次のコマンドを使用します。

  • lpc status

  • lpstat -a

有効なプリンタ・キューがインストールされている場合は、次の項目を調べてください。

  • uiprint.txtに、プリンタの有効なエントリが必要です。

  • Oracle Reportsではuiprint.txtファイルを開いて読み取ることができる必要があります。

    レポートを実行するユーザーには、uiprint.txtに対してオペレーティング・システム・レベルの読取り権限が必要です。Oracle Reportsではuiprint.txtを開くことができる必要があります。UNIXオペレーティング・システムでは、ファイルを開く操作に関する制限があります。この制限を超えている場合は、Oracle Reportsでuiprint.txtを開くことはできません。

  • uiprint.txtで指定されているプリンタ記述ファイルが、次の場所に存在している必要があります。

    $DOMAIN_HOME/config/fmwconfig/components/ReportsToolsComponent/<reports_tools_name>/guicommon/tk/admin
    
  • uiprint.txtで指定されているプリンタが、オペレーティング・システム・レベルで使用可能に設定されている必要があります。これを簡単に調べるには、コマンドラインでlpまたはlprを使用して任意のファイルを印刷します。これらのコマンドを使用して印刷することができ、プリンタに結果が出力される場合、そのプリンタは使用可能です。

  • プリンタ・キューおよびuiprint.txtのエントリの構文が有効である必要があります。

    プリンタの確認に失敗した場合は、付録B「環境変数」で環境変数のTK_PRINT_STATUSおよびREPORTS_NO_DUMMY_PRINTERの説明を参照してください。

REP-00826 - プリンタ・ドライバ - xxx(パラメータ - desformatで指定)は無効です。

REP-00177 - リモート・サーバーで実行中にエラーが発生しました(CGIを介して実行した場合)

原因:

DESFORMATの値が、指定のレポート実行モードに対して正しく指定されていません。

処置:

DESFORMATパラメータでは、必要な出力フォーマットを指定します。有効なフォーマットは次のとおりです。

  • ビットマップ・レポートの場合、Oracle Reportsでサポートされている出力フォーマット(PostScript、PCL、PDF、HTML、XML、HTMLCSS、ENHANCEDSPREADSHEET、SPREADSHEET)はいずれもDESFORMATで有効です。この場合は、.PRTファイル名は指定しません。出力先をファイルとして実行する場合、DESFORMATパラメータは有効なプリンタ・キューに設定する必要があります。Oracle Reportsでは、プリンタに関連付けられているプリンタ定義ファイルを使用して出力をフォーマットします。

  • キャラクタ・モード・レポートの場合は、DESFORMATによってASCIIプリンタに対する出力が設定され、エスケープ文字が渡されます。キャラクタ・モード・レポートを実行する場合は、MODEパラメータを必ずCharacterに変更し、有効な.PRTファイルを使用してください。

表10-7に、コマンドライン・オプション(DESTYPEDESNAMEおよびDESFORMAT)とプリンタ出力との対応を示します。

表10-7 出力方法とDESTYPEDESNAMEDESFORMATの設定

出力方法 DESTYPE DESNAME DESFORMAT

ファイルへの生成

FILE

file_name.ps

printer_name

印刷

PRINTER

printer_name


DISTRIBUTE=YES



printer_name

MODE=CHARACTER



file_name.prt


REP-01800 - フォーマット・エラーが発生しました。

REP-00177 - リモート・サーバーで実行中にエラーが発生しました

(CGIを介して実行した場合)

原因:

このエラーは、UNIXサーバー上でプリンタ構成の問題が発生したことを示します。物理的に使用可能なプリンタがシステム上にない場合も、そのようなプリンタがあるものとして設定する必要があります。

処置:

  1. uiprint.txtに有効なエントリがあることを確認します。

  2. uiprint.txtに複数のプリンタ・キューのエントリがあり、デフォルトのプリンタを設定する必要がある場合は、環境変数が、uiprint.txtで指定されたプリンタのいずれかに設定されていることを確認してください。関連する環境変数が設定されていない場合は、uiprint.txtの最初のエントリが使用されます。プリンタ関連の環境変数の詳細は、付録B「環境変数」を参照してください。

システムで使用できるプリンタがない場合の代替手段の詳細は、第10.3項「印刷環境の構成」を参照してください。

名前にスペースがあるプリンタで出力する際のエラー

原因:

Solaris 2.8の環境で名前にスペースがあるプリンタを使用すると、不具合によりエラーが発生する場合があります。このエラーは、プリンタ名の前後に引用符を付けてlprまたはlpコマンドを実行することが原因です。

処置:

この問題を解決するには、次のいずれかの手順を実行します。

  • プリンタ名からスペースを削除します。

  • プリンタ名に引用符を付けて lprまたはlpコマンドを実行できるように修正されているSolaris 2.8パッチをSun社から入手します。

    および

  • rwlpr.shのセクションを変更し、名前にスペースがあるプリンタに引用符を付けて指定できるようにします。rwlpr.shファイルは、$ORACLE_INSTANCE/config/reports/binディレクトリにあります。

    具体的には、次のように変更します。

    #either LPR or LP Command was found 
    if [ -x $PRNCMDPATH ]
     then
       if [ `basename $PRNCMDPATH` = "lpr" ]
       then
        #if [ `/usr/bin/uname -r` = "5.8" ]
        #then
          #$PRNCMDPATH `echo $@ | tr -d "\""`
        #else
          $PRNCMDPATH "$@"
        #fi
      else
       # parse and Fix the command Line as Required by lp
       #if [ `/usr/bin/uname -r` = "5.8" ]
       #then 
         #getLpCommandLine `echo $@ | tr -d "\""`
       #else
         getLpCommandLine "$@"
       #fi
       $PRNCMDPATH
      fi  
      # exit with the command's exit code , This will tell the 
      # server Print module if the command completed successfully 
      # or not.
      exit $?
    fi
    done
    

Solaris 2.9での印刷

Solaris 2.9でDESTYPE=PRINTERおよびDESNAME=printer_nameコマンドライン・オプションを使用してレポートを印刷すると、次のエラーが発生します。

REP-0069: Internal error
REP-57054: Inprocess job terminated with error
REP-50157: Error while sending file to printer 2op837a.Exit with error code 1

この問題を解決するには、次の手順を実行します。


注意:

手順を実行する前に、rwlpr.shファイルのバックアップを作成してください。Solarisでは、rwlpr.shは印刷スクリプト・ファイルで、$ORACLE_INSTANCE/config/reports/binディレクトリにあります。このスクリプト・ファイルでは、デフォルトでlplprコマンドがサポートされます。

  1. ファイルの末尾にある次の行に移動します。

    #either LPR or LP Command was found
    
  2. 既存のif...else条件にOR演算子を追加します。

    if [ `uname -r` = "5.8" ] || [ `uname -r` = "5.9" ] # If Solaris Release 5.8 / 5.9
       ...
       else
       # parse and Fix the command Line as Required by lp
                                            ...
         if [ `uname -r` = "5.8" ] || [ `uname -r` = "5.9" ]# If Solaris Release   
         5.8/ 5.9 
    
  3. if...else if条件では、Solarisリリースのバージョンがチェックされます。バージョン番号に基づいて、プリンタ名から引用符が削除され、printコマンドに渡されます。

10.9.2 PCLの印刷の問題

PCで印刷したときには灰色のフィールドが、UNIX PCLプリンタで印刷すると白くなるのはなぜでしょうか。

PCLカラー印刷はサポートされていません。パターンが透明に設定されている場合、PCL印刷では白のペン(PCL言語)が描画に使用されます。パターンがソリッド・パターンに設定されている場合は、黒のペンが使用されます。この処理は、フォアグラウンド・カラーやバックグラウンド・カラーの設定とは無関係に行われます。PostScriptの印刷ロジックはこれとは異なります。パターンがソリッドのときはフォアグラウンド・カラーが使用され、パターンが透明のときはバックグラウンド・カラーが使用されます。

Oracle ReportsではどのPCLレベルがサポートされていますか。

現時点では、Oracle ReportsのPCLドライバはPCLレベル3の機能をサポートしています。それより後のバージョンのPCLのHPDファイルはサポートしていますが、PCLレベル3以降に導入された新機能には対応していません。

10.9.3 PostScriptの印刷の問題

PostScriptプリンタで両面印刷を行うにはどうすればよいでしょうか。

両面オプションを持つプリンタがあり、適切なPPDファイルがあるものとします。次に示す例は、京セラ社のFS-9000プリンタ用のPPDファイルを使用してテストした結果です。出力ファイルをフィルタ処理するために、UNIXのsedというツールも必要です。

両面印刷の問題とは、ジョブ・レベルでは両面印刷が有効であっても、ページ設定でリセットされてしまうというものです。これは、用紙サイズとプリンタ・トレイの情報がページごとに生成されることが理由です。この問題に対処するには、スクリプトを使用してページ・レベルの設定情報を取り除くことにより、両面設定のリセットを防ぐ必要があります。この対処方法を取る場合、ページ間のプリンタ・トレイの切替えはできなくなります。

  1. 次の3行からなるsedスクリプトを作成します。

    /^%%BeginPageSetup/,$ {
       /^%%BeginFeature/,/^%%EndFeature/d
    }
    
  2. このスクリプトを、duplexsedという名前のファイルに保存します。

  3. duplexsedを、ORACLE_HOME/binなどの適切なディレクトリにコピーします。

  4. 環境変数TK_PRINTを次のように設定します。

    TK_PRINT="sed -f $ORACLE_HOME/bin/duplexsed | lpr -l -s -P'%n' -#'%c'"
    export TK_PRINT
    

    注意:

    印刷コマンドは、UNIXの種類によって異なります。使用するプラットフォームのインストレーション・ガイドおよびマニュアル・ページを確認してください。TK_PRINTの詳細は、付録B「環境変数」を参照してください。

    TK_PRINTに格納されているコマンドが実行されるのは、DESTYPE=PRINTERの場合のみです。DESTYPE=FILEの場合は、PostScriptファイルにページ・レベルの設定情報が残ります。これを修正するには、PostScriptファイルに対してduplexsedスクリプトを実行します。


Oracle ReportsではどのレベルのPostScriptがサポートされていますか。

Oracle Reportsでは、PostScriptレベル1とレベル2がサポートされています。

印刷ジョブの途中で動的にプリンタ・トレイの設定を変更するにはどうすればよいでしょうか。

場合によっては、レポートの途中でプリンタのトレイを切り替える必要があります。たとえば、レポートの最初のページをレターヘッド付きの用紙に印刷し、それ以降のページは無地の白い用紙に印刷する場合です。キャラクタ・モード・レポートでは、このような結果を得るには.prtファイルを編集してレポートのプロパティを変更します。ビットマップ・レポートの場合は、SRW.SET_PRINTER_TRAYビルトイン・プロシージャを使用します。UNIXでは、この機能はPostScript出力に対してはサポートされていますが、PCL出力ではサポートされていません。PCLの場合、Oracle Reportsでは印刷方向と用紙トレイを変更するコマンドは無視されます。UNIXでは、PCLの印刷方向とプリンタ・トレイを動的に変更することはできませんが、PCLの印刷ダイアログ・ボックスを使用して実行時に変更することができます。

Before Report、Between Pagesまたはフォーマット・トリガーを使用することにより、レポートのフォーマットに応じてプリンタ・トレイを切り替えることができます。この方法を利用すれば、同じレポートを異なる種類の用紙に簡単に印刷できます。


注意:

SRW.SET_PRINTER_TRAYビルトイン・プロシージャを含むSRWビルトイン・パッケージの詳細は、Oracle Reportsのオンライン・ヘルプを参照してください。

BEFORE REPORTトリガーから、最初のページのプリンタ・トレイを設定します。

function BeforeReport return boolean is
begin
    srw.set_printer_tray('UPPER PAPER TRAY');
    return (TRUE);
end;

以降のページのプリンタ・トレイを動的に設定するには、レポートの各ページに印刷される項目にフォーマット・トリガーを追加します。次のコードは、偶数ページかどうかを調べて、その結果に応じてページ番号を設定します。

function B_tbpFormatTrigger return boolean is
page_num number;
begin
   srw.get_page_num(page_num);
  begin
 if mod(page_num, 2) = 0 then  
   srw.set_printer_tray('UPPER PAPER TRAY'); 
  else 
   srw.set_printer_tray('LOWER PAPER TRAY');
 end if;         
  return (true);
end;
end; 

Oracle Reportsで生成されたPostScript出力を印刷する際、外部印刷コマンドがトレイ選択オプションを無視するのはなぜでしょうか。

次の印刷コマンドを入力したとします。

lp -dprinter -oupper $report_print_file1

この場合、lpコマンドの-oupperオプションは無視されます。これは、Oracle Reportsによって生成されるPostScript出力の中にトレイ情報があるためです。PostScriptでのトレイ選択は、コマンドラインでの指定をオーバーライドします。コマンドラインのトレイ情報が優先されるようにするには、PostScriptファイルからトレイ情報を削除する必要があります。このようにするには、PostScriptファイル内の次の文字列を検索して削除します。

%%BeginFeature: *InputSlot name of printer tray   
....
%%EndFeature

プリンタ・トレイを切り替える方法の詳細は、「印刷ジョブの途中で動的にプリンタ・トレイの設定を変更するにはどうすればよいでしょうか。」を参照してください。

10.9.4 フォントに関連する印刷の問題


関連項目:


Oracle Reportsでの印刷時にどのフォントが使用されているかはどのようにして調べればよいでしょうか。

PostScriptファイルには、PPDファイルを読み取った後、フォントのリストが作成されます。PostScriptファイルで次のタグを検索すると、フォントを確認できます。

  • DocumentNeededResourceには、PPDファイル内で参照されるフォントのリストが記述されています。

  • DocumentSuppliedResourceには、PostScriptドライバによって対応するAFMファイルを見つけることができたフォントのリストが記述されています。

  • フィールド%IncludeResource:fontの前の%%Pageには、そのフィールドで使用されるフォントの名前が記述されています。

PCL出力ファイルの場合は、特定のフォントが使用されているかどうかを確認できます。この情報に応じて、Oracle Reportsまたはプリンタのフォント設定を変更できます。

レポートを実行して画面に出力するときとプレビューに出力するときでは、実際に何が異なるのでしょうか。

レポートを画面用にフォーマットした場合、つまり画面フォントを使用する場合は、レポート・エディタのペーパー・デザイン・ビューではレポートが正しく表示されます。ただし、画面フォントを使用してフォーマットされたレポートを印刷しようとすると、その結果は多少異なることがあります。これは、画面フォントからプリンタ・フォントへのマップが不完全であることが多いためです。画面ではなくプレビューを選択した場合は、レポートのフォーマットにはプリンタ・フォントが使用され、画面に表示される出力は印刷した場合とほぼ同じになります。

有効なプリンタがインストールされていない場合、フォントに関連するなんらかの問題が発生しますか。

UNIXの場合、Oracle Reports 10gよりも前のリリースでは、イメージの作成やピクセル解像度の取得のためにウィンドウ表示システムの表示面を使用するには、DISPLAY環境変数を設定する必要がありました。Oracle Reports 10gでは、この依存関係は解消されています。

また、以前のリリースでは、フォントについてUNIX上で有効なプリンタが必要でした。有効なプリンタが利用できない場合、Oracle Reports Servicesではスクリーン・フォントが使用され、その際にもDISPLAY環境変数の設定が必要でした。今回のリリースでは、Oracle Reports Servicesにデフォルトの画面プリンタ・サーフェス(ScreenPrinter)が組み込まれています。プリンタが使用できない場合に、このサーフェスにより画面またはプリンタをエミュレートしてフォントを入手します。したがって、Oracle Reports ServicesではUNIX上にプリンタが存在している必要がなくなりました。

10.9.5 印刷された出力の問題

レポートを画面で表示すると問題ないけれども、印刷するとデータが切り捨てられるのはなぜでしょうか。

フィールドの切捨ての原因は多数考えられます。

  • そのフィールドが拡張可能かどうかを調べます。

    1. Oracle Reports Builderのペーパー・デザイン・ビューまたはペーパー・レイアウト・ビューでフィールドをダブルクリックして、プロパティ・インスペクタを表示します。

    2. 「水平拡張度」プロパティを確認します。

    3. 「固定」が選択されている場合は、設定を「可変」または「拡張」に変更します。

    4. 出力先をプリンタとしてレポートを実行します。

    5. まだ切捨てが発生する場合は、フィールドに複数行が必要であることが考えられます。

    6. このフィールドのプロパティ・インスペクタに戻り、「垂直拡張度」を調べます。

    7. 「固定」が選択されている場合は、設定を「可変」または「拡張」に変更します。

    8. 出力先をプリンタとして再度レポートを実行します。

  • ページ右端のフィールドが常に切り捨てられる場合は、プリンタの印刷可能領域の問題が考えられます。PCLプリンタを使用する場合は、印刷可能領域の大きさを計算し、それに応じてマージンのサイズを変更する必要があります。

    1. Oracle Reports Builderでレポートを開きます。

    2. ペーパー・レイアウト・ビューに移動します。

    3. 上部のツールバーにある「マージン」ツールをクリックします。レポート本体の終わり、つまりマージンの始まりを示す黒い太線が表示されます。

    4. 黒い線をクリックして、左に約0.5インチドラッグします。

    5. レポートを保存し、出力先をプリンタとして再度実行します。

    6. 必要であれば、ステップ4と5を繰り返して印刷可能領域の境界のおおよその位置を調べ、レポート本体がその中に確実に収まるようにします。

  • PostScriptプリンタを使用する場合は、次の手順に従い、ペーパー・レイアウト・ビューで印刷可能領域の境界を表示します。

    1. Oracle Reports Builderでレポートを開きます。

    2. 「ファイル」→「ページ設定」を選択します。

    3. マージンが小さいことと、印刷方向が正しいことを確認します。

    4. 「OK」をクリックします。これで、ペーパー・レイアウト・ビューで、境界の読取りができるようになります。

    5. ペーパー・レイアウト・ビューに移動します。

    6. 上部のツールバーにある「マージン」ツールをクリックします。レポート本体の終わり、つまりマージンの始まりを示す黒い太線が表示されます。黒い破線も表示されますが、これが印刷可能領域の境界を示します。

    7. 黒い太線が、黒い破線の内側にあることを確認します。そうでない場合は、黒い線をクリックして印刷可能領域の内側までドラッグします。

    8. 「マージン」ツールをクリックして、マージン・モードを終了します。

    9. 必要であれば、変更後の本体の境界内に収まるようにフィールドの位置を変更します。

    10. レポートを保存し、出力先をプリンタとして実行します。

  • PCLプリンタでまだ切捨てが発生する場合は、プロポーショナル・フォントのかわりに固定幅フォントを使用してみてください。PCLプリンタでは、プロポーショナル・フォントの解釈時に問題が発生することがあり、これが原因で切捨てが発生します。Courierなどの固定幅フォントを使用し、フォント・エイリアシングも試してみてください。


    関連項目:

    フォント関連の詳細は、第9章「Oracle Reportsでのフォントの管理」を参照してください。


    注意:

    デフォルト・レイアウトは、一般的なプリンタ向けに作成されています。また印刷可能領域は、プリンタによって異なります。したがって、プリンタに合せてレポートの設定を変更しなければならないこともあります。理想的には、多数のプリンタを使用することがわかっている場合は、初めから印刷可能領域が最も小さいプリンタに合せてレポートを設計します。