Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース2(11.1.2) B70751-01 |
|
![]() 前 |
![]() 次 |
この項では、UNIXでの印刷時に発生する一般的な問題について説明します。
注意: Reports Serverでは、印刷ジョブの送信にrwlpr が使用されます。Windowsのrwlpr ロギングでは、traceModule=all またはtraceModule=server を使用してReports Serverのトレースを有効にすると、destype=printer に対する印刷診断ログ(server_name -rwlpr- jobid .log )がログ・ディレクトリ($ORACLE_INSTANCE/diagnostics/logs/ReportsServerComponent/<reports server name> )に作成されます。このログ・ファイルには、スプーラの問題などの、印刷時の問題の診断に役立つメッセージに関する情報が記録されます。 |
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
で指定されているプリンタ記述ファイルが、次の場所に存在している必要があります。
ORACLE_INSTANCE/config/FRComponent/frcommon/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ファイルを使用してください。
表9-7に、コマンドライン・オプション(DESTYPE
、DESNAME
およびDESFORMAT
)とプリンタ出力との対応を示します。
表9-7 出力方法とDESTYPE
、DESNAME
、DESFORMAT
の設定
出力方法 | DESTYPE | DESNAME | DESFORMAT |
---|---|---|---|
ファイルへの生成 |
|
|
|
印刷 |
|
|
|
|
|
||
|
|
REP-1800: フォーマット・エラーが発生しました。
REP-00177: リモート・サーバーで実行中にエラーが発生しました
(CGIを介して実行した場合)
原因:
このエラーは、UNIXサーバー上でプリンタ構成の問題が発生したことを示します。物理的に使用可能なプリンタがシステム上にない場合も、そのようなプリンタがあるものとして設定する必要があります。
処置:
uiprint.txt
に有効なエントリがあることを確認します。
uiprint.txt
に複数のプリンタ・キューのエントリがあり、デフォルトのプリンタを設定する必要がある場合は、環境変数が、uiprint.txt
で指定されたプリンタのいずれかに設定されていることを確認してください。関連する環境変数が設定されていない場合は、uiprint.txt
の最初のエントリが使用されます。プリンタ関連の環境変数の詳細は、付録B「環境変数」を参照してください。
システムで使用できるプリンタがない場合の代替手段の詳細は、第9.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 ディレクトリにあります。このスクリプト・ファイルでは、デフォルトでlp とlpr コマンドがサポートされます。 |
ファイルの末尾にある次の行に移動します。
#either LPR or LP Command was found
既存の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
if...else if
条件では、Solarisリリースのバージョンがチェックされます。バージョン番号に基づいて、プリンタ名から引用符が削除され、print
コマンドに渡されます。
PCで印刷したときには灰色のフィールドが、UNIX PCLプリンタで印刷すると白くなるのはなぜでしょうか。
PCLカラー印刷はサポートされていません。パターンが透明に設定されている場合、PCL印刷では白のペン(PCL言語)が描画に使用されます。パターンがソリッド・パターンに設定されている場合は、黒のペンが使用されます。この処理は、フォアグラウンド・カラーやバックグラウンド・カラーの設定とは無関係に行われます。PostScriptの印刷ロジックはこれとは異なります。パターンがソリッドのときはフォアグラウンド・カラーが使用され、パターンが透明のときはバックグラウンド・カラーが使用されます。
Oracle ReportsではどのPCLレベルがサポートされていますか。
現時点では、Oracle ReportsのPCLドライバはPCLレベル3の機能をサポートしています。それより後のバージョンのPCLのHPDファイルはサポートしていますが、PCLレベル3以降に導入された新機能には対応していません。
PostScriptプリンタで両面印刷を行うにはどうすればよいでしょうか。
両面オプションを持つプリンタがあり、適切なPPDファイルがあるものとします。次に示す例は、京セラ社のFS-9000プリンタ用のPPDファイルを使用してテストした結果です。出力ファイルをフィルタ処理するために、UNIXのsed
というツールも必要です。
両面印刷の問題とは、ジョブ・レベルでは両面印刷が有効であっても、ページ設定でリセットされてしまうというものです。これは、用紙サイズとプリンタ・トレイの情報がページごとに生成されることが理由です。この問題に対処するには、スクリプトを使用してページ・レベルの設定情報を取り除くことにより、両面設定のリセットを防ぐ必要があります。この対処方法を取る場合、ページ間のプリンタ・トレイの切替えはできなくなります。
次の3行からなるsed
スクリプトを作成します。
/^%%BeginPageSetup/,$ { /^%%BeginFeature/,/^%%EndFeature/d }
このスクリプトを、duplexsed
という名前のファイルに保存します。
duplexsed
を、ORACLE_HOME
/bin
などの適切なディレクトリにコピーします。
環境変数TK_PRINT
を次のように設定します。
TK_PRINT="sed -f $ORACLE_HOME/bin/duplexsed | lpr -l -s -P'%n' -#'%c'" export TK_PRINT
注意: 印刷コマンドは、UNIXの種類によって異なります。使用するプラットフォームのインストール・ガイドおよびマニュアル・ページを確認してください。TK_PRINT の詳細は、付録B「環境変数」を参照してください。
|
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
プリンタ・トレイを切り替える方法の詳細は、「印刷ジョブの途中で動的にプリンタ・トレイの設定を変更するにはどうすればよいでしょうか。」を参照してください。
関連項目:
|
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上にプリンタが存在している必要がなくなりました。
レポートを画面で表示すると問題ないけれども、印刷するとデータが切り捨てられるのはなぜでしょうか。
フィールドの切捨ての原因は多数考えられます。
そのフィールドが拡張可能かどうかを調べます。
Oracle Reports Builderのペーパー・デザイン・ビューまたはペーパー・レイアウト・ビューでフィールドをダブルクリックして、プロパティ・インスペクタを表示します。
「水平拡張度」プロパティを確認します。
「固定」が選択されている場合は、設定を「可変」または「拡張」に変更します。
出力先をプリンタとしてレポートを実行します。
まだ切捨てが発生する場合は、フィールドに複数行が必要であることが考えられます。
このフィールドのプロパティ・インスペクタに戻り、「垂直拡張度」を調べます。
「固定」が選択されている場合は、設定を「可変」または「拡張」に変更します。
出力先をプリンタとして再度レポートを実行します。
ページ右端のフィールドが常に切り捨てられる場合は、プリンタの印刷可能領域の問題が考えられます。PCLプリンタを使用する場合は、印刷可能領域の大きさを計算し、それに応じてマージンのサイズを変更する必要があります。
Oracle Reports Builderでレポートを開きます。
ペーパー・レイアウト・ビューに移動します。
上部のツールバーにある「マージン」ツールをクリックします。レポート本体の終わり、つまりマージンの始まりを示す黒い太線が表示されます。
黒い線をクリックして、左に約0.5インチドラッグします。
レポートを保存し、出力先をプリンタとして再度実行します。
必要であれば、ステップ4と5を繰り返して印刷可能領域の境界のおおよその位置を調べ、レポート本体がその中に確実に収まるようにします。
PostScriptプリンタを使用する場合は、次の手順に従い、ペーパー・レイアウト・ビューで印刷可能領域の境界を表示します。
Oracle Reports Builderでレポートを開きます。
「ファイル」→「ページ設定」を選択します。
マージンが小さいことと、印刷方向が正しいことを確認します。
「OK」をクリックします。これで、ペーパー・レイアウト・ビューで、境界の読取りができるようになります。
ペーパー・レイアウト・ビューに移動します。
上部のツールバーにある「マージン」ツールをクリックします。レポート本体の終わり、つまりマージンの始まりを示す黒い太線が表示されます。黒い破線も表示されますが、これが印刷可能領域の境界を示します。
黒い太線が、黒い破線の内側にあることを確認します。そうでない場合は、黒い線をクリックして印刷可能領域の内側までドラッグします。
「マージン」ツールをクリックして、マージン・モードを終了します。
必要であれば、変更後の本体の境界内に収まるようにフィールドの位置を変更します。
レポートを保存し、出力先をプリンタとして実行します。
PCLプリンタでまだ切捨てが発生する場合は、プロポーショナル・フォントのかわりに固定幅フォントを使用してみてください。PCLプリンタでは、プロポーショナル・フォントの解釈時に問題が発生することがあり、これが原因で切捨てが発生します。Courierなどの固定幅フォントを使用し、フォント・エイリアシングも試してみてください。
注意: デフォルト・レイアウトは、一般的なプリンタ向けに作成されています。また印刷可能領域は、プリンタによって異なります。したがって、プリンタに合せてレポートの設定を変更しなければならないこともあります。理想的には、多数のプリンタを使用することがわかっている場合は、初めから印刷可能領域が最も小さいプリンタに合せてレポートを設計します。 |